Skip to content

File btree_load.c

FileList > cubrid > src > storage > btree_load.c

Go to the source code of this file

  • #include "config.h"
  • #include <stdlib.h>
  • #include <string.h>
  • #include <assert.h>
  • #include "btree_load.h"
  • #include "btree.h"
  • #include "deduplicate_key.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"
  • #include "px_ftab_set.hpp"
  • #include "bit.h"
  • #include "db_value_printer.hpp"
  • #include "memory_wrapper.hpp"

Classes

Type Name
struct S_PARAM_ST
struct btree_page
struct btree_scan_partition_info
class index_builder_loader_context
class index_builder_loader_task
struct load_args

Public Types

Type Name
typedef struct btree_page BTREE_PAGE
typedef struct btree_scan_partition_info BTREE_SCAN_PART
typedef struct load_args LOAD_ARGS

Public Functions

Type Name
REGISTER_WORKERPOOL (online_index, () { return 16;})
void bt_load_clear_pred_and_unpack (THREAD_ENTRY * thread_p, SORT_ARGS * args, XASL_UNPACK_INFO * func_unpack_info)
void bt_load_heap_scancache_end_for_attrinfo (THREAD_ENTRY * thread_p, SORT_ARGS * args, HEAP_SCANCACHE * scan_cache, HEAP_CACHE_ATTRINFO * attr_info)
int bt_load_heap_scancache_start_for_attrinfo (THREAD_ENTRY * thread_p, SORT_ARGS * args, HEAP_SCANCACHE * scan_cache, HEAP_CACHE_ATTRINFO * attr_info, int save_cache_last_fix_page)
int btree_change_root_header_delta (THREAD_ENTRY * thread_p, VFID * vfid, PAGE_PTR page_ptr, long long null_delta, long long oid_delta, long long key_delta)
int btree_get_next_overflow_vpid (THREAD_ENTRY * thread_p, PAGE_PTR page_ptr, VPID * vpid)
BTREE_NODE_HEADER * btree_get_node_header (THREAD_ENTRY * thread_p, PAGE_PTR page_ptr)
BTREE_OVERFLOW_HEADER * btree_get_overflow_header (THREAD_ENTRY * thread_p, PAGE_PTR page_ptr)
BTREE_ROOT_HEADER * btree_get_root_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_init_overflow_header (THREAD_ENTRY * thread_p, PAGE_PTR page_ptr, BTREE_OVERFLOW_HEADER * ovf_header)
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_load_filter_pred_function_info (THREAD_ENTRY * thread_p, SORT_ARGS * sort_args, PRED_EXPR_WITH_CONTEXT ** filter_pred_p, FILTER_INDEX_INFO * filter_index_info_p, FUNCTION_INDEX_INFO * func_index_info_p, XASL_UNPACK_INFO ** func_unpack_info_p, DB_TYPE * single_node_type)
void btree_load_foo_debug (void)
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)
int btree_node_number_of_keys (THREAD_ENTRY * thread_p, PAGE_PTR page_ptr)
void btree_rv_mvcc_save_increments (const BTID * btid, long long key_delta, long long oid_delta, long long null_delta, RECDES * recdes)
void btree_rv_nodehdr_dump (FILE * fp, int length, void * data)
SORT_STATUS btree_sort_get_next_parallel (THREAD_ENTRY * thread_p, RECDES * temp_recdes, void * arg)
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)
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)

Public Static Functions

Type Name
int bt_load_add_same_key_to_record (THREAD_ENTRY * thread_p, LOAD_ARGS * load_args, S_PARAM_ST * pparam, int * sp_success)
int bt_load_get_buf_from_record (RECDES * recdes, LOAD_ARGS * load_args, S_PARAM_ST * pparam, bool copy)
int bt_load_get_first_leaf_page_and_init_args (THREAD_ENTRY * thread_p, LOAD_ARGS * load_args, S_PARAM_ST * pparam)
int bt_load_invalidate_mvcc_del_id (THREAD_ENTRY * thread_p, LOAD_ARGS * load_args, S_PARAM_ST * pparam)
int bt_load_make_new_record_on_leaf_page (THREAD_ENTRY * thread_p, LOAD_ARGS * load_args, S_PARAM_ST * pparam, int * sp_success)
int bt_load_nospace_for_new_oid (THREAD_ENTRY * thread_p, LOAD_ARGS * load_args, int * sp_success)
int bt_load_notify_to_vacuum (THREAD_ENTRY * thread_p, LOAD_ARGS * load_args, S_PARAM_ST * pparam, char ** notify_vacuum_rv_data, char * notify_vacuum_rv_data_bufalign)
int bt_load_put_buf_to_record (RECDES * recdes, SORT_ARGS * sort_args, int value_has_null, OID * rec_oid, MVCC_REC_HEADER * mvcc_header, DB_VALUE * dbvalue_ptr, int key_len, int cur_class, bool is_btree_ops_log)
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)
int btree_build_nleafs (THREAD_ENTRY * thread_p, LOAD_ARGS * load_args, int n_nulls, int n_oids, int n_keys)
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)
int btree_construct_leafs (THREAD_ENTRY * thread_p, const RECDES * in_recdes, void * arg)
int btree_dump_sort_output (const RECDES * recdes, LOAD_ARGS * load_args)
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)
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)
int btree_index_sort (THREAD_ENTRY * thread_p, SORT_ARGS * sort_args, SORT_PUT_FUNC * out_func, void * out_args)
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)
bool btree_is_worker_pool_logging_true ()
int btree_load_check_fk (THREAD_ENTRY * thread_p, const LOAD_ARGS * load_args_local, const SORT_ARGS * sort_args_local)
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)
void btree_log_page (THREAD_ENTRY * thread_p, VFID * vfid, PAGE_PTR page_ptr)
int btree_pack_root_header (RECDES * Rec, BTREE_ROOT_HEADER * header, TP_DOMAIN * key_type)
PAGE_PTR btree_proceed_leaf (THREAD_ENTRY * thread_p, LOAD_ARGS * load_args)
void btree_rv_save_root_head (long long null_delta, long long oid_delta, long long key_delta, RECDES * recdes)
int btree_save_last_leafrec (THREAD_ENTRY * thread_p, LOAD_ARGS * load_args)
SORT_STATUS btree_sort_get_next (THREAD_ENTRY * thread_p, RECDES * temp_recdes, void * arg)
int compare_driver (const void * first, const void * second, void * arg)
SCAN_CODE get_next_vpid (THREAD_ENTRY * thread_p, parallel_query::ftab_set & ftab, FILE_PARTIAL_SECTOR * fsector, int * offset, VPID * vpid_out, HEAP_SCANCACHE * scan_cache, PGBUF_WATCHER * old_pgwatcher, HFID * hfid)
int list_add (BTREE_NODE ** list, VPID * pageid)
void list_clear (BTREE_NODE * list)
int list_length (const BTREE_NODE * this_list)
void list_print (const BTREE_NODE * this_list)
void list_remove_first (BTREE_NODE ** list)
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)

Public Types Documentation

typedef BTREE_PAGE

typedef struct btree_page BTREE_PAGE;

typedef BTREE_SCAN_PART

typedef struct btree_scan_partition_info BTREE_SCAN_PART;

typedef LOAD_ARGS

typedef struct load_args LOAD_ARGS;

Public Functions Documentation

function REGISTER_WORKERPOOL

REGISTER_WORKERPOOL (
    online_index,
    () { return 16;}
) 

function bt_load_clear_pred_and_unpack

void bt_load_clear_pred_and_unpack (
    THREAD_ENTRY * thread_p,
    SORT_ARGS * args,
    XASL_UNPACK_INFO * func_unpack_info
) 

function bt_load_heap_scancache_end_for_attrinfo

void bt_load_heap_scancache_end_for_attrinfo (
    THREAD_ENTRY * thread_p,
    SORT_ARGS * args,
    HEAP_SCANCACHE * scan_cache,
    HEAP_CACHE_ATTRINFO * attr_info
) 

function bt_load_heap_scancache_start_for_attrinfo

int bt_load_heap_scancache_start_for_attrinfo (
    THREAD_ENTRY * thread_p,
    SORT_ARGS * args,
    HEAP_SCANCACHE * scan_cache,
    HEAP_CACHE_ATTRINFO * attr_info,
    int save_cache_last_fix_page
) 

function btree_change_root_header_delta

int btree_change_root_header_delta (
    THREAD_ENTRY * thread_p,
    VFID * vfid,
    PAGE_PTR page_ptr,
    long  long null_delta,
    long  long oid_delta,
    long  long key_delta
) 

function btree_get_next_overflow_vpid

int btree_get_next_overflow_vpid (
    THREAD_ENTRY * thread_p,
    PAGE_PTR page_ptr,
    VPID * vpid
) 

function btree_get_node_header

BTREE_NODE_HEADER * btree_get_node_header (
    THREAD_ENTRY * thread_p,
    PAGE_PTR page_ptr
) 

function btree_get_overflow_header

BTREE_OVERFLOW_HEADER * btree_get_overflow_header (
    THREAD_ENTRY * thread_p,
    PAGE_PTR page_ptr
) 

function btree_get_root_header

BTREE_ROOT_HEADER * btree_get_root_header (
    THREAD_ENTRY * thread_p,
    PAGE_PTR page_ptr
) 

function btree_init_node_header

int btree_init_node_header (
    THREAD_ENTRY * thread_p,
    const  VFID * vfid,
    PAGE_PTR page_ptr,
    BTREE_NODE_HEADER * header,
    bool redo
) 

function btree_init_overflow_header

int btree_init_overflow_header (
    THREAD_ENTRY * thread_p,
    PAGE_PTR page_ptr,
    BTREE_OVERFLOW_HEADER * ovf_header
) 

function btree_init_root_header

int btree_init_root_header (
    THREAD_ENTRY * thread_p,
    VFID * vfid,
    PAGE_PTR page_ptr,
    BTREE_ROOT_HEADER * root_header,
    TP_DOMAIN * key_type
) 

function btree_load_filter_pred_function_info

int btree_load_filter_pred_function_info (
    THREAD_ENTRY * thread_p,
    SORT_ARGS * sort_args,
    PRED_EXPR_WITH_CONTEXT ** filter_pred_p,
    FILTER_INDEX_INFO * filter_index_info_p,
    FUNCTION_INDEX_INFO * func_index_info_p,
    XASL_UNPACK_INFO ** func_unpack_info_p,
    DB_TYPE * single_node_type
) 

function btree_load_foo_debug

void btree_load_foo_debug (
    void
) 

function btree_node_header_redo_log

int btree_node_header_redo_log (
    THREAD_ENTRY * thread_p,
    VFID * vfid,
    PAGE_PTR page_ptr
) 

function btree_node_header_undo_log

int btree_node_header_undo_log (
    THREAD_ENTRY * thread_p,
    VFID * vfid,
    PAGE_PTR page_ptr
) 

function btree_node_number_of_keys

int btree_node_number_of_keys (
    THREAD_ENTRY * thread_p,
    PAGE_PTR page_ptr
) 

function btree_rv_mvcc_save_increments

void btree_rv_mvcc_save_increments (
    const  BTID * btid,
    long  long key_delta,
    long  long oid_delta,
    long  long null_delta,
    RECDES * recdes
) 

function btree_rv_nodehdr_dump

void btree_rv_nodehdr_dump (
    FILE * fp,
    int length,
    void * data
) 

function btree_sort_get_next_parallel

SORT_STATUS btree_sort_get_next_parallel (
    THREAD_ENTRY * thread_p,
    RECDES * temp_recdes,
    void * arg
) 

function xbtree_load_index

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
) 

function xbtree_load_online_index

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
) 

Public Static Functions Documentation

function bt_load_add_same_key_to_record

static int bt_load_add_same_key_to_record (
    THREAD_ENTRY * thread_p,
    LOAD_ARGS * load_args,
    S_PARAM_ST * pparam,
    int * sp_success
) 

function bt_load_get_buf_from_record

static int bt_load_get_buf_from_record (
    RECDES * recdes,
    LOAD_ARGS * load_args,
    S_PARAM_ST * pparam,
    bool copy
) 

function bt_load_get_first_leaf_page_and_init_args

static int bt_load_get_first_leaf_page_and_init_args (
    THREAD_ENTRY * thread_p,
    LOAD_ARGS * load_args,
    S_PARAM_ST * pparam
) 

function bt_load_invalidate_mvcc_del_id

static int bt_load_invalidate_mvcc_del_id (
    THREAD_ENTRY * thread_p,
    LOAD_ARGS * load_args,
    S_PARAM_ST * pparam
) 

function bt_load_make_new_record_on_leaf_page

static int bt_load_make_new_record_on_leaf_page (
    THREAD_ENTRY * thread_p,
    LOAD_ARGS * load_args,
    S_PARAM_ST * pparam,
    int * sp_success
) 

function bt_load_nospace_for_new_oid

static int bt_load_nospace_for_new_oid (
    THREAD_ENTRY * thread_p,
    LOAD_ARGS * load_args,
    int * sp_success
) 

function bt_load_notify_to_vacuum

static int bt_load_notify_to_vacuum (
    THREAD_ENTRY * thread_p,
    LOAD_ARGS * load_args,
    S_PARAM_ST * pparam,
    char ** notify_vacuum_rv_data,
    char * notify_vacuum_rv_data_bufalign
) 

function bt_load_put_buf_to_record

static int bt_load_put_buf_to_record (
    RECDES * recdes,
    SORT_ARGS * sort_args,
    int value_has_null,
    OID * rec_oid,
    MVCC_REC_HEADER * mvcc_header,
    DB_VALUE * dbvalue_ptr,
    int key_len,
    int cur_class,
    bool is_btree_ops_log
) 

function btree_advance_to_next_slot_and_fix_page

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
) 

function btree_build_nleafs

static int btree_build_nleafs (
    THREAD_ENTRY * thread_p,
    LOAD_ARGS * load_args,
    int n_nulls,
    int n_oids,
    int n_keys
) 

function btree_connect_page

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
) 

function btree_construct_leafs

static int btree_construct_leafs (
    THREAD_ENTRY * thread_p,
    const  RECDES * in_recdes,
    void * arg
) 

function btree_dump_sort_output

static int btree_dump_sort_output (
    const  RECDES * recdes,
    LOAD_ARGS * load_args
) 

function btree_first_oid

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
) 

function btree_get_value_from_leaf_slot

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
) 

function btree_index_sort

static int btree_index_sort (
    THREAD_ENTRY * thread_p,
    SORT_ARGS * sort_args,
    SORT_PUT_FUNC * out_func,
    void * out_args
) 

function btree_is_slot_visible

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
) 

function btree_is_worker_pool_logging_true

static bool btree_is_worker_pool_logging_true () 

function btree_load_check_fk

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

function btree_load_new_page

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
) 

function btree_log_page

static void btree_log_page (
    THREAD_ENTRY * thread_p,
    VFID * vfid,
    PAGE_PTR page_ptr
) 

function btree_pack_root_header

static int btree_pack_root_header (
    RECDES * Rec,
    BTREE_ROOT_HEADER * header,
    TP_DOMAIN * key_type
) 

function btree_proceed_leaf

static PAGE_PTR btree_proceed_leaf (
    THREAD_ENTRY * thread_p,
    LOAD_ARGS * load_args
) 

function btree_rv_save_root_head

static void btree_rv_save_root_head (
    long  long null_delta,
    long  long oid_delta,
    long  long key_delta,
    RECDES * recdes
) 

function btree_save_last_leafrec

static int btree_save_last_leafrec (
    THREAD_ENTRY * thread_p,
    LOAD_ARGS * load_args
) 

function btree_sort_get_next

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

function compare_driver

static int compare_driver (
    const  void * first,
    const  void * second,
    void * arg
) 

function get_next_vpid

static SCAN_CODE get_next_vpid (
    THREAD_ENTRY * thread_p,
    parallel_query::ftab_set & ftab,
    FILE_PARTIAL_SECTOR * fsector,
    int * offset,
    VPID * vpid_out,
    HEAP_SCANCACHE * scan_cache,
    PGBUF_WATCHER * old_pgwatcher,
    HFID * hfid
) 

function list_add

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

function list_clear

static void list_clear (
    BTREE_NODE * list
) 

function list_length

static int list_length (
    const  BTREE_NODE * this_list
) 

function list_print

static void list_print (
    const  BTREE_NODE * this_list
) 

function list_remove_first

static void list_remove_first (
    BTREE_NODE ** list
) 

function online_index_builder

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
) 


The documentation for this class was generated from the following file cubrid/src/storage/btree_load.c