CUBRID Engine  latest
serial.c File Reference
#include "config.h"
#include <assert.h>
#include <errno.h>
#include "serial.h"
#include "memory_hash.h"
#include "storage_common.h"
#include "heap_file.h"
#include "log_append.hpp"
#include "numeric_opfunc.h"
#include "object_primitive.h"
#include "record_descriptor.hpp"
#include "server_interface.h"
#include "xserver_interface.h"
#include "slotted_page.h"
#include "dbtype.h"
#include "xasl_cache.h"
Include dependency graph for serial.c:

Go to the source code of this file.

Classes

struct  serial_entry
 
struct  serial_cache_area
 
struct  serial_cache_pool
 

Macros

#define pthread_mutex_init(a, b)
 
#define pthread_mutex_destroy(a)
 
#define pthread_mutex_lock(a)   0
 
#define pthread_mutex_unlock(a)
 
#define NCACHE_OBJECTS   100
 
#define NOT_FOUND   -1
 

Typedefs

typedef struct serial_entry SERIAL_CACHE_ENTRY
 
typedef struct serial_cache_area SERIAL_CACHE_AREA
 
typedef struct serial_cache_pool SERIAL_CACHE_POOL
 

Enumerations

enum  SR_ATTRIBUTES {
  SERIAL_ATTR_NAME_INDEX, SERIAL_ATTR_OWNER_INDEX, SERIAL_ATTR_CURRENT_VAL_INDEX, SERIAL_ATTR_INCREMENT_VAL_INDEX,
  SERIAL_ATTR_MAX_VAL_INDEX, SERIAL_ATTR_MIN_VAL_INDEX, SERIAL_ATTR_CYCLIC_INDEX, SERIAL_ATTR_STARTED_INDEX,
  SERIAL_ATTR_CLASS_NAME_INDEX, SERIAL_ATTR_ATT_NAME_INDEX, SERIAL_ATTR_CACHED_NUM_INDEX, SERIAL_ATTR_MAX_INDEX
}
 

Functions

static int xserial_get_current_value_internal (THREAD_ENTRY *thread_p, DB_VALUE *result_num, const OID *serial_oidp)
 
static int xserial_get_next_value_internal (THREAD_ENTRY *thread_p, DB_VALUE *result_num, const OID *serial_oidp, int num_alloc)
 
static int serial_get_next_cached_value (THREAD_ENTRY *thread_p, SERIAL_CACHE_ENTRY *entry, int num_alloc)
 
static int serial_update_cur_val_of_serial (THREAD_ENTRY *thread_p, SERIAL_CACHE_ENTRY *entry)
 
static int serial_update_serial_object (THREAD_ENTRY *thread_p, PAGE_PTR pgptr, RECDES *recdesc, HEAP_CACHE_ATTRINFO *attr_info, const OID *serial_class_oidp, const OID *serial_oidp, DB_VALUE *key_val)
 
static int serial_get_nth_value (DB_VALUE *inc_val, DB_VALUE *cur_val, DB_VALUE *min_val, DB_VALUE *max_val, DB_VALUE *cyclic, int nth, DB_VALUE *result_val)
 
static void serial_set_cache_entry (SERIAL_CACHE_ENTRY *entry, DB_VALUE *inc_val, DB_VALUE *cur_val, DB_VALUE *min_val, DB_VALUE *max_val, DB_VALUE *started, DB_VALUE *cyclic, DB_VALUE *last_val, int cached_num)
 
static void serial_clear_value (SERIAL_CACHE_ENTRY *entry)
 
static SERIAL_CACHE_ENTRYserial_alloc_cache_entry (void)
 
static SERIAL_CACHE_AREAserial_alloc_cache_area (int num)
 
static int serial_load_attribute_info_of_db_serial (THREAD_ENTRY *thread_p)
 
static int serial_get_attrid (THREAD_ENTRY *thread_p, int attr_index, ATTR_ID &attrid)
 
int xserial_get_current_value (THREAD_ENTRY *thread_p, DB_VALUE *result_num, const OID *oid_p, int cached_num)
 
int xserial_get_next_value (THREAD_ENTRY *thread_p, DB_VALUE *result_num, const OID *oid_p, int cached_num, int num_alloc, int is_auto_increment, bool force_set_last_insert_id)
 
int serial_initialize_cache_pool (THREAD_ENTRY *thread_p)
 
void serial_finalize_cache_pool (void)
 
void xserial_decache (THREAD_ENTRY *thread_p, OID *oidp)
 

Variables

static int rv
 
static int rc
 
SERIAL_CACHE_POOL serial_Cache_pool
 
ATTR_ID serial_Attrs_id [SERIAL_ATTR_MAX_INDEX]
 
int serial_Num_attrs = -1
 

Macro Definition Documentation

#define NCACHE_OBJECTS   100

Definition at line 71 of file serial.c.

Referenced by serial_alloc_cache_entry(), and serial_initialize_cache_pool().

#define pthread_mutex_destroy (   a)

Definition at line 46 of file serial.c.

Referenced by serial_finalize_cache_pool().

#define pthread_mutex_init (   a,
 
)

Definition at line 45 of file serial.c.

Referenced by serial_initialize_cache_pool().

#define pthread_mutex_lock (   a)    0

Definition at line 47 of file serial.c.

Referenced by xserial_decache(), xserial_get_current_value(), and xserial_get_next_value().

#define pthread_mutex_unlock (   a)

Definition at line 48 of file serial.c.

Referenced by xserial_decache(), xserial_get_current_value(), and xserial_get_next_value().

Typedef Documentation

Definition at line 96 of file serial.c.

Definition at line 75 of file serial.c.

Definition at line 103 of file serial.c.

Enumeration Type Documentation

Enumerator
SERIAL_ATTR_NAME_INDEX 
SERIAL_ATTR_OWNER_INDEX 
SERIAL_ATTR_CURRENT_VAL_INDEX 
SERIAL_ATTR_INCREMENT_VAL_INDEX 
SERIAL_ATTR_MAX_VAL_INDEX 
SERIAL_ATTR_MIN_VAL_INDEX 
SERIAL_ATTR_CYCLIC_INDEX 
SERIAL_ATTR_STARTED_INDEX 
SERIAL_ATTR_CLASS_NAME_INDEX 
SERIAL_ATTR_ATT_NAME_INDEX 
SERIAL_ATTR_CACHED_NUM_INDEX 
SERIAL_ATTR_MAX_INDEX 

Definition at line 54 of file serial.c.

Function Documentation

static SERIAL_CACHE_ENTRY * serial_alloc_cache_entry ( void  )
static
static void serial_clear_value ( SERIAL_CACHE_ENTRY entry)
static
static int serial_get_attrid ( THREAD_ENTRY thread_p,
int  attr_index,
ATTR_ID attrid 
)
static
static void serial_set_cache_entry ( SERIAL_CACHE_ENTRY entry,
DB_VALUE inc_val,
DB_VALUE cur_val,
DB_VALUE min_val,
DB_VALUE max_val,
DB_VALUE started,
DB_VALUE cyclic,
DB_VALUE last_val,
int  cached_num 
)
static
int xserial_get_current_value ( THREAD_ENTRY thread_p,
DB_VALUE result_num,
const OID oid_p,
int  cached_num 
)
static int xserial_get_next_value_internal ( THREAD_ENTRY thread_p,
DB_VALUE result_num,
const OID serial_oidp,
int  num_alloc 
)
static

Definition at line 614 of file serial.c.

References ARG_FILE_LINE, assert, serial_entry::cached_num, CEIL_PTVDIV, COPY_OID, serial_entry::cur_val, serial_entry::cyclic, db_get_int(), DB_IS_NULL, db_make_int(), db_make_null(), er_errid(), ER_ERROR_SEVERITY, ER_FAILED, ER_HEAP_UNKNOWN_OBJECT, ER_PB_BAD_PAGEID, ER_QPROC_CANNOT_FETCH_SERIAL, er_set(), serial_cache_pool::free_list, heap_attrinfo_access(), heap_attrinfo_end(), heap_attrinfo_read_dbvalues(), heap_attrinfo_set(), heap_attrinfo_start(), heap_get_visible_version(), heap_scancache_end(), heap_scancache_quick_start_modify_with_class_oid(), serial_cache_pool::ht, serial_entry::inc_val, serial_entry::max_val, mht_get(), mht_put(), serial_entry::min_val, serial_entry::next, NO_ERROR, NOT_FOUND, NULL, NULL_CHN, serial_entry::oid, oid_get_serial_oid(), oid_Serial_class_oid, OID_SET_NULL, heap_scancache::page_watcher, db_identifier::pageid, PEEK, pgbuf_watcher::pgptr, pr_clear_value(), pr_clone_value(), RECDES_INITIALIZER, S_SUCCESS, serial_alloc_cache_entry(), SERIAL_ATTR_CACHED_NUM_INDEX, SERIAL_ATTR_CURRENT_VAL_INDEX, SERIAL_ATTR_CYCLIC_INDEX, SERIAL_ATTR_INCREMENT_VAL_INDEX, SERIAL_ATTR_MAX_VAL_INDEX, SERIAL_ATTR_MIN_VAL_INDEX, SERIAL_ATTR_NAME_INDEX, SERIAL_ATTR_STARTED_INDEX, serial_get_attrid(), serial_get_nth_value(), serial_set_cache_entry(), serial_update_serial_object(), db_identifier::slotid, serial_entry::started, and db_identifier::volid.

Referenced by xserial_get_next_value().

Here is the caller graph for this function:

Variable Documentation

int rc
static

Definition at line 50 of file serial.c.

Referenced by bf2df_str_cmpdisk(), btree_delete_overflow_key(), btree_glean_root_header_info(), btree_key_insert_new_key(), btree_keyval_search(), btree_leaf_get_vpid_for_overflow_oids(), btree_pack_root_header(), btree_read_fixed_portion_of_non_leaf_record_from_orbuf(), btree_read_record_without_decompression(), catcls_get_or_value_from_buffer(), compare_val_op(), create_child_process(), crypt_sha_functions(), css_fd_error(), css_internal_request_handler(), css_is_shutdown_timeout_expired(), css_make_queue_entry(), css_master_loop(), css_net_recv(), css_net_send8(), css_open_new_socket_from_master(), css_platform_independent_poll(), css_process_info_request(), css_process_kill_slave(), css_queue_receive_data_buffer(), css_read_header(), css_read_one_request(), css_receive_data(), css_receive_data_from_client_with_timeout(), css_receive_error(), css_receive_request(), css_recv_and_queue_packet(), css_return_queued_error(), css_send_abort_to_client(), css_send_data(), css_send_data_to_client(), css_send_error_to_client(), css_send_io_vector(), css_send_io_vector_with_socket(), css_send_reply_and_2_data_to_client(), css_send_reply_and_3_data_to_client(), css_send_reply_and_data_to_client(), css_send_request_with_data_buffer(), css_set_networking_error(), css_shutdown_socket(), css_test_for_client_errors(), css_test_for_server_errors(), cursor_copy_vobj_to_dbvalue(), cursor_fixup_set_vobjs(), cursor_fixup_vobjs(), db_get_system_parameters(), db_json_deserialize_doc_internal(), db_json_unpack_array_to_value(), db_json_unpack_bigint_to_value(), db_json_unpack_bool_to_value(), db_json_unpack_double_to_value(), db_json_unpack_int_to_value(), db_json_unpack_object_to_value(), db_json_unpack_string_to_value(), db_reset_system_parameters_from_assignments(), db_set_system_parameters(), db_validate_query_spec(), desc_disk_to_obj(), disk_to_attribute(), disk_to_class(), disk_to_domain2(), disk_to_metharg(), disk_to_method(), disk_to_methsig(), disk_to_repattribute(), disk_to_representation(), disk_to_resolution(), disk_to_root(), dl_is_valid_image_file(), eval_item_card_sort_list(), eval_sub_multi_set_to_sort_list(), eval_sub_sort_list_to_multi_set(), eval_sub_sort_list_to_sort_list(), fetch_val_list(), fileio_request_user_response(), get_current(), get_desc_current(), get_desc_old(), get_object_value(), get_old(), hash_delete(), hash_insert(), hash_lookup(), hb_process_master_request_info(), heap_assign_address(), heap_check_all_pages(), heap_delete_bigone(), heap_delete_logical(), heap_delete_relocation(), heap_fix_forward_page(), heap_fix_header_page(), heap_get_record_location(), heap_insert_logical(), heap_insert_physical(), heap_stats_add_bestspace(), heap_stats_del_bestspace_by_hfid(), heap_stats_del_bestspace_by_vpid(), heap_stats_find_page_in_bestspace(), heap_update_logical(), heap_update_relocation(), la_apply_insert_log(), la_apply_update_log(), la_disk_to_obj(), la_get_current(), lf_hash_delete_internal(), lf_hash_find(), lf_hash_insert_internal(), loaddb_destroy(), loaddb_init(), loaddb_install_class(), loaddb_load_batch(), loaddb_update_stats(), locator_demote_class_lock(), locator_mvcc_reev_cond_assigns(), method_initialize_vacomm_buffer(), mq_is_updatable_attribute(), mr_data_cmpdisk_json(), mr_data_cmpdisk_numeric(), mr_data_cmpdisk_string(), mr_data_cmpdisk_varnchar(), mr_data_readmem_bigint(), mr_data_readmem_double(), mr_data_readmem_elo(), mr_data_readmem_enumeration(), mr_data_readmem_float(), mr_data_readmem_int(), mr_data_readmem_json(), mr_data_readmem_resultset(), mr_data_readmem_short(), mr_data_readmem_string(), mr_data_readmem_varbit(), mr_data_readval_bigint(), mr_data_readval_date(), mr_data_readval_datetime(), mr_data_readval_datetimeltz(), mr_data_readval_datetimetz(), mr_data_readval_double(), mr_data_readval_enumeration(), mr_data_readval_float(), mr_data_readval_int(), mr_data_readval_json(), mr_data_readval_money(), mr_data_readval_numeric(), mr_data_readval_object(), mr_data_readval_oid(), mr_data_readval_resultset(), mr_data_readval_set(), mr_data_readval_short(), mr_data_readval_time(), mr_data_readval_timestampltz(), mr_data_readval_timestamptz(), mr_data_readval_utime(), mr_data_writemem_json(), mr_data_writeval_json(), mr_data_writeval_numeric(), mr_data_writeval_object(), mr_data_writeval_set(), mr_index_lengthmem_string(), mr_index_lengthmem_varbit(), mr_index_readval_bigint(), mr_index_readval_date(), mr_index_readval_datetime(), mr_index_readval_datetimeltz(), mr_index_readval_datetimetz(), mr_index_readval_double(), mr_index_readval_enumeration(), mr_index_readval_float(), mr_index_readval_int(), mr_index_readval_midxkey(), mr_index_readval_money(), mr_index_readval_oid(), mr_index_readval_short(), mr_index_readval_time(), mr_index_readval_timestampltz(), mr_index_readval_timestamptz(), mr_index_readval_utime(), mr_index_writeval_datetime(), mr_index_writeval_datetimetz(), mr_index_writeval_midxkey(), mr_index_writeval_money(), mr_index_writeval_oid(), mr_index_writeval_timestamptz(), mr_lengthval_string_internal(), mr_lengthval_varnchar_internal(), mr_readval_bit_internal(), mr_readval_char_internal(), mr_readval_nchar_internal(), mr_readval_string_internal(), mr_readval_varbit_internal(), mr_readval_varnchar_internal(), mr_setmem_elo(), mr_writeval_bit_internal(), mr_writeval_char_internal(), mr_writeval_nchar_internal(), mr_writeval_string_internal(), mr_writeval_varbit_internal(), mr_writeval_varnchar_internal(), msgcat_final(), net_client_check_log_header(), net_client_request(), net_client_request2(), net_client_request2_no_malloc(), net_client_request_2recv_copyarea(), net_client_request_3_data(), net_client_request_3recv_copyarea(), net_client_request_internal(), net_client_request_no_reply(), net_client_request_recv_copyarea(), net_client_request_recv_stream(), net_client_request_with_callback(), net_client_request_with_logwr_context(), or_disk_set_size(), or_get_align32(), or_get_align64(), or_get_attr_string(), or_get_json_schema(), or_get_json_validator(), or_get_offset_internal(), or_get_set(), or_get_set_header(), or_get_value(), or_get_varchar_compression_lengths(), or_mvcc_get_header(), or_pack_domain(), or_pack_mem_value(), or_put_align32(), or_put_domain(), or_put_enumeration(), or_put_json_schema(), or_put_set_header(), or_put_string_aligned(), or_put_string_aligned_with_length(), or_put_value(), or_put_varchar_internal(), or_skip_set_header(), or_skip_varbit(), or_skip_varbit_remainder(), or_skip_varchar(), or_skip_varchar_remainder(), or_unpack_mem_value(), peekmem_elo(), pgbuf_set_lsa(), pr_do_db_value_string_compression(), pr_get_compressed_data_from_buffer(), pr_get_compression_length(), pr_get_size_and_write_string_to_buffer(), pr_write_compressed_string_to_buffer(), pr_write_uncompressed_string_to_buffer(), pt_check_set_count_set(), pt_to_index_info(), put_varinfo(), qdata_build_hscan_key(), qdata_copy_db_value_to_tuple_value(), qdata_load_agg_hentry_from_tuple(), qdata_save_agg_htable_to_list(), qexec_analytic_finalize_group(), qexec_analytic_sort_key_header_load(), qexec_analytic_update_group_result(), qexec_build_agg_hkey(), qexec_execute_insert(), qexec_execute_update(), qexec_hash_gby_agg_tuple(), qexec_hash_gby_put_next(), qfile_clear_list_cache(), qfile_compare_tuple_values(), qfile_dump_list_cache_internal(), qmgr_free_list_temp_file(), qmgr_free_query_temp_file(), qmgr_free_query_temp_file_helper(), qmgr_free_temp_file_list(), qo_compare_dbvalue_with_optype(), readval_elo_with_type(), recv_fd(), scan_key_compare(), setobj_compare(), setobj_compare_order(), setobj_difference(), setobj_intersection(), setobj_union(), sl_write_statement_sql(), sm_att_auto_increment(), sm_att_constrained(), sm_att_unique_constrained(), sm_class_has_unique_constraint(), sprm_server_obtain_parameters(), sysprm_change_server_parameters(), sysprm_obtain_server_parameters(), tf_class_to_disk(), tf_disk_to_class(), tf_disk_to_mem(), unpack_domain(), unpack_domain_2(), vid_compare_non_updatable_objects(), vid_decode_object(), vid_flush_all_instances(), vid_flush_instance(), xcallback_console_print(), xcol_copy(), xio_send_user_prompt_to_client(), xlog_send_log_pages_to_client(), xqmgr_end_query(), xs_receive_data_from_client_with_timeout(), xserial_decache(), xserial_get_current_value(), and xserial_get_next_value().

int rv
static

Definition at line 49 of file serial.c.

SERIAL_CACHE_POOL serial_Cache_pool
Initial value:
= { NULL, NULL, NULL,
{NULL_PAGEID, NULL_SLOTID, NULL_VOLID}, PTHREAD_MUTEX_INITIALIZER
}
#define NULL_SLOTID
#define NULL_PAGEID
#define NULL
Definition: freelistheap.h:34
#define NULL_VOLID

Definition at line 116 of file serial.c.

int serial_Num_attrs = -1