Skip to content

File btree_load.h

FileList > cubrid > src > storage > btree_load.h

Go to the source code of this file

  • #include <assert.h>
  • #include "btree.h"
  • #include "dbtype.h"
  • #include "object_representation_constants.h"
  • #include "error_manager.h"
  • #include "storage_common.h"
  • #include "oid.h"
  • #include "system_parameter.h"
  • #include "object_domain.h"
  • #include "slotted_page.h"

Namespaces

Type Name
namespace parallel_query

Classes

Type Name
struct btree_node
struct btree_node_header
struct btree_node_info
struct btree_overflow_header
struct btree_root_header
struct filter_index_info
struct sort_args

Public Types

Type Name
typedef struct btree_node BTREE_NODE
typedef struct btree_node_header BTREE_NODE_HEADER
typedef struct btree_node_info BTREE_NODE_INFO
typedef struct btree_overflow_header BTREE_OVERFLOW_HEADER
typedef struct btree_root_header BTREE_ROOT_HEADER
typedef struct filter_index_info FILTER_INDEX_INFO
typedef struct pred_expr_with_context PRED_EXPR_WITH_CONTEXT
typedef struct sort_args SORT_ARGS
typedef struct xasl_unpack_info XASL_UNPACK_INFO

Public Functions

Type Name
void BTREE_MVCC_SET_HEADER_FIXED_SIZE (MVCC_REC_HEADER * p_mvcc_rec_header)
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_create_overflow_key_file (THREAD_ENTRY * thread_p, BTID_INT * btid)
TP_DOMAIN * btree_generate_prefix_domain (BTID_INT * btid)
int btree_get_asc_desc (THREAD_ENTRY * thread_p, BTID * btid, int col_idx, int * asc_desc)
int btree_get_disk_size_of_key (DB_VALUE * key)
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)
int btree_get_prefix_separator (const DB_VALUE * key1, const DB_VALUE * key2, DB_VALUE * prefix_key, TP_DOMAIN * key_domain)
BTREE_ROOT_HEADER * btree_get_root_header (THREAD_ENTRY * thread_p, PAGE_PTR page_ptr)
int btree_glean_root_header_info (THREAD_ENTRY * thread_p, BTREE_ROOT_HEADER * root_header, BTID_INT * btid, bool is_key_type)
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)
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)
DISK_ISVALID btree_verify_tree (THREAD_ENTRY * thread_p, const OID * class_oid_p, BTID_INT * btid, const char * btname)

Public Static Functions

Type Name
bool btree_clear_key_value (bool * clear_flag, DB_VALUE * key_value)
void btree_init_temp_key_value (bool * clear_flag, DB_VALUE * key_value)

Macros

Type Name
define BTREE_CURRENT_REV_LEVEL 0
define BTREE_GET_KEY_LEN_IN_PAGE (key_len) (((key\_len) &gt;= [**BTREE\_MAX\_KEYLEN\_INPAGE**](btree__load_8h.md#define-btree_max_keylen_inpage)) ? [**DISK\_VPID\_SIZE**](storage__common_8h.md#define-disk_vpid_size) : (key\_len))
define BTREE_INVALID_INDEX_ID (btid) /* multi line expression */
define BTREE_MAX_ALIGN [**INT\_ALIGNMENT**](memory__alloc_8h.md#define-int_alignment)
define BTREE_MAX_KEYLEN_INPAGE (([**int**](broker__monitor_8c.md#function-timeout))([**DB\_PAGESIZE**](storage__common_8h.md#define-db_pagesize) / 8))
define BTREE_MAX_OIDCOUNT_IN_LEAF_RECORD (btid) ([**BTREE\_MAX\_OIDCOUNT\_IN\_SIZE**](btree__load_8h.md#define-btree_max_oidcount_in_size) ([**btid**](structbtid.md), [**BTREE\_MAX\_OIDLEN\_INPAGE**](btree__load_8h.md#define-btree_max_oidlen_inpage)))
define BTREE_MAX_OIDCOUNT_IN_OVERFLOW_RECORD (btid) ([**BTREE\_MAX\_OIDCOUNT\_IN\_SIZE**](btree__load_8h.md#define-btree_max_oidcount_in_size) ([**btid**](structbtid.md), [**BTREE\_MAX\_OVERFLOW\_RECORD\_SIZE**](btree__load_8h.md#define-btree_max_overflow_record_size)))
define BTREE_MAX_OIDCOUNT_IN_SIZE (btid, size) (([**int**](broker__monitor_8c.md#function-timeout)) (size) / [**BTREE\_OBJECT\_FIXED\_SIZE**](btree__load_8h.md#define-btree_object_fixed_size) ([**btid**](structbtid.md)))
define BTREE_MAX_OIDLEN_INPAGE (([**int**](broker__monitor_8c.md#function-timeout))([**DB\_PAGESIZE**](storage__common_8h.md#define-db_pagesize) / 8))
define BTREE_MAX_OVERFLOW_RECORD_SIZE /* multi line expression */
define BTREE_NEW_ENTRY_MAX_SIZE (key_disk_size, node_type) /* multi line expression */
define BTREE_OBJECT_FIXED_SIZE (btree_info) /* multi line expression */
define BTREE_OBJECT_MAX_SIZE (2 \* [**OR\_OID\_SIZE**](object__representation__constants_8h.md#define-or_oid_size) + 2 \* [**OR\_MVCCID\_SIZE**](object__representation_8h.md#define-or_mvccid_size))
define BTREE_SET_CREATED_OVERFLOW_KEY_NOTIFICATION (THREAD, KEY, OID, C_OID, BTID, BTNM) /* multi line expression */
define BTREE_SET_CREATED_OVERFLOW_PAGE_NOTIFICATION (THREAD, KEY, OID, C_OID, BTID) /* multi line expression */
define BTREE_SET_DELETED_OVERFLOW_PAGE_NOTIFICATION (THREAD, KEY, OID, C_OID, BTID) /* multi line expression */
define COPY_KEY_VALUE [**COPY**](storage__common_8h.md#variable-copy)
define GET_DECOMPRESS_IDX_HEADER (hdr) ((hdr)-&gt;\_32.deduplicate\_key\_idx - 1)
define HEADER 0
define LEAF_ENTRY_MAX_SIZE (n) /* multi line expression */
define LEAF_FENCE_MAX_SIZE (n) /* multi line expression */
define LOAD_FIXED_EMPTY_FOR_LEAF /* multi line expression */
define LOAD_FIXED_EMPTY_FOR_NONLEAF /* multi line expression */
define NON_LEAF_ENTRY_MAX_SIZE (n) ([**NON\_LEAF\_RECORD\_SIZE**](storage__common_8h.md#define-non_leaf_record_size) + [**BTREE\_MAX\_ALIGN**](btree__load_8h.md#define-btree_max_align) + n)
define OIDCMP (n1, n2) /* multi line expression */
define PEEK_KEY_VALUE [**PEEK**](file__io_8h.md#define-peek)
define SET_DECOMPRESS_IDX_HEADER (hdr, idx) ((hdr)-&gt;\_32.deduplicate\_key\_idx = ((idx) + 1))

Public Types Documentation

typedef BTREE_NODE

typedef struct btree_node BTREE_NODE;

typedef BTREE_NODE_HEADER

typedef struct btree_node_header BTREE_NODE_HEADER;

typedef BTREE_NODE_INFO

typedef struct btree_node_info BTREE_NODE_INFO;

typedef BTREE_OVERFLOW_HEADER

typedef struct btree_overflow_header BTREE_OVERFLOW_HEADER;

typedef BTREE_ROOT_HEADER

typedef struct btree_root_header BTREE_ROOT_HEADER;

typedef FILTER_INDEX_INFO

typedef struct filter_index_info FILTER_INDEX_INFO;

typedef PRED_EXPR_WITH_CONTEXT

typedef struct pred_expr_with_context PRED_EXPR_WITH_CONTEXT;

typedef SORT_ARGS

typedef struct sort_args SORT_ARGS;

typedef XASL_UNPACK_INFO

typedef struct xasl_unpack_info XASL_UNPACK_INFO;

Public Functions Documentation

function BTREE_MVCC_SET_HEADER_FIXED_SIZE

inline void BTREE_MVCC_SET_HEADER_FIXED_SIZE (
    MVCC_REC_HEADER * p_mvcc_rec_header
) 

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_create_overflow_key_file

int btree_create_overflow_key_file (
    THREAD_ENTRY * thread_p,
    BTID_INT * btid
) 

function btree_generate_prefix_domain

TP_DOMAIN * btree_generate_prefix_domain (
    BTID_INT * btid
) 

function btree_get_asc_desc

int btree_get_asc_desc (
    THREAD_ENTRY * thread_p,
    BTID * btid,
    int col_idx,
    int * asc_desc
) 

function btree_get_disk_size_of_key

int btree_get_disk_size_of_key (
    DB_VALUE * key
) 

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_prefix_separator

int btree_get_prefix_separator (
    const  DB_VALUE * key1,
    const  DB_VALUE * key2,
    DB_VALUE * prefix_key,
    TP_DOMAIN * key_domain
) 

function btree_get_root_header

BTREE_ROOT_HEADER * btree_get_root_header (
    THREAD_ENTRY * thread_p,
    PAGE_PTR page_ptr
) 

function btree_glean_root_header_info

int btree_glean_root_header_info (
    THREAD_ENTRY * thread_p,
    BTREE_ROOT_HEADER * root_header,
    BTID_INT * btid,
    bool is_key_type
) 

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_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_verify_tree

DISK_ISVALID btree_verify_tree (
    THREAD_ENTRY * thread_p,
    const  OID * class_oid_p,
    BTID_INT * btid,
    const  char * btname
) 

Public Static Functions Documentation

function btree_clear_key_value

static bool btree_clear_key_value (
    bool * clear_flag,
    DB_VALUE * key_value
) 

function btree_init_temp_key_value

static void btree_init_temp_key_value (
    bool * clear_flag,
    DB_VALUE * key_value
) 

Macro Definition Documentation

define BTREE_CURRENT_REV_LEVEL

#define BTREE_CURRENT_REV_LEVEL `0`

define BTREE_GET_KEY_LEN_IN_PAGE

#define BTREE_GET_KEY_LEN_IN_PAGE (
    key_len
) `(((key_len) >= BTREE_MAX_KEYLEN_INPAGE ) ? DISK_VPID_SIZE : (key_len))`

define BTREE_INVALID_INDEX_ID

#define BTREE_INVALID_INDEX_ID (
    btid
) `/* multi line expression */`

define BTREE_MAX_ALIGN

#define BTREE_MAX_ALIGN `INT_ALIGNMENT`

define BTREE_MAX_KEYLEN_INPAGE

#define BTREE_MAX_KEYLEN_INPAGE `(( int )( DB_PAGESIZE / 8))`

define BTREE_MAX_OIDCOUNT_IN_LEAF_RECORD

#define BTREE_MAX_OIDCOUNT_IN_LEAF_RECORD (
    btid
) `( BTREE_MAX_OIDCOUNT_IN_SIZE ( btid , BTREE_MAX_OIDLEN_INPAGE ))`

define BTREE_MAX_OIDCOUNT_IN_OVERFLOW_RECORD

#define BTREE_MAX_OIDCOUNT_IN_OVERFLOW_RECORD (
    btid
) `( BTREE_MAX_OIDCOUNT_IN_SIZE ( btid , BTREE_MAX_OVERFLOW_RECORD_SIZE ))`

define BTREE_MAX_OIDCOUNT_IN_SIZE

#define BTREE_MAX_OIDCOUNT_IN_SIZE (
    btid,
    size
) `(( int ) (size) / BTREE_OBJECT_FIXED_SIZE ( btid ))`

define BTREE_MAX_OIDLEN_INPAGE

#define BTREE_MAX_OIDLEN_INPAGE `(( int )( DB_PAGESIZE / 8))`

define BTREE_MAX_OVERFLOW_RECORD_SIZE

#define BTREE_MAX_OVERFLOW_RECORD_SIZE `/* multi line expression */`

define BTREE_NEW_ENTRY_MAX_SIZE

#define BTREE_NEW_ENTRY_MAX_SIZE (
    key_disk_size,
    node_type
) `((node_type) == BTREE_LEAF_NODE ? \ LEAF_ENTRY_MAX_SIZE ( key_disk_size ) : \ NON_LEAF_ENTRY_MAX_SIZE ( key_disk_size ))`

define BTREE_OBJECT_FIXED_SIZE

#define BTREE_OBJECT_FIXED_SIZE (
    btree_info
) `/* multi line expression */`

define BTREE_OBJECT_MAX_SIZE

#define BTREE_OBJECT_MAX_SIZE `(2 * OR_OID_SIZE + 2 * OR_MVCCID_SIZE )`

define BTREE_SET_CREATED_OVERFLOW_KEY_NOTIFICATION

#define BTREE_SET_CREATED_OVERFLOW_KEY_NOTIFICATION (
    THREAD,
    KEY,
    OID,
    C_OID,
    BTID,
    BTNM
) `btree_set_error ( THREAD , KEY , OID , C_OID , BTID , BTNM , ER_NOTIFICATION_SEVERITY , \ ER_BTREE_CREATED_OVERFLOW_KEY , __FILE__ , __LINE__ )`

define BTREE_SET_CREATED_OVERFLOW_PAGE_NOTIFICATION

#define BTREE_SET_CREATED_OVERFLOW_PAGE_NOTIFICATION (
    THREAD,
    KEY,
    OID,
    C_OID,
    BTID
) `btree_set_error ( THREAD , KEY , OID , C_OID , BTID , NULL , ER_NOTIFICATION_SEVERITY , \ ER_BTREE_CREATED_OVERFLOW_PAGE , __FILE__ , __LINE__ )`

define BTREE_SET_DELETED_OVERFLOW_PAGE_NOTIFICATION

#define BTREE_SET_DELETED_OVERFLOW_PAGE_NOTIFICATION (
    THREAD,
    KEY,
    OID,
    C_OID,
    BTID
) `btree_set_error ( THREAD , KEY , OID , C_OID , BTID , NULL , ER_NOTIFICATION_SEVERITY , \ ER_BTREE_DELETED_OVERFLOW_PAGE , __FILE__ , __LINE__ )`

define COPY_KEY_VALUE

#define COPY_KEY_VALUE `COPY`

define GET_DECOMPRESS_IDX_HEADER

#define GET_DECOMPRESS_IDX_HEADER (
    hdr
) `((hdr)->_32.deduplicate_key_idx - 1)`

define HEADER

#define HEADER `0`

define LEAF_ENTRY_MAX_SIZE

#define LEAF_ENTRY_MAX_SIZE (
    n
) `/* multi line expression */`

define LEAF_FENCE_MAX_SIZE

#define LEAF_FENCE_MAX_SIZE (
    n
) `/* multi line expression */`

define LOAD_FIXED_EMPTY_FOR_LEAF

#define LOAD_FIXED_EMPTY_FOR_LEAF `/* multi line expression */`

define LOAD_FIXED_EMPTY_FOR_NONLEAF

#define LOAD_FIXED_EMPTY_FOR_NONLEAF `/* multi line expression */`

define NON_LEAF_ENTRY_MAX_SIZE

#define NON_LEAF_ENTRY_MAX_SIZE (
    n
) `( NON_LEAF_RECORD_SIZE + BTREE_MAX_ALIGN + n)`

define OIDCMP

#define OIDCMP (
    n1,
    n2
) `/* multi line expression */`

define PEEK_KEY_VALUE

#define PEEK_KEY_VALUE `PEEK`

define SET_DECOMPRESS_IDX_HEADER

#define SET_DECOMPRESS_IDX_HEADER (
    hdr,
    idx
) `((hdr)->_32.deduplicate_key_idx = ((idx) + 1))`


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