29 #if !defined (SERVER_MODE) && !defined (SA_MODE) 30 #error Belongs to server module 52 #define SINGLE_ROW_INSERT 1 53 #define SINGLE_ROW_DELETE 2 54 #define SINGLE_ROW_UPDATE 3 55 #define SINGLE_ROW_MODIFY 4 56 #define MULTI_ROW_INSERT 5 57 #define MULTI_ROW_DELETE 6 58 #define MULTI_ROW_UPDATE 7 60 #define BTREE_IS_MULTI_ROW_OP(op) \ 61 (op == MULTI_ROW_INSERT || op == MULTI_ROW_UPDATE || op == MULTI_ROW_DELETE) 63 #define BTREE_NEED_UNIQUE_CHECK(thread_p, op) \ 64 (logtb_is_current_active (thread_p) \ 65 && (op == SINGLE_ROW_INSERT || op == MULTI_ROW_INSERT || op == SINGLE_ROW_UPDATE)) 68 #define BTREE_CONTINUE -1 69 #define BTREE_GETOID_AGAIN -2 70 #define BTREE_GETOID_AGAIN_WITH_CHECK -3 71 #define BTREE_SEARCH_AGAIN_WITH_CHECK -4 72 #define BTREE_GOTO_END_OF_SCAN -5 73 #define BTREE_GOTO_START_LOCKING -6 74 #define BTREE_GOTO_LOCKING_DONE -7 75 #define BTREE_RESTART_SCAN -8 88 #define BTREE_IS_PRIMARY_KEY(unique_pk) ((unique_pk) & BTREE_CONSTRAINT_PRIMARY_KEY) 89 #define BTREE_IS_UNIQUE(unique_pk) ((unique_pk) & BTREE_CONSTRAINT_UNIQUE) 90 #define BTREE_IS_PART_KEY_DESC(btid_int) ((btid_int)->part_key_desc != 0) 93 #define BTREE_NORMAL_KEY 0 94 #define BTREE_OVERFLOW_KEY 1 96 #define BTREE_SET_UNIQUE_VIOLATION_ERROR(THREAD,KEY,OID,C_OID,BTID,BTNM) \ 97 btree_set_error(THREAD, KEY, OID, C_OID, BTID, BTNM, \ 98 ER_ERROR_SEVERITY, ER_BTREE_UNIQUE_FAILED, __FILE__, __LINE__) 251 #define COMMON_PREFIX_UNKNOWN (-1) 253 #define BTREE_INIT_SCAN(bts) \ 255 (bts)->P_vpid.pageid = NULL_PAGEID; \ 256 (bts)->C_vpid.pageid = NULL_PAGEID; \ 257 (bts)->O_vpid.pageid = NULL_PAGEID; \ 258 (bts)->P_page = NULL; \ 259 (bts)->C_page = NULL; \ 260 (bts)->O_page = NULL; \ 261 (bts)->slot_id = NULL_SLOTID; \ 262 (bts)->oid_pos = 0; \ 263 (bts)->restart_scan = 0; \ 264 (bts)->common_prefix = COMMON_PREFIX_UNKNOWN; \ 265 db_make_null (&(bts)->cur_key); \ 266 (bts)->clear_cur_key = false; \ 267 (bts)->is_btid_int_valid = false; \ 268 (bts)->read_uncommitted = false; \ 269 (bts)->key_filter = NULL; \ 270 (bts)->use_desc_index = false; \ 271 (bts)->read_keys = 0; \ 272 (bts)->qualified_keys = 0; \ 273 (bts)->key_range_max_value_equal = false; \ 274 LSA_SET_NULL (&(bts)->cur_leaf_lsa); \ 275 (bts)->lock_mode = NULL_LOCK; \ 276 (bts)->key_record.data = NULL; \ 278 (bts)->need_to_check_null = false; \ 279 VPID_SET_NULL (&(bts)->leaf_rec_info.ovfl); \ 280 (bts)->node_type = BTREE_LEAF_NODE; \ 281 (bts)->key_status = BTS_KEY_IS_NOT_VERIFIED; \ 282 (bts)->end_scan = false; \ 283 (bts)->end_one_iteration = false; \ 284 (bts)->is_interrupted = false; \ 285 (bts)->is_key_partially_processed = false; \ 286 (bts)->n_oids_read = 0; \ 287 (bts)->n_oids_read_last_iteration = 0; \ 288 (bts)->oid_ptr = NULL; \ 289 (bts)->key_limit_lower = NULL; \ 290 (bts)->key_limit_upper = NULL; \ 291 (bts)->index_scan_idp = NULL; \ 292 (bts)->is_scan_started = false; \ 293 (bts)->force_restart_from_root = false; \ 294 OID_SET_NULL (&(bts)->match_class_oid); \ 295 (bts)->time_track.is_perf_tracking = false; \ 296 (bts)->bts_other = NULL; \ 299 #define BTREE_RESET_SCAN(bts) \ 301 (bts)->P_vpid.pageid = NULL_PAGEID; \ 302 (bts)->C_vpid.pageid = NULL_PAGEID; \ 303 (bts)->O_vpid.pageid = NULL_PAGEID; \ 304 (bts)->P_page = NULL; \ 305 (bts)->C_page = NULL; \ 306 (bts)->O_page = NULL; \ 307 (bts)->slot_id = -1; \ 308 (bts)->oid_pos = 0; \ 309 (bts)->restart_scan = 0; \ 310 (bts)->common_prefix = COMMON_PREFIX_UNKNOWN; \ 311 pr_clear_value (&(bts)->cur_key); \ 312 db_make_null (&(bts)->cur_key); \ 313 (bts)->clear_cur_key = false; \ 314 (bts)->is_scan_started = false; \ 317 #define BTREE_END_OF_SCAN(bts) \ 318 ((bts)->C_vpid.pageid == NULL_PAGEID \ 319 && (bts)->O_vpid.pageid == NULL_PAGEID \ 320 && !(bts)->is_scan_started) 322 #define BTREE_START_OF_SCAN(bts) BTREE_END_OF_SCAN(bts) 324 #define BTS_IS_DESCENDING_SCAN(bts) \ 325 ((bts)->index_scan_idp->indx_info->use_desc_index) 327 #define BTS_SET_INDEX_SCANID(bts, index_scan_idp) \ 328 ((bts)->index_scan_idp = index_scan_idp) 329 #define BTS_SET_KEY_LIMIT(bts, lower, upper) \ 332 (bts)->key_limit_lower = lower; \ 333 (bts)->key_limit_upper = upper; \ 401 #define BTREE_NODE_SCAN_INIT(bns) \ 404 VPID_SET_NULL (&(bns)->crt_vpid); \ 405 (bns)->crt_page = NULL; \ 406 (bns)->queue_head = (bns)->queue_tail = NULL; \ 407 (bns)->first_call = true; \ 412 #define BTREE_NODE_SCAN_ADD_PAGE_TO_QUEUE(bns, node) \ 413 if ((bns)->queue_tail == NULL) \ 415 (bns)->queue_head = (bns)->queue_tail = node; \ 419 (bns)->queue_tail->next = node; \ 420 (bns)->queue_tail = node; \ 424 #define BTREE_NODE_SCAN_POP_PAGE_FROM_QUEUE(bns, node) \ 425 if ((bns)->queue_head == NULL) \ 431 if ((bns)->queue_head == (bns)->queue_tail) \ 434 node = (bns)->queue_head; \ 435 (bns)->queue_tail = NULL; \ 436 (bns)->queue_head = NULL; \ 440 node = (bns)->queue_head; \ 441 (bns)->queue_head = node->next; \ 447 #define BTREE_NODE_SCAN_IS_QUEUE_EMPTY(bns) ((bns)->queue_head == NULL) 449 #define DBVAL_BUFSIZE 4096 451 #define BTREE_INIT_MVCC_HEADER(p_mvcc_rec_header) \ 454 MVCC_SET_FLAG (p_mvcc_rec_header, 0); \ 455 MVCC_SET_INSID (p_mvcc_rec_header, MVCCID_NULL); \ 456 MVCC_SET_DELID (p_mvcc_rec_header, MVCCID_NULL); \ 457 MVCC_SET_CHN (p_mvcc_rec_header, 0); \ 458 MVCC_SET_REPID (p_mvcc_rec_header, 0); \ 459 LSA_SET_NULL (p_mvcc_rec_header.prev_version_lsa); \ 520 #define BTREE_MVCC_INFO_INITIALIZER \ 521 { 0, MVCCID_ALL_VISIBLE, MVCCID_NULL } 533 #define BTREE_OBJECT_INFO_INITIALIZER \ 534 { OID_INITIALIZER, OID_INITIALIZER, BTREE_MVCC_INFO_INITIALIZER } 554 void set_value (
DB_VALUE &dest_value,
DB_VALUE &src_value,
bool &clear_src_value);
559 DB_VALUE &subtree_value,
bool &clear_subtree_value,
const INT16 subtree_slot);
562 RECDES &left_subtree_rec,
DB_VALUE &subtree_value,
bool &clear_subtree_value);
565 DB_VALUE &subtree_value,
bool &clear_subtree_value,
const INT16 subtree_slot,
603 , m_key_type (key_type)
604 , m_ignored_nulls_cnt (0)
605 , m_use_page_boundary_check (false)
606 , m_use_sorted_bulk_insert (false)
626 size_t add_key (
const DB_VALUE *key,
const OID &oid);
628 void reset_boundary_keys ();
630 void prepare_list (
void);
668 #if defined(ENABLE_UNUSED_FUNCTION) 669 extern int btree_estimate_total_numpages (
THREAD_ENTRY * thread_p,
int dis_key_cnt,
int avg_key_len,
int tot_val_cnt,
670 int *blt_pgcnt_est,
int *blt_wrs_pgcnt_est);
684 bool only_active_tran);
697 INT16 ins_slotid,
char *data,
int *length);
698 #if defined(ENABLE_UNUSED_FUNCTION) 720 char *preallocated_buffer,
char **data,
int *capacity,
int *length);
724 char *preallocated_buffer,
char **data,
int *capacity,
749 const BTID *
btid,
const char *bt_name,
int severity,
int err_id,
const char *filename,
769 char **rv_undo_data_ptr,
char **rv_redo_data_ptr);
798 int n_attrs,
OID * pk_cls_oid,
BTID * pk_btid,
const char *fk_name);
816 VPID * new_overflow_vpid,
char **rv_undo_data_ptr,
817 char **rv_redo_data_ptr);
827 INT16 * slot_id,
PAGE_PTR * leaf_page_out,
bool * found_p);
829 int offset_after_key,
LEAF_REC * leaf_info,
int *max_visible_oids,
836 void *rec_header,
BTREE_NODE_TYPE node_type,
bool * clear_key,
int *offset,
int copy,
839 int do_coercion,
int total_order,
int *start_colp);
int btree_rv_nop(THREAD_ENTRY *thread_p, LOG_RCV *recv)
SCAN_CODE btree_index_next_scan(THREAD_ENTRY *thread_p, int cursor, DB_VALUE **out_values, int out_cnt, void *ctx)
int btree_locate_key(THREAD_ENTRY *thread_p, BTID_INT *btid_int, DB_VALUE *key, VPID *pg_vpid, INT16 *slot_id, PAGE_PTR *leaf_page_out, bool *found_p)
DISK_ISVALID btree_check_by_class_oid(THREAD_ENTRY *thread_p, OID *cls_oid, BTID *idx_btid)
int btree_read_record(THREAD_ENTRY *thread_p, BTID_INT *btid, PAGE_PTR pgptr, RECDES *Rec, DB_VALUE *key, void *rec_header, BTREE_NODE_TYPE node_type, bool *clear_key, int *offset, int copy, BTREE_SCAN *bts)
int btree_multicol_key_has_null(DB_VALUE *key)
PERF_UTIME_TRACKER time_track
int btree_get_unique_statistics(THREAD_ENTRY *thread_p, BTID *btid, int *oid_cnt, int *null_cnt, int *key_cnt)
int btree_rv_redo_global_unique_stats_commit(THREAD_ENTRY *thread_p, LOG_RCV *recv)
bool is_key_partially_processed
FILTER_INFO key_filter_storage
int btree_check_valid_record(THREAD_ENTRY *thread_p, BTID_INT *btid, RECDES *recp, BTREE_NODE_TYPE node_type, DB_VALUE *key)
BTREE_ISCAN_OID_LIST * next_list
int btree_keyval_search(THREAD_ENTRY *thread_p, BTID *btid, SCAN_OPERATION_TYPE scan_op_type, BTREE_SCAN *BTS, key_val_range *key_val_range, OID *class_oid, FILTER_INFO *filter, INDX_SCAN_ID *isidp, bool is_all_class_srch)
DB_VALUE_COMPARE_RESULT btree_compare_key(DB_VALUE *key1, DB_VALUE *key2, TP_DOMAIN *key_domain, int do_coercion, int total_order, int *start_colp)
void btree_rv_read_keybuf_two_objects(THREAD_ENTRY *thread_p, char *datap, int data_size, BTID_INT *btid_int, BTREE_OBJECT_INFO *first_version, BTREE_OBJECT_INFO *second_version, OR_BUF *key_buf)
int btree_online_index_check_unique_constraint(THREAD_ENTRY *thread_p, BTID *btid, const char *index_name, OID *class_oid)
int btree_keyoid_checkscan_start(THREAD_ENTRY *thread_p, BTID *btid, BTREE_CHECKSCAN *btscan)
btree_insert_list(const TP_DOMAIN *&key_type)
void btree_rv_noderec_dump(FILE *fp, int length, void *data)
void btree_dump_key(FILE *fp, const DB_VALUE *key)
DISK_ISVALID btree_check_by_btid(THREAD_ENTRY *thread_p, BTID *btid)
void btree_clear_mvcc_flags_from_oid(OID *oid)
char * btree_pack_mvccinfo(char *ptr, BTREE_MVCC_INFO *mvcc_info)
int btree_get_btid_from_file(THREAD_ENTRY *thread_p, const VFID *vfid, BTID *btid_out)
int btree_rv_keyval_undo_delete(THREAD_ENTRY *thread_p, LOG_RCV *recv)
BTREE_MVCC_INFO mvcc_info
TP_DOMAIN * nonleaf_key_type
int btree_rv_keyval_undo_insert_unique(THREAD_ENTRY *thread_p, LOG_RCV *recv)
void btree_mvcc_info_to_heap_mvcc_header(BTREE_MVCC_INFO *mvcc_info, MVCC_REC_HEADER *mvcc_header)
int btree_rv_keyval_undo_insert_mvcc_delid(THREAD_ENTRY *thread_p, LOG_RCV *recv)
int btree_index_end_scan(THREAD_ENTRY *thread_p, void **ctx)
const TP_DOMAIN * m_key_type
void btree_scan_clear_key(BTREE_SCAN *btree_scan)
int btree_leaf_get_first_object(BTID_INT *btid, RECDES *recp, OID *oidp, OID *class_oid, BTREE_MVCC_INFO *mvcc_info)
page_key_boundary m_boundaries
int btree_rv_undo_record_modify(THREAD_ENTRY *thread_p, LOG_RCV *rcv)
bool btree_is_btid_online_index(THREAD_ENTRY *thread_p, OID *class_oid, BTID *btid)
int btree_coerce_key(DB_VALUE *src_keyp, int keysize, TP_DOMAIN *btree_domainp, int key_minmax)
void btree_rv_read_keybuf_nocopy(THREAD_ENTRY *thread_p, char *datap, int data_size, BTID_INT *btid, OID *cls_oid, OID *oid, BTREE_MVCC_INFO *mvcc_info, OR_BUF *key_buf)
int btree_vacuum_object(THREAD_ENTRY *thread_p, BTID *btid, OR_BUF *buffered_key, OID *oid, OID *class_oid, MVCCID delete_mvccid)
int btree_rv_nodehdr_redo_insert(THREAD_ENTRY *thread_p, LOG_RCV *recv)
SCAN_CODE btree_get_next_node_info(THREAD_ENTRY *thread_p, BTID *btid, BTREE_NODE_SCAN *btns, DB_VALUE **node_info)
int btree_rv_noderec_undoredo_update(THREAD_ENTRY *thread_p, LOG_RCV *recv)
void btree_rv_keyval_dump(FILE *fp, int length, void *data)
PERF_PAGE_TYPE btree_get_perf_btree_page_type(THREAD_ENTRY *thread_p, PAGE_PTR page_ptr)
void btree_leaf_change_first_object(THREAD_ENTRY *thread_p, RECDES *recp, BTID_INT *btid, OID *oidp, OID *class_oidp, BTREE_MVCC_INFO *mvcc_info, int *key_offset, char **rv_undo_data_ptr, char **rv_redo_data_ptr)
int xbtree_get_key_type(THREAD_ENTRY *thread_p, BTID btid, TP_DOMAIN **key_type)
int btree_check_foreign_key(THREAD_ENTRY *thread_p, OID *cls_oid, HFID *hfid, OID *oid, DB_VALUE *keyval, int n_attrs, OID *pk_cls_oid, BTID *pk_btid, const char *fk_name)
int btree_get_class_oid_of_unique_btid(THREAD_ENTRY *thread_p, BTID *btid, OID *class_oid)
enum bts_key_status BTS_KEY_STATUS
int btree_physical_delete(THREAD_ENTRY *thread_p, BTID *btid, DB_VALUE *key, OID *oid, OID *class_oid, int *unique, int op_type, btree_unique_stats *unique_stat_info)
DISK_ISVALID btree_repair_prev_link(THREAD_ENTRY *thread_p, OID *oid, BTID *btid, bool repair)
int btree_rv_pagerec_delete(THREAD_ENTRY *thread_p, LOG_RCV *recv)
void btree_rv_ovfid_dump(FILE *fp, int length, void *data)
void btree_rv_roothdr_dump(FILE *fp, int length, void *data)
DISK_ISVALID btree_keyoid_checkscan_check(THREAD_ENTRY *thread_p, BTREE_CHECKSCAN *btscan, OID *cls_oid, DB_VALUE *key, OID *oid)
BTREE_ISCAN_OID_LIST oid_list
int btree_get_num_visible_from_leaf_and_ovf(THREAD_ENTRY *thread_p, BTID_INT *btid_int, RECDES *leaf_record, int offset_after_key, LEAF_REC *leaf_info, int *max_visible_oids, MVCC_SNAPSHOT *mvcc_snapshot, int *num_visible)
int btree_rv_util_save_page_records(THREAD_ENTRY *thread_p, PAGE_PTR page_ptr, INT16 first_slotid, int rec_cnt, INT16 ins_slotid, char *data, int *length)
int btree_prepare_bts(THREAD_ENTRY *thread_p, BTREE_SCAN *bts, BTID *btid, INDX_SCAN_ID *index_scan_id_p, key_val_range *key_val_range, FILTER_INFO *filter, const OID *match_class_oid, DB_BIGINT *key_limit_upper, DB_BIGINT *key_limit_lower, bool need_to_check_null, void *bts_other)
bool m_use_page_boundary_check
int btree_rv_keyval_undo_online_index_tran_delete(THREAD_ENTRY *thread_p, LOG_RCV *recv)
int m_ovf_appends_new_page
bool m_use_sorted_bulk_insert
int btree_rv_undo_global_unique_stats_commit(THREAD_ENTRY *thread_p, LOG_RCV *recv)
BTREE_NODE_TYPE node_type
int btree_vacuum_insert_mvccid(THREAD_ENTRY *thread_p, BTID *btid, OR_BUF *buffered_key, OID *oid, OID *class_oid, MVCCID insert_mvccid)
int btree_rv_read_keyval_info_nocopy(THREAD_ENTRY *thread_p, char *datap, int data_size, BTID_INT *btid, OID *cls_oid, OID *oid, BTREE_MVCC_INFO *mvcc_info, DB_VALUE *key)
void btree_set_mvcc_header_ids_for_update(THREAD_ENTRY *thread_p, bool do_delete_only, bool do_insert_only, MVCCID *mvccid, MVCC_REC_HEADER *mvcc_rec_header)
int n_oids_read_last_iteration
int btree_rv_nodehdr_undo_insert(THREAD_ENTRY *thread_p, LOG_RCV *recv)
int btree_write_record(THREAD_ENTRY *thread_p, BTID_INT *btid, void *node_rec, DB_VALUE *key, BTREE_NODE_TYPE node_type, int key_type, int key_len, bool during_loading, OID *class_oid, OID *oid, BTREE_MVCC_INFO *mvcc_info, RECDES *rec)
int btree_rv_nodehdr_undoredo_update(THREAD_ENTRY *thread_p, LOG_RCV *recv)
bool btree_is_unique_type(BTREE_TYPE type)
BTS_KEY_STATUS key_status
int btree_get_stats(THREAD_ENTRY *thread_p, BTREE_STATS *stat_info_p, bool with_fullscan)
char * btree_unpack_mvccinfo(char *ptr, BTREE_MVCC_INFO *mvcc_info, short btree_mvcc_flags)
DB_BIGINT * key_limit_lower
int btree_mvcc_delete(THREAD_ENTRY *thread_p, BTID *btid, DB_VALUE *key, OID *class_oid, OID *oid, int op_type, btree_unique_stats *unique_stat_info, int *unique, MVCC_REC_HEADER *p_mvcc_rec_header)
int btree_get_pkey_btid(THREAD_ENTRY *thread_p, OID *cls_oid, BTID *pkey_btid)
int btree_rv_newpage_redo_init(THREAD_ENTRY *thread_p, LOG_RCV *recv)
int btree_attrinfo_read_dbvalues(THREAD_ENTRY *thread_p, DB_VALUE *curr_key, int *btree_att_ids, int btree_num_att, HEAP_CACHE_ATTRINFO *attr_info, int func_index_col_id)
TP_DOMAIN * btree_read_key_type(THREAD_ENTRY *thread_p, BTID *btid)
BTREE_NODE_SCAN_QUEUE_ITEM * next
int btree_insert(THREAD_ENTRY *thread_p, BTID *btid, DB_VALUE *key, OID *cls_oid, OID *oid, int op_type, btree_unique_stats *unique_stat_info, int *unique, MVCC_REC_HEADER *p_mvcc_rec_header)
DISK_ISVALID btree_find_key(THREAD_ENTRY *thread_p, BTID *btid, OID *oid, DB_VALUE *key, bool *clear_key)
int btree_rv_redo_record_modify(THREAD_ENTRY *thread_p, LOG_RCV *rcv)
int btree_rv_roothdr_undo_update(THREAD_ENTRY *thread_p, LOG_RCV *recv)
int btree_set_error(THREAD_ENTRY *thread_p, const DB_VALUE *key, const OID *obj_oid, const OID *class_oid, const BTID *btid, const char *bt_name, int severity, int err_id, const char *filename, int lineno)
void btree_leaf_record_change_overflow_link(THREAD_ENTRY *thread_p, BTID_INT *btid_int, RECDES *leaf_record, VPID *new_overflow_vpid, char **rv_undo_data_ptr, char **rv_redo_data_ptr)
int btree_create_file(THREAD_ENTRY *thread_p, const OID *class_oid, int attrid, BTID *btid)
bool btree_multicol_key_is_null(DB_VALUE *key)
int btree_rv_save_keyval_for_undo(BTID_INT *btid, DB_VALUE *key, OID *cls_oid, OID *oid, BTREE_MVCC_INFO *mvcc_info, BTREE_OP_PURPOSE purpose, char *preallocated_buffer, char **data, int *capacity, int *length)
BTREE_NODE_SCAN_QUEUE_ITEM * queue_tail
void btree_keyoid_checkscan_end(THREAD_ENTRY *thread_p, BTREE_CHECKSCAN *btscan)
enum btree_op_purpose BTREE_OP_PURPOSE
SCAN_CODE btree_get_next_key_info(THREAD_ENTRY *thread_p, BTID *btid, BTREE_SCAN *bts, int num_classes, OID *class_oids_ptr, INDX_SCAN_ID *index_scan_id_p, DB_VALUE **key_info)
void btree_mvcc_info_from_heap_mvcc_header(MVCC_REC_HEADER *mvcc_header, BTREE_MVCC_INFO *mvcc_info)
DISK_ISVALID btree_check_all(THREAD_ENTRY *thread_p)
int btree_compare_btids(void *mem_btid1, void *mem_btid2)
int btree_rv_pagerec_insert(THREAD_ENTRY *thread_p, LOG_RCV *recv)
DISK_ISVALID btree_check_tree(THREAD_ENTRY *thread_p, const OID *class_oid_p, BTID *btid, const char *btname)
BTREE_NODE_SCAN_QUEUE_ITEM * queue_head
int btree_rv_undo_mark_dealloc_page(THREAD_ENTRY *thread_p, LOG_RCV *rcv)
int btree_range_scan_select_visible_oids(THREAD_ENTRY *thread_p, BTREE_SCAN *bts)
int btree_packed_mvccinfo_size(BTREE_MVCC_INFO *mvcc_info)
int btree_reflect_global_unique_statistics(THREAD_ENTRY *thread_p, GLOBAL_UNIQUE_STATS *unique_stat_info, bool only_active_tran)
int btree_index_start_scan(THREAD_ENTRY *thread_p, int show_type, DB_VALUE **arg_values, int arg_cnt, void **ctx)
int btree_rv_save_keyval_for_undo_two_objects(BTID_INT *btid, DB_VALUE *key, BTREE_OBJECT_INFO *first_version, BTREE_OBJECT_INFO *second_version, BTREE_OP_PURPOSE purpose, char *preallocated_buffer, char **data, int *capacity, int *length)
int btree_rv_ovfid_undoredo_update(THREAD_ENTRY *thread_p, LOG_RCV *recv)
void btree_dump(THREAD_ENTRY *thread_p, FILE *fp, BTID *btid, int level)
int xbtree_get_unique_pk(THREAD_ENTRY *thread_p, BTID *btid)
int m_keep_page_iterations
int btree_rv_remove_marked_for_delete(THREAD_ENTRY *thread_p, LOG_RCV *rcv)
bool key_range_max_value_equal
int BTREE_RANGE_SCAN_PROCESS_KEY_FUNC(THREAD_ENTRY *thread_p, BTREE_SCAN *bts)
std::vector< key_oid * > m_sorted_keys_oids
int btree_rv_keyval_undo_online_index_tran_insert(THREAD_ENTRY *thread_p, LOG_RCV *recv)
int btree_update(THREAD_ENTRY *thread_p, BTID *btid, DB_VALUE *old_key, DB_VALUE *new_key, OID *cls_oid, OID *oid, int op_type, btree_unique_stats *unique_stat_info, int *unique, MVCC_REC_HEADER *p_mvcc_rec_header)
int btree_get_unique_statistics_for_count(THREAD_ENTRY *thread_p, BTID *btid, int *oid_cnt, int *null_cnt, int *key_cnt)
std::vector< key_oid > m_keys_oids
int btree_rv_noderec_redo_insert(THREAD_ENTRY *thread_p, LOG_RCV *recv)
void btree_get_root_vpid_from_btid(THREAD_ENTRY *thread_p, BTID *btid, VPID *root_vpid)
int btree_rv_noderec_undo_insert(THREAD_ENTRY *thread_p, LOG_RCV *recv)
void btree_rv_noderec_dump_slot_id(FILE *fp, int length, void *data)
unsigned int btree_hash_btid(void *btid, int hash_size)
int btree_find_min_or_max_key(THREAD_ENTRY *thread_p, BTID *btid, DB_VALUE *key, int flag_minkey)
int btree_rv_keyval_undo_insert(THREAD_ENTRY *thread_p, LOG_RCV *recv)
struct indx_scan_id * index_scan_idp
int btree_online_index_dispatcher(THREAD_ENTRY *thread_p, BTID *btid, DB_VALUE *key, OID *cls_oid, OID *oid, int unique, BTREE_OP_PURPOSE purpose, LOG_LSA *undo_nxlsa)
bool force_restart_from_root
int btree_rv_remove_unique_stats(THREAD_ENTRY *thread_p, LOG_RCV *recv)
int btree_rv_undoredo_copy_page(THREAD_ENTRY *thread_p, LOG_RCV *recv)
DB_BIGINT * key_limit_upper
int btree_online_index_list_dispatcher(THREAD_ENTRY *thread_p, BTID *btid, OID *cls_oid, btree_insert_list *insert_list, int unique, BTREE_OP_PURPOSE purpose, LOG_LSA *undo_nxlsa)
void btree_set_mvcc_flags_into_oid(MVCC_REC_HEADER *p_mvcc_header, OID *oid)
int btree_initialize_new_page(THREAD_ENTRY *thread_p, PAGE_PTR page, void *args)
int btree_dump_capacity(THREAD_ENTRY *thread_p, FILE *fp, BTID *btid)
int btree_find_foreign_key(THREAD_ENTRY *thread_p, BTID *btid, DB_VALUE *key, OID *class_oid, OID *found_oid)
int btree_index_capacity(THREAD_ENTRY *thread_p, BTID *btid, BTREE_CAPACITY *cpc)
int btree_range_scan(THREAD_ENTRY *thread_p, BTREE_SCAN *bts, BTREE_RANGE_SCAN_PROCESS_KEY_FUNC *key_func)
int btree_rv_update_tran_stats(THREAD_ENTRY *thread_p, LOG_RCV *recv)