CUBRID Engine  latest
btree_load.c File Reference
#include "config.h"
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include "btree_load.h"
#include "btree.h"
#include "dbtype.h"
#include "external_sort.h"
#include "heap_file.h"
#include "log_append.hpp"
#include "log_manager.h"
#include "memory_alloc.h"
#include "memory_private_allocator.hpp"
#include "mvcc.h"
#include "object_primitive.h"
#include "object_representation.h"
#include "object_representation_sr.h"
#include "partition.h"
#include "partition_sr.h"
#include "query_executor.h"
#include "query_opfunc.h"
#include "server_support.h"
#include "stream_to_xasl.h"
#include "thread_manager.hpp"
#include "thread_entry_task.hpp"
#include "xserver_interface.h"
#include "xasl.h"
#include "xasl_unpack_info.hpp"

Go to the source code of this file.

Classes

struct  sort_args
 
struct  btree_page
 
struct  load_args
 
struct  btree_scan_partition_info
 
class  index_builder_loader_context
 
class  index_builder_loader_task
 

Typedefs

typedef struct sort_args SORT_ARGS
 
typedef struct btree_page BTREE_PAGE
 
typedef struct load_args LOAD_ARGS
 
typedef struct btree_scan_partition_info BTREE_SCAN_PART
 

Functions

static int btree_save_last_leafrec (THREAD_ENTRY *thread_p, LOAD_ARGS *load_args)
 
static PAGE_PTR btree_connect_page (THREAD_ENTRY *thread_p, DB_VALUE *key, int max_key_len, VPID *pageid, LOAD_ARGS *load_args, int node_level)
 
static int btree_build_nleafs (THREAD_ENTRY *thread_p, LOAD_ARGS *load_args, int n_nulls, int n_oids, int n_keys)
 
static void btree_log_page (THREAD_ENTRY *thread_p, VFID *vfid, PAGE_PTR page_ptr)
 
static int btree_load_new_page (THREAD_ENTRY *thread_p, const BTID *btid, BTREE_NODE_HEADER *header, int node_level, VPID *vpid_new, PAGE_PTR *page_new)
 
static PAGE_PTR btree_proceed_leaf (THREAD_ENTRY *thread_p, LOAD_ARGS *load_args)
 
static int btree_first_oid (THREAD_ENTRY *thread_p, DB_VALUE *this_key, OID *class_oid, OID *first_oid, MVCC_REC_HEADER *p_mvcc_rec_header, LOAD_ARGS *load_args)
 
static int btree_construct_leafs (THREAD_ENTRY *thread_p, const RECDES *in_recdes, void *arg)
 
static int btree_get_value_from_leaf_slot (THREAD_ENTRY *thread_p, BTID_INT *btid_int, PAGE_PTR leaf_ptr, int slot_id, DB_VALUE *key, bool *clear_key)
 
static int btree_index_sort (THREAD_ENTRY *thread_p, SORT_ARGS *sort_args, SORT_PUT_FUNC *out_func, void *out_args)
 
static SORT_STATUS btree_sort_get_next (THREAD_ENTRY *thread_p, RECDES *temp_recdes, void *arg)
 
static int compare_driver (const void *first, const void *second, void *arg)
 
static int list_add (BTREE_NODE **list, VPID *pageid)
 
static void list_remove_first (BTREE_NODE **list)
 
static void list_clear (BTREE_NODE *list)
 
static int list_length (const BTREE_NODE *this_list)
 
static int btree_pack_root_header (RECDES *Rec, BTREE_ROOT_HEADER *header, TP_DOMAIN *key_type)
 
static void btree_rv_save_root_head (int null_delta, int oid_delta, int key_delta, RECDES *recdes)
 
static int btree_advance_to_next_slot_and_fix_page (THREAD_ENTRY *thread_p, BTID_INT *btid, VPID *vpid, PAGE_PTR *pg_ptr, INT16 *slot_id, DB_VALUE *key, bool *clear_key, bool is_desc, int *key_cnt, BTREE_NODE_HEADER **header, MVCC_SNAPSHOT *mvcc)
 
static int btree_load_check_fk (THREAD_ENTRY *thread_p, const LOAD_ARGS *load_args_local, const SORT_ARGS *sort_args_local)
 
static int btree_is_slot_visible (THREAD_ENTRY *thread_p, BTID_INT *btid, PAGE_PTR pg_ptr, MVCC_SNAPSHOT *mvcc_snapshot, int slot_id, bool *is_slot_visible)
 
static int online_index_builder (THREAD_ENTRY *thread_p, BTID_INT *btid_int, HFID *hfids, OID *class_oids, int n_classes, int *attrids, int n_attrs, FUNCTION_INDEX_INFO func_idx_info, PRED_EXPR_WITH_CONTEXT *filter_pred, int *attrs_prefix_length, HEAP_CACHE_ATTRINFO *attr_info, HEAP_SCANCACHE *scancache, int unique_pk, int ib_thread_count, TP_DOMAIN *key_type)
 
static bool btree_is_worker_pool_logging_true ()
 
BTREE_NODE_HEADERbtree_get_node_header (THREAD_ENTRY *thread_p, PAGE_PTR page_ptr)
 
BTREE_ROOT_HEADERbtree_get_root_header (THREAD_ENTRY *thread_p, PAGE_PTR page_ptr)
 
BTREE_OVERFLOW_HEADERbtree_get_overflow_header (THREAD_ENTRY *thread_p, PAGE_PTR page_ptr)
 
int btree_init_node_header (THREAD_ENTRY *thread_p, const VFID *vfid, PAGE_PTR page_ptr, BTREE_NODE_HEADER *header, bool redo)
 
int btree_node_header_undo_log (THREAD_ENTRY *thread_p, VFID *vfid, PAGE_PTR page_ptr)
 
int btree_node_header_redo_log (THREAD_ENTRY *thread_p, VFID *vfid, PAGE_PTR page_ptr)
 
int btree_change_root_header_delta (THREAD_ENTRY *thread_p, VFID *vfid, PAGE_PTR page_ptr, int null_delta, int oid_delta, int key_delta)
 
int btree_init_root_header (THREAD_ENTRY *thread_p, VFID *vfid, PAGE_PTR page_ptr, BTREE_ROOT_HEADER *root_header, TP_DOMAIN *key_type)
 
int btree_init_overflow_header (THREAD_ENTRY *thread_p, PAGE_PTR page_ptr, BTREE_OVERFLOW_HEADER *ovf_header)
 
void btree_rv_mvcc_save_increments (const BTID *btid, int key_delta, int oid_delta, int null_delta, RECDES *recdes)
 
int btree_get_next_overflow_vpid (THREAD_ENTRY *thread_p, PAGE_PTR page_ptr, VPID *vpid)
 
BTIDxbtree_load_index (THREAD_ENTRY *thread_p, BTID *btid, const char *bt_name, TP_DOMAIN *key_type, OID *class_oids, int n_classes, int n_attrs, int *attr_ids, int *attrs_prefix_length, HFID *hfids, int unique_pk, int not_null_flag, OID *fk_refcls_oid, BTID *fk_refcls_pk_btid, const char *fk_name, char *pred_stream, int pred_stream_size, char *func_pred_stream, int func_pred_stream_size, int func_col_id, int func_attr_index_start)
 
void btree_rv_nodehdr_dump (FILE *fp, int length, void *data)
 
int btree_node_number_of_keys (THREAD_ENTRY *thread_p, PAGE_PTR page_ptr)
 
BTIDxbtree_load_online_index (THREAD_ENTRY *thread_p, BTID *btid, const char *bt_name, TP_DOMAIN *key_type, OID *class_oids, int n_classes, int n_attrs, int *attr_ids, int *attrs_prefix_length, HFID *hfids, int unique_pk, int not_null_flag, OID *fk_refcls_oid, BTID *fk_refcls_pk_btid, const char *fk_name, char *pred_stream, int pred_stream_size, char *func_pred_stream, int func_pred_stream_size, int func_col_id, int func_attr_index_start, int ib_thread_count)
 

Typedef Documentation

typedef struct btree_page BTREE_PAGE

Definition at line 91 of file btree_load.c.

Definition at line 143 of file btree_load.c.

typedef struct load_args LOAD_ARGS

Definition at line 99 of file btree_load.c.

typedef struct sort_args SORT_ARGS

Definition at line 57 of file btree_load.c.

Function Documentation

static int btree_advance_to_next_slot_and_fix_page ( THREAD_ENTRY thread_p,
BTID_INT btid,
VPID vpid,
PAGE_PTR pg_ptr,
INT16 *  slot_id,
DB_VALUE key,
bool clear_key,
bool  is_desc,
int *  key_cnt,
BTREE_NODE_HEADER **  header,
MVCC_SNAPSHOT mvcc 
)
static
static int btree_build_nleafs ( THREAD_ENTRY thread_p,
LOAD_ARGS load_args,
int  n_nulls,
int  n_oids,
int  n_keys 
)
static

Definition at line 1449 of file btree_load.c.

References recdes::area_size, ARG_FILE_LINE, assert, ASSERT_ERROR, ASSERT_ERROR_AND_SET, assert_release, load_args::btid, btree_clear_key_value(), btree_connect_page(), BTREE_CURRENT_REV_LEVEL, btree_get_disk_size_of_key(), BTREE_GET_KEY_LEN_IN_PAGE, btree_get_node_header(), btree_get_prefix_separator(), btree_get_root_vpid_from_btid(), btree_init_temp_key_value(), BTREE_IS_PRIMARY_KEY, BTREE_IS_UNIQUE, BTREE_LEAF_NODE, btree_load_new_page(), btree_log_page(), BTREE_MAX_ALIGN, btree_node_number_of_keys(), BTREE_NON_LEAF_NODE, btree_pack_root_header(), btree_read_record(), COPY_OID, btree_root_header::creator_mvccid, recdes::data, DB_IS_NULL, db_make_null(), DB_PAGESIZE, ER_ERROR_SEVERITY, ER_FAILED, ER_OUT_OF_VIRTUAL_MEMORY, er_set(), btree_page::hdr, HEADER, btree_node_split_info::index, IO_MAX_PAGE_SIZE, btid_int::key_type, load_args::leaf, list_add(), list_length(), list_remove_first(), logtb_get_current_mvccid(), btree_node_header::max_key_len, MVCCID_NULL, sort_args::n_nulls, sort_args::n_oids, btree_node_header::next_vpid, load_args::nleaf, NO_ERROR, btree_root_header::node, btree_node_header::node_level, btid_int::nonleaf_key_type, NULL, btree_root_header::num_keys, btree_root_header::num_nulls, btree_root_header::num_oids, OLD_PAGE, os_free_and_init, os_malloc, btid_int::ovfid, btree_root_header::ovfid, PAGE_BTREE, btree_node::pageid, PEEK, PEEK_KEY_VALUE, pgbuf_check_page_ptype(), pgbuf_fix, pgbuf_get_page_ptype(), PGBUF_LATCH_WRITE, PGBUF_UNCONDITIONAL_LATCH, pgbuf_unfix_and_init, btree_page::pgptr, btree_node_split_info::pivot, load_args::pop_list, pr_clear_value(), pr_is_prefix_key_type(), btree_node_header::prev_vpid, PTR_ALIGN, load_args::push_list, btree_root_header::rev_level, S_SUCCESS, pr_type::setval(), SP_SUCCESS, spage_get_record(), spage_update(), btree_node_header::split_info, btid_int::sys_btid, btid_int::topclass_oid, btree_root_header::topclass_oid, TP_DOMAIN_TYPE, tp_domain::type, btid_int::unique_pk, btree_root_header::unique_pk, btid::vfid, btree_page::vpid, load_args::vpid_first_leaf, VPID_ISNULL, and VPID_SET_NULL.

Referenced by xbtree_load_index().

Here is the caller graph for this function:

int btree_change_root_header_delta ( THREAD_ENTRY thread_p,
VFID vfid,
PAGE_PTR  page_ptr,
int  null_delta,
int  oid_delta,
int  key_delta 
)
static int btree_construct_leafs ( THREAD_ENTRY thread_p,
const RECDES in_recdes,
void *  arg 
)
static

Definition at line 2216 of file btree_load.c.

References _er_log_debug(), recdes::area_size, ARG_FILE_LINE, assert, ASSERT_ERROR, assert_release, load_args::bt_name, load_args::btid, btree_check_valid_record(), btree_clear_key_value(), btree_clear_mvcc_flags_from_oid(), btree_compare_key(), btree_dump_key(), btree_first_oid(), btree_get_overflow_header(), BTREE_INIT_MVCC_HEADER, BTREE_IS_UNIQUE, btree_leaf_change_first_object(), btree_leaf_get_first_object(), BTREE_LEAF_NODE, btree_leaf_record_change_overflow_link(), btree_load_new_page(), btree_log_page(), BTREE_MAX_ALIGN, BTREE_MAX_KEYLEN_INPAGE, BTREE_MAX_OIDCOUNT_IN_LEAF_RECORD, BTREE_MAX_OIDCOUNT_IN_SIZE, btree_mvcc_info_from_heap_mvcc_header(), btree_mvcc_info_to_heap_mvcc_header(), BTREE_MVCC_SET_HEADER_FIXED_SIZE(), BTREE_OP_NOTIFY_VACUUM, BTREE_OVERFLOW_NODE, btree_pack_mvccinfo(), btree_packed_mvccinfo_size(), btree_proceed_leaf(), btree_rv_save_keyval_for_undo(), btree_set_mvcc_flags_into_oid(), BTREE_SET_UNIQUE_VIOLATION_ERROR, CAST_STRLEN, COPY_OID, load_args::cur_key_len, load_args::curr_non_del_obj_count, load_args::curr_rec_max_obj_count, load_args::curr_rec_obj_count, load_args::current_key, recdes::data, pr_type::data_readval(), DB_EQ, DB_GT, db_private_free, DB_TYPE_MIDXKEY, DB_UNK, DISK_VPID_SIZE, DONT_FREE, or_buf::endptr, ER_BTREE_UNIQUE_FAILED, er_errid(), ER_ERROR_SEVERITY, ER_FAILED, er_set(), ER_TF_CORRUPTED, error(), vfid::fileid, btree_page::hdr, sort_args::in_recdes, INT_ALIGNMENT, IO_MAX_PAGE_SIZE, btid_int::key_type, load_args::last_leaf_insert_slotid, load_args::leaf, load_args::leaf_nleaf_recdes, recdes::length, LOAD_FIXED_EMPTY_FOR_LEAF, log_append_undo_data2(), logtb_get_current_mvccid(), MAX_ALIGNMENT, btree_node_header::max_key_len, MVCC_GET_DELID, MVCC_GET_INSID, MVCC_IS_HEADER_DELID_VALID, MVCC_IS_HEADER_INSID_NOT_ALL_VISIBLE, MVCC_SET_FLAG_BITS, MVCC_SET_INSID, MVCCID_ALL_VISIBLE, MVCCID_NULL, load_args::n_keys, db_value::need_clear, load_args::new_pos, btree_overflow_header::next_vpid, NO_ERROR, btree_node_header::node_level, NULL, oid_Null_oid, or_advance(), or_get_mvccid(), or_get_oid(), or_init(), OR_INT_SIZE, OR_MVCC_FLAG_VALID_DELID, OR_MVCC_FLAG_VALID_INSID, OR_MVCCID_SIZE, OR_OID_SIZE, OR_PUT_OID, load_args::out_recdes, load_args::overflowing, load_args::ovf, load_args::ovf_recdes, db_identifier::pageid, pgbuf_set_dirty(), pgbuf_unfix_and_init, btree_page::pgptr, prm_get_bool_value(), PRM_ID_LOG_BTREE_OPS, or_buf::ptr, PTR_ALIGN, btid::root_pageid, RVBT_MVCC_NOTIFY_VACUUM, db_identifier::slotid, SORT_RECORD_LENGTH, SP_SUCCESS, spage_insert(), spage_max_space_for_new_record(), spage_number_of_records(), btid_int::sys_btid, TP_DOMAIN_TYPE, tp_domain::type, btid_int::unique_pk, btid::vfid, vfid::volid, db_identifier::volid, btree_page::vpid, load_args::vpid_first_leaf, and VPID_ISNULL.

Referenced by xbtree_load_index().

Here is the caller graph for this function:

BTREE_NODE_HEADER* btree_get_node_header ( THREAD_ENTRY thread_p,
PAGE_PTR  page_ptr 
)

Definition at line 275 of file btree_load.c.

References assert, assert_release, recdes::data, HEADER, if(), btree_node_header::max_key_len, NULL, PAGE_BTREE, PEEK, pgbuf_check_page_ptype(), S_SUCCESS, and spage_get_record().

Referenced by btree_advance_and_find_key(), btree_advance_to_next_slot_and_fix_page(), btree_build_nleafs(), btree_check_page_key(), btree_check_pages(), btree_connect_page(), btree_delete_key_from_leaf(), btree_delete_meta_record(), btree_dump_page(), btree_dump_page_with_subtree(), btree_find_AR_sampling_leaf(), btree_find_boundary_leaf(), btree_find_key_from_page(), btree_find_lower_bound_leaf(), btree_find_next_index_record_holding_current_helper(), btree_find_split_point(), btree_fix_ovfl_oid_page(), btree_fix_ovfl_oid_pages_tree(), btree_get_next_node_info(), btree_get_next_page(), btree_get_next_page_vpid(), btree_get_node_level(), btree_get_stats_with_AR_sampling(), btree_get_subtree_capacity(), btree_get_unique_statistics(), btree_key_insert_new_key(), btree_key_online_index_IB_insert_list(), btree_leaf_is_key_between_min_max(), btree_merge_node(), btree_merge_node_and_advance(), btree_merge_root(), btree_node_is_compressed(), btree_node_mergeable(), btree_node_number_of_keys(), btree_node_size_uncompressed(), btree_proceed_leaf(), btree_range_scan_advance_over_filtered_keys(), btree_range_scan_descending_fix_prev_leaf(), btree_repair_prev_link_by_btid(), btree_rv_record_modify_internal(), btree_rv_undo_mark_dealloc_page(), btree_save_last_leafrec(), btree_search_key_and_apply_functions(), btree_search_leaf_page(), btree_set_split_point(), btree_set_vpid_previous_vpid(), btree_split_node(), btree_split_node_and_advance(), btree_verify_leaf_node(), btree_verify_node(), btree_verify_nonleaf_node(), btree_verify_subtree(), and btree_insert_list::check_release_latch().

BTREE_OVERFLOW_HEADER* btree_get_overflow_header ( THREAD_ENTRY thread_p,
PAGE_PTR  page_ptr 
)

Definition at line 344 of file btree_load.c.

References assert, assert_release, recdes::data, HEADER, NULL, PAGE_BTREE, PEEK, pgbuf_check_page_ptype(), S_SUCCESS, and spage_get_record().

Referenced by btree_construct_leafs(), and btree_get_next_overflow_vpid().

Here is the caller graph for this function:

static int btree_get_value_from_leaf_slot ( THREAD_ENTRY thread_p,
BTID_INT btid_int,
PAGE_PTR  leaf_ptr,
int  slot_id,
DB_VALUE key,
bool clear_key 
)
static

Definition at line 4207 of file btree_load.c.

References ASSERT_ERROR, assert_release, BTREE_LEAF_NODE, btree_read_record(), ER_FAILED, NO_ERROR, NULL, PEEK, PEEK_KEY_VALUE, S_SUCCESS, and spage_get_record().

Referenced by btree_advance_to_next_slot_and_fix_page().

Here is the caller graph for this function:

static int btree_index_sort ( THREAD_ENTRY thread_p,
SORT_ARGS sort_args,
SORT_PUT_FUNC out_func,
void *  out_args 
)
static
int btree_init_overflow_header ( THREAD_ENTRY thread_p,
PAGE_PTR  page_ptr,
BTREE_OVERFLOW_HEADER ovf_header 
)
static int btree_is_slot_visible ( THREAD_ENTRY thread_p,
BTID_INT btid,
PAGE_PTR  pg_ptr,
MVCC_SNAPSHOT mvcc_snapshot,
int  slot_id,
bool is_slot_visible 
)
static
static bool btree_is_worker_pool_logging_true ( )
static

Definition at line 5043 of file btree_load.c.

References cubthread::is_logging_configured(), and cubthread::LOG_WORKER_POOL_INDEX_BUILDER.

Referenced by online_index_builder().

Here is the caller graph for this function:

int btree_load_check_fk ( THREAD_ENTRY thread_p,
const LOAD_ARGS load_args_local,
const SORT_ARGS sort_args_local 
)
static

Definition at line 3801 of file btree_load.c.

References ARG_FILE_LINE, assert, ASSERT_ERROR, ASSERT_ERROR_AND_SET, btree_scan_partition_info::bt_scan, sort_args::btid, btree_scan_partition_info::btid, BTID_COPY, btree_scan::btid_int, BTID_IS_NULL, BTID_SET_NULL, btree_advance_to_next_slot_and_fix_page(), btree_clear_key_value(), btree_compare_key(), BTREE_INIT_SCAN, btree_init_temp_key_value(), btree_is_slot_visible(), btree_locate_key(), btree_multicol_key_has_null(), btree_prepare_bts(), btree_scan::C_page, btree_scan::C_vpid, COPY_OID, pruning_context::count, DB_EQ, DB_IS_NULL, DB_LT, DB_PARTITIONED_CLASS, db_private_free, ER_ERROR_SEVERITY, ER_FK_INVALID, er_set(), sort_args::fk_name, sort_args::fk_refcls_oid, sort_args::fk_refcls_pk_btid, or_classrep::has_partition_info, btree_scan_partition_info::header, heap_classrepr_free_and_init, heap_classrepr_get(), i, tp_domain::is_desc, btree_scan_partition_info::key_cnt, sort_args::key_type, btid_int::key_type, load_args::leaf, LK_GRANTED, LK_UNCOND_LOCK, lock_object(), MAX_PARTITIONS, mvcc_satisfies_dirty(), sort_args::n_attrs, NO_ERROR, NULL, NULL_REPRID, oid_Root_class_oid, partition_clear_pruning_context(), partition_init_pruning_context(), partition_load_pruning_context(), partition_prune_partition_index(), partition_prune_unique_btid(), pgbuf_unfix_and_init, pr_valstring(), scan_init_index_scan(), SIX_LOCK, btree_scan::slot_id, mvcc_snapshot::snapshot_fnc, btid_int::sys_btid, btree_page::vpid, and load_args::vpid_first_leaf.

Referenced by xbtree_load_index().

Here is the caller graph for this function:

static void btree_log_page ( THREAD_ENTRY thread_p,
VFID vfid,
PAGE_PTR  page_ptr 
)
static
int btree_node_header_redo_log ( THREAD_ENTRY thread_p,
VFID vfid,
PAGE_PTR  page_ptr 
)
int btree_node_header_undo_log ( THREAD_ENTRY thread_p,
VFID vfid,
PAGE_PTR  page_ptr 
)

Definition at line 414 of file btree_load.c.

References recdes::data, ER_FAILED, HEADER, recdes::length, log_append_undo_data2(), NO_ERROR, PEEK, RVBT_NDHEADER_UPD, S_SUCCESS, and spage_get_record().

Referenced by btree_merge_root(), btree_set_vpid_previous_vpid(), and btree_split_node().

Here is the caller graph for this function:

int btree_node_number_of_keys ( THREAD_ENTRY thread_p,
PAGE_PTR  page_ptr 
)

Definition at line 3755 of file btree_load.c.

References ARG_FILE_LINE, assert, assert_release, btree_get_node_header(), BTREE_LEAF_NODE, BTREE_NON_LEAF_NODE, er_log_debug, btree_node_header::node_level, NULL, PAGE_BTREE, pgbuf_check_page_ptype(), and spage_number_of_records().

Referenced by btree_advance_to_next_slot_and_fix_page(), btree_build_nleafs(), btree_check_page_key(), btree_check_pages(), btree_compress_node(), btree_delete_key_from_leaf(), btree_dump_page(), btree_dump_page_with_subtree(), btree_find_AR_sampling_leaf(), btree_find_boundary_leaf(), btree_find_key_from_page(), btree_find_lower_bound_leaf(), btree_find_next_index_record_holding_current(), btree_find_next_index_record_holding_current_helper(), btree_find_split_point(), btree_fix_ovfl_oid_page(), btree_get_next_node_info(), btree_get_stats_with_AR_sampling(), btree_get_subtree_capacity(), btree_get_unique_statistics(), btree_key_append_object_non_unique(), btree_key_insert_new_key(), btree_key_insert_new_object(), btree_key_lock_and_append_object_unique(), btree_leaf_is_key_between_min_max(), btree_merge_node(), btree_merge_node_and_advance(), btree_merge_root(), btree_node_common_prefix(), btree_node_is_compressed(), btree_node_mergeable(), btree_node_size_uncompressed(), btree_range_scan_advance_over_filtered_keys(), btree_range_scan_descending_fix_prev_leaf(), btree_range_scan_resume(), btree_rv_record_modify_internal(), btree_search_leaf_page(), btree_search_nonleaf_page(), btree_set_split_point(), btree_split_node(), btree_split_node_and_advance(), btree_split_root(), btree_split_test(), btree_verify_leaf_node(), btree_verify_node(), btree_verify_nonleaf_node(), and btree_verify_subtree().

static int btree_pack_root_header ( RECDES Rec,
BTREE_ROOT_HEADER header,
TP_DOMAIN key_type 
)
static
void btree_rv_mvcc_save_increments ( const BTID btid,
int  key_delta,
int  oid_delta,
int  null_delta,
RECDES recdes 
)

Definition at line 645 of file btree_load.c.

References recdes::area_size, assert, CAST_STRLEN, recdes::data, recdes::length, NULL, OR_BTID_ALIGNED_SIZE, OR_INT_SIZE, OR_PUT_BTID, and OR_PUT_INT.

Referenced by logtb_tran_update_unique_stats().

Here is the caller graph for this function:

void btree_rv_nodehdr_dump ( FILE *  fp,
int  length,
void *  data 
)
static void btree_rv_save_root_head ( int  null_delta,
int  oid_delta,
int  key_delta,
RECDES recdes 
)
static

Definition at line 612 of file btree_load.c.

References recdes::area_size, assert, CAST_STRLEN, recdes::data, recdes::length, OR_INT_SIZE, and OR_PUT_INT.

Referenced by btree_change_root_header_delta().

Here is the caller graph for this function:

static SORT_STATUS btree_sort_get_next ( THREAD_ENTRY thread_p,
RECDES temp_recdes,
void *  arg 
)
static

Definition at line 2966 of file btree_load.c.

References _er_log_debug(), recdes::area_size, ARG_FILE_LINE, assert, sort_args::attr_ids, sort_args::attr_info, sort_args::attrinfo_inited, sort_args::attrs_prefix_length, sort_args::btid, BTREE_IS_UNIQUE, btree_multicol_key_has_null(), btree_multicol_key_is_null(), or_buf::buffer, func_pred::cache_attrinfo, heap_scancache::cache_last_fix_page, pred_expr_with_context::cache_pred, CAST_STRLEN, sort_args::class_ids, COPY, sort_args::cur_class, sort_args::cur_oid, recdes::data, pr_type::data_writeval(), DB_IS_NULL, db_make_null(), DBVAL_BUFSIZE, ER_ERROR_SEVERITY, ER_NOT_NULL_DOES_NOT_ALLOW_NULL_VALUE, er_set(), function_index_info::expr, vfid::fileid, sort_args::filter, sort_args::filter_eval_func, sort_args::func_index_info, pr_type::get_disk_size_of_value(), heap_attrinfo_end(), heap_attrinfo_generate_key(), heap_attrinfo_read_dbvalues(), heap_attrinfo_start(), heap_next(), heap_scancache_end(), heap_scancache_start(), HFID_IS_NULL, sort_args::hfids, sort_args::hfscan_cache, sort_args::in_recdes, INT_ALIGNMENT, sort_args::key_type, recdes::length, MAX_ALIGNMENT, MVCC_CLEAR_FLAG_BITS, MVCC_GET_DELID, MVCC_GET_INSID, MVCC_IS_FLAG_SET, MVCC_IS_HEADER_DELID_VALID, MVCC_IS_HEADER_INSID_NOT_ALL_VISIBLE, MVCC_REC_HEADER_INITIALIZER, mvcc_satisfies_dirty(), MVCCID_ALL_VISIBLE, MVCCID_NULL, sort_args::n_attrs, sort_args::n_classes, sort_args::n_nulls, sort_args::n_oids, db_value::need_clear, NO_ERROR, sort_args::not_null_flag, NULL, OID_SET_NULL, sort_args::oldest_visible_mvccid, or_advance(), OR_BYTE_SIZE, or_init(), OR_INT_SIZE, OR_MVCC_FLAG_VALID_DELID, OR_MVCC_FLAG_VALID_INSID, or_mvcc_get_header(), OR_MVCCID_SIZE, OR_OID_SIZE, or_pad(), or_put_byte(), or_put_mvccid(), or_put_oid(), db_identifier::pageid, PEEK, pr_clear_value(), pred_expr_with_context::pred, prm_get_bool_value(), PRM_ID_LOG_BTREE_OPS, or_buf::ptr, PTR_ALIGN, btid::root_pageid, S_DOESNT_EXIST, S_DOESNT_FIT, S_END, S_ERROR, S_SNAPSHOT_NOT_SATISFIED, S_SUCCESS, S_SUCCESS_CHN_UPTODATE, sort_args::scancache_inited, db_identifier::slotid, mvcc_snapshot::snapshot_fnc, SNAPSHOT_SATISFIED, SORT_ERROR_OCCURRED, SORT_NOMORE_RECS, SORT_REC_DOESNT_FIT, SORT_SUCCESS, btid_int::sys_btid, tp_domain::type, sort_args::unique_pk, V_ERROR, V_TRUE, btid::vfid, vfid::volid, and db_identifier::volid.

Referenced by btree_index_sort().

Here is the caller graph for this function:

static int list_add ( BTREE_NODE **  list,
VPID pageid 
)
static

Definition at line 3597 of file btree_load.c.

References er_errid(), ER_FAILED, btree_node::next, NO_ERROR, NULL, os_malloc, and btree_node::pageid.

Referenced by btree_build_nleafs(), and btree_connect_page().

Here is the caller graph for this function:

static void list_clear ( BTREE_NODE list)
static

Definition at line 3660 of file btree_load.c.

References btree_node::next, NULL, os_free_and_init, and p.

Referenced by xbtree_load_index().

Here is the caller graph for this function:

static int list_length ( const BTREE_NODE this_list)
static

Definition at line 3681 of file btree_load.c.

References btree_node::next, NULL, btree_node::pageid, vpid::pageid, and vpid::volid.

Referenced by btree_build_nleafs().

Here is the caller graph for this function:

static void list_remove_first ( BTREE_NODE **  list)
static

Definition at line 3642 of file btree_load.c.

References btree_node::next, NULL, and os_free_and_init.

Referenced by btree_build_nleafs().

Here is the caller graph for this function:

static int online_index_builder ( THREAD_ENTRY thread_p,
BTID_INT btid_int,
HFID hfids,
OID class_oids,
int  n_classes,
int *  attrids,
int  n_attrs,
FUNCTION_INDEX_INFO  func_idx_info,
PRED_EXPR_WITH_CONTEXT filter_pred,
int *  attrs_prefix_length,
HEAP_CACHE_ATTRINFO attr_info,
HEAP_SCANCACHE scancache,
int  unique_pk,
int  ib_thread_count,
TP_DOMAIN key_type 
)
static
BTID* xbtree_load_index ( THREAD_ENTRY thread_p,
BTID btid,
const char *  bt_name,
TP_DOMAIN key_type,
OID class_oids,
int  n_classes,
int  n_attrs,
int *  attr_ids,
int *  attrs_prefix_length,
HFID hfids,
int  unique_pk,
int  not_null_flag,
OID fk_refcls_oid,
BTID fk_refcls_pk_btid,
const char *  fk_name,
char *  pred_stream,
int  pred_stream_size,
char *  func_pred_stream,
int  func_pred_stream_size,
int  func_col_id,
int  func_attr_index_start 
)

Initialize the fields of loading argument structures

Definition at line 716 of file btree_load.c.

References _er_log_debug(), recdes::area_size, ARG_FILE_LINE, assert, ASSERT_ERROR, sort_args::attr_ids, function_index_info::attr_index_start, sort_args::attr_info, pred_expr_with_context::attrids_pred, sort_args::attrinfo_inited, sort_args::attrs_prefix_length, load_args::bt_name, sort_args::btid, load_args::btid, BTID_INITIALIZER, BTID_IS_NULL, BTID_SET_NULL, btree_build_nleafs(), btree_construct_leafs(), btree_create_file(), BTREE_CURRENT_REV_LEVEL, btree_generate_prefix_domain(), btree_get_root_vpid_from_btid(), btree_index_sort(), BTREE_IS_PRIMARY_KEY, BTREE_IS_UNIQUE, btree_load_check_fk(), BTREE_MAX_KEYLEN_INPAGE, BTREE_MAX_OIDLEN_INPAGE, btree_save_last_leafrec(), BTREE_SET_CREATED_OVERFLOW_KEY_NOTIFICATION, btree_verify_tree(), func_pred::cache_attrinfo, pred_expr_with_context::cache_pred, sort_args::class_ids, function_index_info::col_id, btid_int::copy_buf, btid_int::copy_buf_len, COPY_OID, sort_args::cur_class, sort_args::cur_oid, load_args::curr_non_del_obj_count, load_args::current_key, recdes::data, db_make_null(), DB_PAGESIZE, db_private_free_and_init, DB_TYPE_NULL, ER_BTREE_LOAD_FAILED, ER_ERROR_SEVERITY, ER_OUT_OF_VIRTUAL_MEMORY, er_set(), error(), eval_fnc(), function_index_info::expr, function_index_info::expr_stream, function_index_info::expr_stream_size, vfid::fileid, sort_args::filter, sort_args::filter_eval_func, sort_args::fk_name, sort_args::fk_refcls_oid, sort_args::fk_refcls_pk_btid, free_xasl_unpack_info(), sort_args::func_index_info, mvcctable::get_global_oldest_visible(), log_tdes::has_deadlock_priority, heap_attrinfo_end(), heap_attrinfo_start(), heap_scancache_end(), heap_scancache_start(), HFID_IS_NULL, sort_args::hfids, sort_args::hfscan_cache, sort_args::key_type, btid_int::key_type, load_args::leaf, load_args::leaf_nleaf_recdes, recdes::length, list_clear(), log_append_undo_data2(), LOG_FIND_CURRENT_TDES(), log_Gl, log_sysop_abort(), log_sysop_attach_to_outer(), log_sysop_start(), logpb_force_flush_pages(), logtb_delete_global_unique_stats(), log_global::mvcc_table, sort_args::n_attrs, sort_args::n_classes, load_args::n_keys, sort_args::n_nulls, sort_args::n_oids, load_args::nleaf, NO_ERROR, btid_int::nonleaf_key_type, sort_args::not_null_flag, NULL, NULL_OFFSET, NULL_PAGEID, pred_expr_with_context::num_attrs_pred, OID_ISNULL, OID_SET_NULL, sort_args::oldest_visible_mvccid, os_free_and_init, os_malloc, load_args::out_recdes, load_args::ovf, load_args::ovf_recdes, btid_int::ovfid, db_identifier::pageid, btid_int::part_key_desc, pgbuf_unfix_and_init, btree_page::pgptr, load_args::pop_list, pr_clear_value(), pred_expr_with_context::pred, prm_get_bool_value(), PRM_ID_LOG_BTREE_OPS, load_args::push_list, qexec_clear_func_pred(), qexec_clear_pred_context(), REC_HOME, btid_int::rev_level, btid::root_pageid, RVBT_REMOVE_UNIQUE_STATS, sort_args::scancache_inited, db_identifier::slotid, stx_map_stream_to_filter_pred(), stx_map_stream_to_func_pred(), btid_int::sys_btid, btid_int::topclass_oid, recdes::type, sort_args::unique_pk, btid_int::unique_pk, pred_expr_with_context::unpack_info, vacuum_log_add_dropped_file(), VACUUM_LOG_ADD_DROPPED_FILE_UNDO, btid::vfid, VFID_ISNULL, VFID_SET_NULL, vfid::volid, db_identifier::volid, btree_page::vpid, VPID_SET_NULL, and xbtree_add_index().

Referenced by btree_load_index(), and sbtree_load_index().

Here is the caller graph for this function:

BTID* xbtree_load_online_index ( THREAD_ENTRY thread_p,
BTID btid,
const char *  bt_name,
TP_DOMAIN key_type,
OID class_oids,
int  n_classes,
int  n_attrs,
int *  attr_ids,
int *  attrs_prefix_length,
HFID hfids,
int  unique_pk,
int  not_null_flag,
OID fk_refcls_oid,
BTID fk_refcls_pk_btid,
const char *  fk_name,
char *  pred_stream,
int  pred_stream_size,
char *  func_pred_stream,
int  func_pred_stream_size,
int  func_col_id,
int  func_attr_index_start,
int  ib_thread_count 
)

Definition at line 4438 of file btree_load.c.

References _er_log_debug(), ARG_FILE_LINE, assert, ASSERT_ERROR, function_index_info::attr_index_start, sort_args::attr_info, pred_expr_with_context::attrids_pred, sort_args::btid, BTID_AS_ARGS, BTREE_CURRENT_REV_LEVEL, btree_generate_prefix_domain(), BTREE_IS_PRIMARY_KEY, BTREE_IS_UNIQUE, btree_online_index_check_unique_constraint(), func_pred::cache_attrinfo, pred_expr_with_context::cache_pred, function_index_info::col_id, btid_int::copy_buf, btid_int::copy_buf_len, COPY_OID, css_is_shutdowning_server(), sort_args::cur_class, db_private_free_and_init, DB_TYPE_NULL, ER_BTREE_LOAD_FAILED, er_clear(), er_errid(), ER_ERROR_SEVERITY, ER_INTERRUPTED, ER_OUT_OF_VIRTUAL_MEMORY, er_set(), error(), function_index_info::expr, function_index_info::expr_stream, function_index_info::expr_stream_size, vfid::fileid, free_xasl_unpack_info(), sort_args::func_index_info, log_tdes::has_deadlock_priority, heap_attrinfo_end(), heap_attrinfo_start(), heap_get_btid_from_index_name(), heap_scancache_end(), heap_scancache_start(), IX_LOCK, sort_args::key_type, btid_int::key_type, LK_GRANTED, LK_INFINITE_WAIT, LK_NOTGRANTED_DUE_ERROR, LK_NOTGRANTED_DUE_TIMEOUT, LK_UNCOND_LOCK, lock_demote_class_lock(), lock_object(), LOG_FIND_CURRENT_TDES(), logpb_force_flush_pages(), logtb_get_mvcc_snapshot(), logtb_invalidate_snapshot_data(), logtb_set_check_interrupt(), logtb_set_tran_index_interrupt(), heap_scancache::mvcc_snapshot, sort_args::n_attrs, sort_args::n_classes, NO_ERROR, btid_int::nonleaf_key_type, NULL, pred_expr_with_context::num_attrs_pred, OID_AS_ARGS, oid_Root_class_oid, online_index_builder(), btid_int::ovfid, btid_int::part_key_desc, prm_get_bool_value(), PRM_ID_LOG_BTREE_OPS, qexec_clear_func_pred(), qexec_clear_pred_context(), btid_int::rev_level, btid::root_pageid, SCH_M_LOCK, stx_map_stream_to_filter_pred(), stx_map_stream_to_func_pred(), btid_int::sys_btid, btid_int::topclass_oid, sort_args::unique_pk, btid_int::unique_pk, pred_expr_with_context::unpack_info, btid::vfid, VFID_SET_NULL, vfid::volid, and xlogtb_reset_wait_msecs().

Referenced by btree_load_index(), and sbtree_load_index().

Here is the caller graph for this function: