File query_hash_scan.c
FileList > cubrid > src > query > query_hash_scan.c
Go to the source code of this file
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stddef.h>
#include <math.h>
#include "fetch.h"
#include "memory_alloc.h"
#include "memory_hash.h"
#include "object_domain.h"
#include "object_primitive.h"
#include "object_representation.h"
#include "query_opfunc.h"
#include "string_opfunc.h"
#include "query_hash_scan.h"
#include "db_value_printer.hpp"
#include "dbtype.h"
#include "chartype.h"
#include "storage_common.h"
#include "error_manager.h"
#include "page_buffer.h"
#include "slotted_page.h"
#include "file_manager.h"
#include "db_date.h"
#include "thread_compat.hpp"
#include "oid.h"
#include "memory_wrapper.hpp"
Classes
Public Types
Public Functions
| Type |
Name |
| FHSID * |
fhs_create (THREAD_ENTRY * thread_p, FHSID * fhsid_p, int exp_num_entries)
|
| int |
fhs_destroy (THREAD_ENTRY * thread_p, FHSID * fhsid_p)
|
| void |
fhs_dump (THREAD_ENTRY * thread_p, FHSID * fhsid_p)
|
| void * |
fhs_insert (THREAD_ENTRY * thread_p, FHSID * fhsid_p, void * key_p, TFTID * value_p)
|
| EH_SEARCH |
fhs_search (THREAD_ENTRY * thread_p, HASH_LIST_SCAN * hlsid_p, TFTID * value_p)
|
| EH_SEARCH |
fhs_search_next (THREAD_ENTRY * thread_p, HASH_LIST_SCAN * hlsid_p, TFTID * value_p)
|
| HASH_SCAN_KEY * |
qdata_alloc_hscan_key (cubthread::entry * thread_p, int val_cnt, bool alloc_vals)
|
| HASH_SCAN_VALUE * |
qdata_alloc_hscan_value (cubthread::entry * thread_p, QFILE_TUPLE tpl)
|
| HASH_SCAN_VALUE * |
qdata_alloc_hscan_value_OID (cubthread::entry * thread_p, QFILE_LIST_SCAN_ID * scan_id_p)
|
| int |
qdata_build_hscan_key (THREAD_ENTRY * thread_p, val_descr * vd, REGU_VARIABLE_LIST regu_list, HASH_SCAN_KEY * key)
|
| HASH_SCAN_KEY * |
qdata_copy_hscan_key (cubthread::entry * thread_p, HASH_SCAN_KEY * key, REGU_VARIABLE_LIST probe_regu_list, val_descr * vd)
|
| HASH_SCAN_KEY * |
qdata_copy_hscan_key_without_alloc (cubthread::entry * thread_p, HASH_SCAN_KEY * key, REGU_VARIABLE_LIST probe_regu_list, HASH_SCAN_KEY * new_key)
|
| int |
qdata_free_hscan_entry (const void * key, void * data, void * args)
|
| void |
qdata_free_hscan_key (cubthread::entry * thread_p, HASH_SCAN_KEY * key, int val_count)
|
| void |
qdata_free_hscan_value (cubthread::entry * thread_p, HASH_SCAN_VALUE * value)
|
| unsigned int |
qdata_hash_scan_key (const void * key, unsigned int ht_size, HASH_METHOD hash_method)
|
| int |
qdata_hscan_key_eq (const void * key1, const void * key2)
|
| int |
qdata_print_hash_scan_entry (THREAD_ENTRY * thread_p, FILE * fp, const void * data, const void * type_list, void * args)
|
Public Static Functions
| Type |
Name |
| char * |
fhs_allocate_recdes (THREAD_ENTRY * thread_p, RECDES * recdes_p, int size, short type)
|
| bool |
fhs_binary_search_bucket (THREAD_ENTRY * thread_p, PAGE_PTR bucket_page_p, PGSLOTID num_record, void * key_p, PGSLOTID * out_position_p, bool need_to_backward)
|
| int |
fhs_compare_key (THREAD_ENTRY * thread_p, char * bucket_record_p, void * key_p, INT16 record_type, int * out_compare_result_p)
|
| int |
fhs_compose_record (THREAD_ENTRY * thread_p, void * key_p, TFTID * value_p, RECDES * recdes_p, short flag)
|
| int |
fhs_connect_bucket (THREAD_ENTRY * thread_p, FHSID * fhsid_p, int local_depth, FHS_HASH_KEY hash_key, VPID * bucket_vpid_p)
|
| void |
fhs_dir_locate (int * out_page_no_p, int * out_offset_p)
|
| int |
fhs_distribute_records_into_two_bucket (THREAD_ENTRY * thread_p, FHSID * fhsid_p, PAGE_PTR bucket_page_p, FHS_BUCKET_HEADER * bucket_header_p, int num_recs, PGSLOTID first_slot_id, PAGE_PTR sibling_page_p)
|
| void |
fhs_dump_bucket (THREAD_ENTRY * thread_p, PAGE_PTR bucket_page_p)
|
| int |
fhs_expand_directory (THREAD_ENTRY * thread_p, FHSID * fhsid_p, int new_depth)
|
| PAGE_PTR |
fhs_extend_bucket (THREAD_ENTRY * thread_p, FHSID * fhsid_p, PAGE_PTR bucket_page_p, void * key_p, FHS_HASH_KEY hash_key, int * out_new_bit_p, VPID * bucket_vpid)
|
| int |
fhs_find_bucket_vpid_with_hash (THREAD_ENTRY * thread_p, FHSID * fhsid_p, void * key_p, PGBUF_LATCH_MODE root_latch, PGBUF_LATCH_MODE bucket_latch, VPID * out_vpid_p, FHS_HASH_KEY * out_hash_key_p, int * out_location_p)
|
| char |
fhs_find_depth (THREAD_ENTRY * thread_p, FHSID * fhsid_p, int location, VPID * bucket_vpid_p, VPID * sibling_vpid_p)
|
| int |
fhs_find_first_bit_position (THREAD_ENTRY * thread_p, FHSID * fhsid_p, PAGE_PTR bucket_page_p, FHS_BUCKET_HEADER * bucket_header_p, void * key_p, int num_recs, PGSLOTID first_slot_id, int * out_old_local_depth_p, int * out_new_local_depth_p)
|
| PAGE_PTR |
fhs_fix_ehid_page (THREAD_ENTRY * thread_p, EHID * ehid, PGBUF_LATCH_MODE latch_mode)
|
| PAGE_PTR |
fhs_fix_nth_page (THREAD_ENTRY * thread_p, const VFID * vfid_p, int offset, PGBUF_LATCH_MODE latch_mode)
|
| PAGE_PTR |
fhs_fix_old_page (THREAD_ENTRY * thread_p, const VFID * vfid_p, const VPID * vpid_p, PGBUF_LATCH_MODE latch_mode)
|
| void |
fhs_free_recdes (THREAD_ENTRY * thread_p, RECDES * recdes_p)
|
| int |
fhs_get_pseudo_key (THREAD_ENTRY * thread_p, RECDES * recdes_p, FHS_HASH_KEY * out_hash_key_p)
|
| FHS_HASH_KEY |
fhs_hash (void * original_key_p)
|
| FHS_HASH_KEY |
fhs_hash_four_bytes_type (char * key_p)
|
| int |
fhs_initialize_bucket_new_page (THREAD_ENTRY * thread_p, PAGE_PTR page_p, void * args)
|
| int |
fhs_initialize_dir_new_page (THREAD_ENTRY * thread_p, PAGE_PTR page_p, void * args)
|
| int |
fhs_initialize_dk_bucket_new_page (THREAD_ENTRY * thread_p, PAGE_PTR page_p, void * args)
|
| FHS_RESULT |
fhs_insert_bucket_after_extend_if_need (THREAD_ENTRY * thread_p, FHSID * fhsid_p, VPID * bucket_vpid_p, void * key_p, FHS_HASH_KEY hash_key, TFTID * value_p)
|
| FHS_RESULT |
fhs_insert_to_bucket (THREAD_ENTRY * thread_p, FHSID * fhsid_p, PAGE_PTR bucket_page_p, void * key_p, TFTID * value_p)
|
| int |
fhs_insert_to_bucket_after_create (THREAD_ENTRY * thread_p, FHSID * fhsid_p, VPID * bucket_vpid_p, int location, FHS_HASH_KEY hash_key, void * key_p, TFTID * value_p)
|
| FHS_RESULT |
fhs_insert_to_dk_bucket (THREAD_ENTRY * thread_p, FHSID * fhsid_p, VPID * next_bucket, void * key_p, TFTID * value_p)
|
| bool |
fhs_locate_slot (THREAD_ENTRY * thread_p, PAGE_PTR bucket_page_p, void * key_p, PGSLOTID * out_position_p, bool need_to_backward)
|
| void |
fhs_read_flag_from_record (char * record_p, short * flag)
|
| void |
fhs_read_key_from_record (char * record_p, int * key)
|
| void |
fhs_read_tftid_from_record (char * record_p, TFTID * tftid_p)
|
| PAGE_PTR |
fhs_split_bucket (THREAD_ENTRY * thread_p, FHSID * fhsid_p, PAGE_PTR bucket_page_p, void * key_p, int * out_old_local_depth_p, int * out_new_local_depth_p, VPID * sibling_vpid_p)
|
| char * |
fhs_write_flag_to_record (char * record_p, short flag)
|
| char * |
fhs_write_key_to_record (char * record_p, void * key_p)
|
| char * |
fhs_write_tftid_to_record (char * record_p, TFTID * tftid_p)
|
| DB_VALUE_COMPARE_RESULT |
qdata_hscan_key_compare (HASH_SCAN_KEY * ckey1, HASH_SCAN_KEY * ckey2, int * diff_pos)
|
| bool |
safe_memcpy (void * data, void * source, int size)
|
Macros
| Type |
Name |
| define |
CLEARBIT (word, pos) ( (word) & ~(1 << ([**FHS\_HASH\_KEY\_BITS**](query__hash__scan_8c.md#define-fhs_hash_key_bits) - (pos))) )
|
| define |
FHS_ALIGNMENT (([**char**](broker__monitor_8c.md#function-timeout)) [**FHS\_KEY\_SIZE**](query__hash__scan_8c.md#define-fhs_key_size))
|
| define |
FHS_FIRST_SLOT_ID 1
|
| define |
FHS_FLAG_DUMMY_NUM 0 /\* [**meaningless**](broker__monitor_8c.md#function-timeout) [**flag**](classflag.md) [**of**](broker__monitor_8c.md#function-timeout) record in [**dk**](broker__monitor_8c.md#function-timeout) [**bucket**](broker__monitor_8c.md#function-timeout) \*/
|
| define |
FHS_FLAG_INDIRECT -1 /\* 0xFFFF, record [**is**](broker__monitor_8c.md#function-timeout) page [**id**](thread__worker__pool__impl_8hpp.md#enum-id) [**for**](dynamic__load_8c.md#function-for) duplicate key [**bucket**](broker__monitor_8c.md#function-timeout) \*/
|
| define |
FHS_HASH_KEY_BITS ([**sizeof**](broker__monitor_8c.md#function-timeout) ([**FHS\_HASH\_KEY**](query__hash__scan_8c.md#typedef-fhs_hash_key)) \* 8)
|
| define |
FHS_HEADER_SLOT_ID 0
|
| define |
FHS_KEY_SIZE ([**sizeof**](broker__monitor_8c.md#function-timeout) ([**FHS\_HASH\_KEY**](query__hash__scan_8c.md#typedef-fhs_hash_key)))
|
| define |
FHS_LAST_OFFSET_IN_FIRST_PAGE (([**FHS\_NUM\_FIRST\_PAGES**](query__hash__scan_8c.md#define-fhs_num_first_pages) - 1) \* [**sizeof**](broker__monitor_8c.md#function-timeout)([**FHS\_DIR\_RECORD**](query__hash__scan_8c.md#typedef-fhs_dir_record)))
|
| define |
FHS_LAST_OFFSET_IN_NON_FIRST_PAGE (([**FHS\_NUM\_NON\_FIRST\_PAGES**](query__hash__scan_8c.md#define-fhs_num_non_first_pages) - 1) \* [**sizeof**](broker__monitor_8c.md#function-timeout)([**FHS\_DIR\_RECORD**](query__hash__scan_8c.md#typedef-fhs_dir_record)))
|
| define |
FHS_MAX_DUP_KEY 100 /\* 10% [**of**](broker__monitor_8c.md#function-timeout) [**MAXNUM**](broker__monitor_8c.md#function-timeout) ([**PAGE**](broker__monitor_8c.md#function-timeout) 16K / [**RECORD**](broker__monitor_8c.md#function-timeout) 14 bytes) \*/
|
| define |
FHS_NUM_FIRST_PAGES (([**DB\_PAGESIZE**](storage__common_8h.md#define-db_pagesize)) / [**SSIZEOF**](broker__monitor_8c.md#function-timeout) ([**FHS\_DIR\_RECORD**](query__hash__scan_8c.md#typedef-fhs_dir_record)))
|
| define |
FHS_NUM_NON_FIRST_PAGES ([**DB\_PAGESIZE**](storage__common_8h.md#define-db_pagesize) / [**sizeof**](broker__monitor_8c.md#function-timeout)([**FHS\_DIR\_RECORD**](query__hash__scan_8c.md#typedef-fhs_dir_record)))
|
| define |
FHS_SHORT_BITS ([**sizeof**](broker__monitor_8c.md#function-timeout) ([**short**](broker__monitor_8c.md#function-timeout)) \* 8)
|
| define |
FIND_OFFSET (hash_key, depth) ([**GETBITS**](query__hash__scan_8c.md#define-getbits)(([**hash\_key**](broker__monitor_8c.md#function-timeout)), 1, (depth)))
|
| define |
GETBIT (word, pos) ([**GETBITS**](query__hash__scan_8c.md#define-getbits)((word), (pos), 1))
|
| define |
GETBITS (value, pos, n) ( ((value) >> ( [**FHS\_HASH\_KEY\_BITS**](query__hash__scan_8c.md#define-fhs_hash_key_bits) - (pos) - (n) + 1)) & (~(~0UL << (n))) )
|
| define |
SETBIT (word, pos) ( (word) \| (1 << ([**FHS\_HASH\_KEY\_BITS**](query__hash__scan_8c.md#define-fhs_hash_key_bits) - (pos))) )
|
| define |
SET_VPID (dest_vpid, vol_id, page_id) /* multi line expression */
|
Public Types Documentation
typedef struct fhs_bucket_header FHS_BUCKET_HEADER;
typedef FHS_DIR_RECORD
typedef struct fhs_dir_record FHS_DIR_RECORD;
typedef struct fhs_dk_bucket_header FHS_DK_BUCKET_HEADER;
typedef FHS_HASH_KEY
typedef unsigned int FHS_HASH_KEY;
enum FHS_RESULT
enum FHS_RESULT {
FHS_SUCCESSFUL_COMPLETION,
FHS_BUCKET_FULL,
FHS_ERROR_OCCURRED
};
Public Functions Documentation
function fhs_create
FHSID * fhs_create (
THREAD_ENTRY * thread_p,
FHSID * fhsid_p,
int exp_num_entries
)
function fhs_destroy
int fhs_destroy (
THREAD_ENTRY * thread_p,
FHSID * fhsid_p
)
function fhs_dump
void fhs_dump (
THREAD_ENTRY * thread_p,
FHSID * fhsid_p
)
function fhs_insert
void * fhs_insert (
THREAD_ENTRY * thread_p,
FHSID * fhsid_p,
void * key_p,
TFTID * value_p
)
function fhs_search
EH_SEARCH fhs_search (
THREAD_ENTRY * thread_p,
HASH_LIST_SCAN * hlsid_p,
TFTID * value_p
)
function fhs_search_next
EH_SEARCH fhs_search_next (
THREAD_ENTRY * thread_p,
HASH_LIST_SCAN * hlsid_p,
TFTID * value_p
)
function qdata_alloc_hscan_key
HASH_SCAN_KEY * qdata_alloc_hscan_key (
cubthread::entry * thread_p,
int val_cnt,
bool alloc_vals
)
function qdata_alloc_hscan_value
HASH_SCAN_VALUE * qdata_alloc_hscan_value (
cubthread::entry * thread_p,
QFILE_TUPLE tpl
)
function qdata_alloc_hscan_value_OID
HASH_SCAN_VALUE * qdata_alloc_hscan_value_OID (
cubthread::entry * thread_p,
QFILE_LIST_SCAN_ID * scan_id_p
)
function qdata_build_hscan_key
int qdata_build_hscan_key (
THREAD_ENTRY * thread_p,
val_descr * vd,
REGU_VARIABLE_LIST regu_list,
HASH_SCAN_KEY * key
)
function qdata_copy_hscan_key
HASH_SCAN_KEY * qdata_copy_hscan_key (
cubthread::entry * thread_p,
HASH_SCAN_KEY * key,
REGU_VARIABLE_LIST probe_regu_list,
val_descr * vd
)
function qdata_copy_hscan_key_without_alloc
HASH_SCAN_KEY * qdata_copy_hscan_key_without_alloc (
cubthread::entry * thread_p,
HASH_SCAN_KEY * key,
REGU_VARIABLE_LIST probe_regu_list,
HASH_SCAN_KEY * new_key
)
function qdata_free_hscan_entry
int qdata_free_hscan_entry (
const void * key,
void * data,
void * args
)
function qdata_free_hscan_key
void qdata_free_hscan_key (
cubthread::entry * thread_p,
HASH_SCAN_KEY * key,
int val_count
)
function qdata_free_hscan_value
void qdata_free_hscan_value (
cubthread::entry * thread_p,
HASH_SCAN_VALUE * value
)
function qdata_hash_scan_key
unsigned int qdata_hash_scan_key (
const void * key,
unsigned int ht_size,
HASH_METHOD hash_method
)
function qdata_hscan_key_eq
int qdata_hscan_key_eq (
const void * key1,
const void * key2
)
function qdata_print_hash_scan_entry
int qdata_print_hash_scan_entry (
THREAD_ENTRY * thread_p,
FILE * fp,
const void * data,
const void * type_list,
void * args
)
Public Static Functions Documentation
function fhs_allocate_recdes
static char * fhs_allocate_recdes (
THREAD_ENTRY * thread_p,
RECDES * recdes_p,
int size,
short type
)
function fhs_binary_search_bucket
static bool fhs_binary_search_bucket (
THREAD_ENTRY * thread_p,
PAGE_PTR bucket_page_p,
PGSLOTID num_record,
void * key_p,
PGSLOTID * out_position_p,
bool need_to_backward
)
function fhs_compare_key
static int fhs_compare_key (
THREAD_ENTRY * thread_p,
char * bucket_record_p,
void * key_p,
INT16 record_type,
int * out_compare_result_p
)
function fhs_compose_record
static int fhs_compose_record (
THREAD_ENTRY * thread_p,
void * key_p,
TFTID * value_p,
RECDES * recdes_p,
short flag
)
function fhs_connect_bucket
static int fhs_connect_bucket (
THREAD_ENTRY * thread_p,
FHSID * fhsid_p,
int local_depth,
FHS_HASH_KEY hash_key,
VPID * bucket_vpid_p
)
function fhs_dir_locate
static void fhs_dir_locate (
int * out_page_no_p,
int * out_offset_p
)
function fhs_distribute_records_into_two_bucket
static int fhs_distribute_records_into_two_bucket (
THREAD_ENTRY * thread_p,
FHSID * fhsid_p,
PAGE_PTR bucket_page_p,
FHS_BUCKET_HEADER * bucket_header_p,
int num_recs,
PGSLOTID first_slot_id,
PAGE_PTR sibling_page_p
)
function fhs_dump_bucket
static void fhs_dump_bucket (
THREAD_ENTRY * thread_p,
PAGE_PTR bucket_page_p
)
function fhs_expand_directory
static int fhs_expand_directory (
THREAD_ENTRY * thread_p,
FHSID * fhsid_p,
int new_depth
)
function fhs_extend_bucket
static PAGE_PTR fhs_extend_bucket (
THREAD_ENTRY * thread_p,
FHSID * fhsid_p,
PAGE_PTR bucket_page_p,
void * key_p,
FHS_HASH_KEY hash_key,
int * out_new_bit_p,
VPID * bucket_vpid
)
function fhs_find_bucket_vpid_with_hash
static int fhs_find_bucket_vpid_with_hash (
THREAD_ENTRY * thread_p,
FHSID * fhsid_p,
void * key_p,
PGBUF_LATCH_MODE root_latch,
PGBUF_LATCH_MODE bucket_latch,
VPID * out_vpid_p,
FHS_HASH_KEY * out_hash_key_p,
int * out_location_p
)
function fhs_find_depth
static char fhs_find_depth (
THREAD_ENTRY * thread_p,
FHSID * fhsid_p,
int location,
VPID * bucket_vpid_p,
VPID * sibling_vpid_p
)
function fhs_find_first_bit_position
static int fhs_find_first_bit_position (
THREAD_ENTRY * thread_p,
FHSID * fhsid_p,
PAGE_PTR bucket_page_p,
FHS_BUCKET_HEADER * bucket_header_p,
void * key_p,
int num_recs,
PGSLOTID first_slot_id,
int * out_old_local_depth_p,
int * out_new_local_depth_p
)
function fhs_fix_ehid_page
static PAGE_PTR fhs_fix_ehid_page (
THREAD_ENTRY * thread_p,
EHID * ehid,
PGBUF_LATCH_MODE latch_mode
)
function fhs_fix_nth_page
static PAGE_PTR fhs_fix_nth_page (
THREAD_ENTRY * thread_p,
const VFID * vfid_p,
int offset,
PGBUF_LATCH_MODE latch_mode
)
function fhs_fix_old_page
static PAGE_PTR fhs_fix_old_page (
THREAD_ENTRY * thread_p,
const VFID * vfid_p,
const VPID * vpid_p,
PGBUF_LATCH_MODE latch_mode
)
function fhs_free_recdes
static void fhs_free_recdes (
THREAD_ENTRY * thread_p,
RECDES * recdes_p
)
function fhs_get_pseudo_key
static int fhs_get_pseudo_key (
THREAD_ENTRY * thread_p,
RECDES * recdes_p,
FHS_HASH_KEY * out_hash_key_p
)
function fhs_hash
static FHS_HASH_KEY fhs_hash (
void * original_key_p
)
function fhs_hash_four_bytes_type
static FHS_HASH_KEY fhs_hash_four_bytes_type (
char * key_p
)
function fhs_initialize_bucket_new_page
static int fhs_initialize_bucket_new_page (
THREAD_ENTRY * thread_p,
PAGE_PTR page_p,
void * args
)
function fhs_initialize_dir_new_page
static int fhs_initialize_dir_new_page (
THREAD_ENTRY * thread_p,
PAGE_PTR page_p,
void * args
)
function fhs_initialize_dk_bucket_new_page
static int fhs_initialize_dk_bucket_new_page (
THREAD_ENTRY * thread_p,
PAGE_PTR page_p,
void * args
)
function fhs_insert_bucket_after_extend_if_need
static FHS_RESULT fhs_insert_bucket_after_extend_if_need (
THREAD_ENTRY * thread_p,
FHSID * fhsid_p,
VPID * bucket_vpid_p,
void * key_p,
FHS_HASH_KEY hash_key,
TFTID * value_p
)
function fhs_insert_to_bucket
static FHS_RESULT fhs_insert_to_bucket (
THREAD_ENTRY * thread_p,
FHSID * fhsid_p,
PAGE_PTR bucket_page_p,
void * key_p,
TFTID * value_p
)
function fhs_insert_to_bucket_after_create
static int fhs_insert_to_bucket_after_create (
THREAD_ENTRY * thread_p,
FHSID * fhsid_p,
VPID * bucket_vpid_p,
int location,
FHS_HASH_KEY hash_key,
void * key_p,
TFTID * value_p
)
function fhs_insert_to_dk_bucket
static FHS_RESULT fhs_insert_to_dk_bucket (
THREAD_ENTRY * thread_p,
FHSID * fhsid_p,
VPID * next_bucket,
void * key_p,
TFTID * value_p
)
function fhs_locate_slot
static bool fhs_locate_slot (
THREAD_ENTRY * thread_p,
PAGE_PTR bucket_page_p,
void * key_p,
PGSLOTID * out_position_p,
bool need_to_backward
)
function fhs_read_flag_from_record
static inline void fhs_read_flag_from_record (
char * record_p,
short * flag
)
function fhs_read_key_from_record
static inline void fhs_read_key_from_record (
char * record_p,
int * key
)
function fhs_read_tftid_from_record
static inline void fhs_read_tftid_from_record (
char * record_p,
TFTID * tftid_p
)
function fhs_split_bucket
static PAGE_PTR fhs_split_bucket (
THREAD_ENTRY * thread_p,
FHSID * fhsid_p,
PAGE_PTR bucket_page_p,
void * key_p,
int * out_old_local_depth_p,
int * out_new_local_depth_p,
VPID * sibling_vpid_p
)
function fhs_write_flag_to_record
static inline char * fhs_write_flag_to_record (
char * record_p,
short flag
)
function fhs_write_key_to_record
static inline char * fhs_write_key_to_record (
char * record_p,
void * key_p
)
function fhs_write_tftid_to_record
static inline char * fhs_write_tftid_to_record (
char * record_p,
TFTID * tftid_p
)
function qdata_hscan_key_compare
static DB_VALUE_COMPARE_RESULT qdata_hscan_key_compare (
HASH_SCAN_KEY * ckey1,
HASH_SCAN_KEY * ckey2,
int * diff_pos
)
function safe_memcpy
static bool safe_memcpy (
void * data,
void * source,
int size
)
Macro Definition Documentation
define CLEARBIT
#define CLEARBIT (
word,
pos
) `( (word) & ~(1 << ( FHS_HASH_KEY_BITS - (pos))) )`
define FHS_ALIGNMENT
#define FHS_ALIGNMENT `(( char ) FHS_KEY_SIZE )`
define FHS_FIRST_SLOT_ID
#define FHS_FIRST_SLOT_ID `1`
define FHS_FLAG_DUMMY_NUM
#define FHS_FLAG_DUMMY_NUM `0 /* meaningless flag of record in dk bucket */`
define FHS_FLAG_INDIRECT
#define FHS_FLAG_INDIRECT `-1 /* 0xFFFF, record is page id for duplicate key bucket */`
define FHS_HASH_KEY_BITS
#define FHS_HASH_KEY_BITS `( sizeof ( FHS_HASH_KEY ) * 8)`
#define FHS_HEADER_SLOT_ID `0`
define FHS_KEY_SIZE
#define FHS_KEY_SIZE `( sizeof ( FHS_HASH_KEY ))`
define FHS_LAST_OFFSET_IN_FIRST_PAGE
#define FHS_LAST_OFFSET_IN_FIRST_PAGE `(( FHS_NUM_FIRST_PAGES - 1) * sizeof ( FHS_DIR_RECORD ))`
define FHS_LAST_OFFSET_IN_NON_FIRST_PAGE
#define FHS_LAST_OFFSET_IN_NON_FIRST_PAGE `(( FHS_NUM_NON_FIRST_PAGES - 1) * sizeof ( FHS_DIR_RECORD ))`
define FHS_MAX_DUP_KEY
#define FHS_MAX_DUP_KEY `100 /* 10% of MAXNUM ( PAGE 16K / RECORD 14 bytes) */`
define FHS_NUM_FIRST_PAGES
#define FHS_NUM_FIRST_PAGES `(( DB_PAGESIZE ) / SSIZEOF ( FHS_DIR_RECORD ))`
define FHS_NUM_NON_FIRST_PAGES
#define FHS_NUM_NON_FIRST_PAGES `( DB_PAGESIZE / sizeof ( FHS_DIR_RECORD ))`
define FHS_SHORT_BITS
#define FHS_SHORT_BITS `( sizeof ( short ) * 8)`
define FIND_OFFSET
#define FIND_OFFSET (
hash_key,
depth
) `( GETBITS (( hash_key ), 1, (depth)))`
define GETBIT
#define GETBIT (
word,
pos
) `( GETBITS ((word), (pos), 1))`
define GETBITS
#define GETBITS (
value,
pos,
n
) `( ((value) >> ( FHS_HASH_KEY_BITS - (pos) - (n) + 1)) & (~(~0UL << (n))) )`
define SETBIT
#define SETBIT (
word,
pos
) `( (word) | (1 << ( FHS_HASH_KEY_BITS - (pos))) )`
define SET_VPID
#define SET_VPID (
dest_vpid,
vol_id,
page_id
) `/* multi line expression */`
The documentation for this class was generated from the following file cubrid/src/query/query_hash_scan.c