File scan_manager.h
FileList > cubrid > src > query > scan_manager.h
Go to the source code of this file
#include <time.h>
#include "jansson.h"
#include "btree.h"
#include "heap_file.h"
#include "method_scan.hpp"
#include "dblink_scan.h"
#include "oid.h"
#include "query_evaluator.h"
#include "query_list.h"
#include "access_json_table.hpp"
#include "scan_json_table.hpp"
#include "storage_common.h"
#include "query_hash_scan.h"
Namespaces
Classes
Public Types
Public Functions
| Type |
Name |
| void |
scan_close_scan (THREAD_ENTRY * thread_p, SCAN_ID * s_id)
|
| void |
scan_end_scan (THREAD_ENTRY * thread_p, SCAN_ID * s_id)
|
| void |
scan_finalize (void)
|
| void |
scan_init_index_scan (INDX_SCAN_ID * isidp, struct btree_iscan_oid_list * oid_list, MVCC_SNAPSHOT * mvcc_snapshot)
|
| int |
scan_init_iss (INDX_SCAN_ID * isidp)
|
| int |
scan_initialize (void)
|
| SCAN_CODE |
scan_jump_scan_pos (THREAD_ENTRY * thread_p, SCAN_ID * s_id, SCAN_POS * scan_pos)
|
| SCAN_CODE |
scan_next_scan (THREAD_ENTRY * thread_p, SCAN_ID * s_id)
|
| SCAN_CODE |
scan_next_scan_block (THREAD_ENTRY * thread_p, SCAN_ID * s_id)
|
| int |
scan_open_class_attr_scan (THREAD_ENTRY * thread_p, SCAN_ID * scan_id, int grouped, QPROC_SINGLE_FETCH single_fetch, DB_VALUE * join_dbval, val_list_node * val_list, val_descr * vd, OID * cls_oid, HFID * hfid, regu_variable_list_node * regu_list_pred, PRED_EXPR * pr, regu_variable_list_node * regu_list_rest, int num_attrs_pred, ATTR_ID * attrids_pred, HEAP_CACHE_ATTRINFO * cache_pred, int num_attrs_rest, ATTR_ID * attrids_rest, HEAP_CACHE_ATTRINFO * cache_rest)
|
| int |
scan_open_dblink_scan (THREAD_ENTRY * thread_p, SCAN_ID * scan_id, struct access_spec_node * spec, VAL_DESCR * vd, val_list_node * val_list, DBLINK_HOST_VARS * host_vars)
|
| int |
scan_open_heap_page_scan (THREAD_ENTRY * thread_p, SCAN_ID * scan_id, val_list_node * val_list, val_descr * vd, OID * cls_oid, HFID * hfid, PRED_EXPR * pr, SCAN_TYPE scan_type, DB_VALUE ** cache_page_info, regu_variable_list_node * regu_list_page_info)
|
| int |
scan_open_heap_scan (THREAD_ENTRY * thread_p, SCAN_ID * scan_id, bool mvcc_select_lock_needed, SCAN_OPERATION_TYPE scan_op_type, int fixed, int grouped, QPROC_SINGLE_FETCH single_fetch, DB_VALUE * join_dbval, val_list_node * val_list, val_descr * vd, OID * cls_oid, HFID * hfid, regu_variable_list_node * regu_list_pred, PRED_EXPR * pr, regu_variable_list_node * regu_list_rest, int num_attrs_pred, ATTR_ID * attrids_pred, HEAP_CACHE_ATTRINFO * cache_pred, int num_attrs_rest, ATTR_ID * attrids_rest, HEAP_CACHE_ATTRINFO * cache_rest, SCAN_TYPE scan_type, DB_VALUE ** cache_recordinfo, regu_variable_list_node * regu_list_recordinfo, bool is_partition_table)
|
| int |
scan_open_index_key_info_scan (THREAD_ENTRY * thread_p, SCAN_ID * scan_id, val_list_node * val_list, val_descr * vd, indx_info * indx_info, OID * cls_oid, HFID * hfid, PRED_EXPR * pr, valptr_list_node * output_val_list, bool iscan_oid_order, QUERY_ID query_id, DB_VALUE ** key_info_values, regu_variable_list_node * key_info_regu_list)
|
| int |
scan_open_index_node_info_scan (THREAD_ENTRY * thread_p, SCAN_ID * scan_id, val_list_node * val_list, val_descr * vd, indx_info * indx_info, PRED_EXPR * pr, DB_VALUE ** node_info_values, regu_variable_list_node * node_info_regu_list)
|
| int |
scan_open_index_scan (THREAD_ENTRY * thread_p, SCAN_ID * scan_id, bool mvcc_select_lock_needed, SCAN_OPERATION_TYPE scan_op_type, int fixed, int grouped, QPROC_SINGLE_FETCH single_fetch, DB_VALUE * join_dbval, val_list_node * val_list, val_descr * vd, indx_info * indx_info, OID * cls_oid, HFID * hfid, regu_variable_list_node * regu_list_key, PRED_EXPR * pr_key, regu_variable_list_node * regu_list_pred, PRED_EXPR * pr, regu_variable_list_node * regu_list_rest, PRED_EXPR * pr_range, regu_variable_list_node * regu_list_range, valptr_list_node * output_val_list, regu_variable_list_node * regu_val_list, int num_attrs_key, ATTR_ID * attrids_key, HEAP_CACHE_ATTRINFO * cache_key, int num_attrs_pred, ATTR_ID * attrids_pred, HEAP_CACHE_ATTRINFO * cache_pred, int num_attrs_rest, ATTR_ID * attrids_rest, HEAP_CACHE_ATTRINFO * cache_rest, int num_attrs_range, ATTR_ID * attrids_range, HEAP_CACHE_ATTRINFO * cache_range, bool iscan_oid_order, QUERY_ID query_id, bool min_max_optimzied_scan)
|
| int |
scan_open_json_table_scan (THREAD_ENTRY * thread_p, SCAN_ID * scan_id, int grouped, QPROC_SINGLE_FETCH single_fetch, DB_VALUE * join_dbval, val_list_node * val_list, val_descr * vd, PRED_EXPR * pr)
|
| int |
scan_open_list_scan (THREAD_ENTRY * thread_p, SCAN_ID * scan_id, int grouped, QPROC_SINGLE_FETCH single_fetch, DB_VALUE * join_dbval, val_list_node * val_list, val_descr * vd, QFILE_LIST_ID * list_id, regu_variable_list_node * regu_list_pred, PRED_EXPR * pr, regu_variable_list_node * regu_list_rest, regu_variable_list_node * regu_list_build, regu_variable_list_node * regu_list_probe, int hash_list_scan_yn, bool is_read_only)
|
| int |
scan_open_method_scan (THREAD_ENTRY * thread_p, SCAN_ID * scan_id, int grouped, QPROC_SINGLE_FETCH single_fetch, DB_VALUE * join_dbval, val_list_node * val_list, val_descr * vd, QFILE_LIST_ID * list_id, PL_SIGNATURE_ARRAY_TYPE * meth_sig_list)
|
| int |
scan_open_set_scan (THREAD_ENTRY * thread_p, SCAN_ID * scan_id, int grouped, QPROC_SINGLE_FETCH single_fetch, DB_VALUE * join_dbval, val_list_node * val_list, val_descr * vd, regu_variable_node * set_ptr, regu_variable_list_node * regu_list_pred, PRED_EXPR * pr)
|
| int |
scan_open_showstmt_scan (THREAD_ENTRY * thread_p, SCAN_ID * scan_id, int grouped, QPROC_SINGLE_FETCH single_fetch, DB_VALUE * join_dbval, val_list_node * val_list, val_descr * vd, PRED_EXPR * pr, SHOWSTMT_TYPE show_type, regu_variable_list_node * arg_list)
|
| int |
scan_open_values_scan (THREAD_ENTRY * thread_p, SCAN_ID * scan_id, int grouped, QPROC_SINGLE_FETCH single_fetch, DB_VALUE * join_dbval, val_list_node * val_list, val_descr * vd, valptr_list_node * valptr_list)
|
| SCAN_CODE |
scan_prev_scan (THREAD_ENTRY * thread_p, SCAN_ID * s_id)
|
| void |
scan_print_stats_json (SCAN_ID * scan_id, json_t * stats)
|
| void |
scan_print_stats_text (FILE * fp, SCAN_ID * scan_id)
|
| SCAN_CODE |
scan_reset_scan_block (THREAD_ENTRY * thread_p, SCAN_ID * s_id)
|
| void |
scan_save_scan_pos (SCAN_ID * s_id, SCAN_POS * scan_pos)
|
| int |
scan_start_scan (THREAD_ENTRY * thread_p, SCAN_ID * s_id)
|
| int |
showstmt_end_scan (THREAD_ENTRY * thread_p, SCAN_ID * s_id)
|
| SCAN_CODE |
showstmt_next_scan (THREAD_ENTRY * thread_p, SCAN_ID * s_id)
|
| void |
showstmt_scan_init (void)
|
| int |
showstmt_start_scan (THREAD_ENTRY * thread_p, SCAN_ID * s_id)
|
Macros
| Type |
Name |
| define |
IDX_COV_DEFAULT_TUPLES 200
|
| define |
SCAN_IS_INDEX_COVERED (iscan_id_p) (([**iscan\_id\_p**](broker__monitor_8c.md#function-timeout))->[**indx\_cov.list\_id**](structindx__cov.md#variable-list_id) != [**NULL**](freelistheap_8h.md#define-null))
|
| define |
SCAN_IS_INDEX_ILS (iscan_id_p) /* multi line expression */
|
| define |
SCAN_IS_INDEX_ISS (iscan_id_p) (([**iscan\_id\_p**](broker__monitor_8c.md#function-timeout))->iss.use)
|
| define |
SCAN_IS_INDEX_MRO (iscan_id_p) (([**iscan\_id\_p**](broker__monitor_8c.md#function-timeout))->[**multi\_range\_opt.use**](structmulti__range__opt.md#variable-use))
|
Public Types Documentation
typedef DBLINK_SCAN_ID
typedef struct dblink_scan_id DBLINK_SCAN_ID;
typedef HEAP_PAGE_SCAN_ID
typedef struct heap_page_scan_id HEAP_PAGE_SCAN_ID;
typedef HEAP_SCAN_ID
typedef struct heap_scan_id HEAP_SCAN_ID;
typedef INDEX_NODE_SCAN_ID
typedef struct index_node_scan_id INDEX_NODE_SCAN_ID;
typedef INDEX_SKIP_SCAN
typedef struct index_skip_scan INDEX_SKIP_SCAN;
typedef INDX_COV
typedef struct indx_cov INDX_COV;
typedef INDX_INFO
typedef struct indx_info INDX_INFO;
enum ISS_OP_TYPE
enum ISS_OP_TYPE {
ISS_OP_NONE,
ISS_OP_GET_FIRST_KEY,
ISS_OP_DO_RANGE_SEARCH,
ISS_OP_SEARCH_NEXT_DISTINCT_KEY
};
typedef LLIST_SCAN_ID
typedef struct llist_scan_id LLIST_SCAN_ID;
typedef MULTI_RANGE_OPT
typedef struct multi_range_opt MULTI_RANGE_OPT;
typedef PARALLEL_HEAP_SCAN_ID
typedef struct parallel_heap_scan_id PARALLEL_HEAP_SCAN_ID;
typedef PRED_EXPR
using PRED_EXPR = cubxasl::pred_expr;
typedef RANGE_OPT_ITEM
typedef struct range_opt_item RANGE_OPT_ITEM;
typedef REGU_VALUES_SCAN_ID
typedef struct regu_values_scan_id REGU_VALUES_SCAN_ID;
typedef SCAN_AGL
typedef struct scan_agl SCAN_AGL;
typedef SCAN_ID
typedef struct scan_id_struct SCAN_ID;
typedef SCAN_POS
typedef struct scan_pos SCAN_POS;
typedef SCAN_STATS
typedef struct scan_stats SCAN_STATS;
enum SCAN_TYPE
enum SCAN_TYPE {
S_HEAP_SCAN = 1,
S_PARALLEL_HEAP_SCAN,
S_CLASS_ATTR_SCAN,
S_INDX_SCAN,
S_LIST_SCAN,
S_SET_SCAN,
S_JSON_TABLE_SCAN,
S_METHOD_SCAN,
S_VALUES_SCAN,
S_SHOWSTMT_SCAN,
S_HEAP_SCAN_RECORD_INFO,
S_HEAP_PAGE_SCAN,
S_INDX_KEY_INFO_SCAN,
S_INDX_NODE_INFO_SCAN,
S_DBLINK_SCAN,
S_HEAP_SAMPLING_SCAN
};
typedef SET_SCAN_ID
typedef struct set_scan_id SET_SCAN_ID;
typedef SHOWSTMT_SCAN_ID
typedef struct showstmt_scan_id SHOWSTMT_SCAN_ID;
typedef VAL_DESCR
typedef struct val_descr VAL_DESCR;
Public Functions Documentation
function scan_close_scan
void scan_close_scan (
THREAD_ENTRY * thread_p,
SCAN_ID * s_id
)
function scan_end_scan
void scan_end_scan (
THREAD_ENTRY * thread_p,
SCAN_ID * s_id
)
function scan_finalize
void scan_finalize (
void
)
function scan_init_index_scan
void scan_init_index_scan (
INDX_SCAN_ID * isidp,
struct btree_iscan_oid_list * oid_list,
MVCC_SNAPSHOT * mvcc_snapshot
)
function scan_init_iss
int scan_init_iss (
INDX_SCAN_ID * isidp
)
function scan_initialize
int scan_initialize (
void
)
function scan_jump_scan_pos
SCAN_CODE scan_jump_scan_pos (
THREAD_ENTRY * thread_p,
SCAN_ID * s_id,
SCAN_POS * scan_pos
)
function scan_next_scan
SCAN_CODE scan_next_scan (
THREAD_ENTRY * thread_p,
SCAN_ID * s_id
)
function scan_next_scan_block
SCAN_CODE scan_next_scan_block (
THREAD_ENTRY * thread_p,
SCAN_ID * s_id
)
function scan_open_class_attr_scan
int scan_open_class_attr_scan (
THREAD_ENTRY * thread_p,
SCAN_ID * scan_id,
int grouped,
QPROC_SINGLE_FETCH single_fetch,
DB_VALUE * join_dbval,
val_list_node * val_list,
val_descr * vd,
OID * cls_oid,
HFID * hfid,
regu_variable_list_node * regu_list_pred,
PRED_EXPR * pr,
regu_variable_list_node * regu_list_rest,
int num_attrs_pred,
ATTR_ID * attrids_pred,
HEAP_CACHE_ATTRINFO * cache_pred,
int num_attrs_rest,
ATTR_ID * attrids_rest,
HEAP_CACHE_ATTRINFO * cache_rest
)
function scan_open_dblink_scan
int scan_open_dblink_scan (
THREAD_ENTRY * thread_p,
SCAN_ID * scan_id,
struct access_spec_node * spec,
VAL_DESCR * vd,
val_list_node * val_list,
DBLINK_HOST_VARS * host_vars
)
function scan_open_heap_page_scan
int scan_open_heap_page_scan (
THREAD_ENTRY * thread_p,
SCAN_ID * scan_id,
val_list_node * val_list,
val_descr * vd,
OID * cls_oid,
HFID * hfid,
PRED_EXPR * pr,
SCAN_TYPE scan_type,
DB_VALUE ** cache_page_info,
regu_variable_list_node * regu_list_page_info
)
function scan_open_heap_scan
int scan_open_heap_scan (
THREAD_ENTRY * thread_p,
SCAN_ID * scan_id,
bool mvcc_select_lock_needed,
SCAN_OPERATION_TYPE scan_op_type,
int fixed,
int grouped,
QPROC_SINGLE_FETCH single_fetch,
DB_VALUE * join_dbval,
val_list_node * val_list,
val_descr * vd,
OID * cls_oid,
HFID * hfid,
regu_variable_list_node * regu_list_pred,
PRED_EXPR * pr,
regu_variable_list_node * regu_list_rest,
int num_attrs_pred,
ATTR_ID * attrids_pred,
HEAP_CACHE_ATTRINFO * cache_pred,
int num_attrs_rest,
ATTR_ID * attrids_rest,
HEAP_CACHE_ATTRINFO * cache_rest,
SCAN_TYPE scan_type,
DB_VALUE ** cache_recordinfo,
regu_variable_list_node * regu_list_recordinfo,
bool is_partition_table
)
function scan_open_index_key_info_scan
int scan_open_index_key_info_scan (
THREAD_ENTRY * thread_p,
SCAN_ID * scan_id,
val_list_node * val_list,
val_descr * vd,
indx_info * indx_info,
OID * cls_oid,
HFID * hfid,
PRED_EXPR * pr,
valptr_list_node * output_val_list,
bool iscan_oid_order,
QUERY_ID query_id,
DB_VALUE ** key_info_values,
regu_variable_list_node * key_info_regu_list
)
function scan_open_index_node_info_scan
int scan_open_index_node_info_scan (
THREAD_ENTRY * thread_p,
SCAN_ID * scan_id,
val_list_node * val_list,
val_descr * vd,
indx_info * indx_info,
PRED_EXPR * pr,
DB_VALUE ** node_info_values,
regu_variable_list_node * node_info_regu_list
)
function scan_open_index_scan
int scan_open_index_scan (
THREAD_ENTRY * thread_p,
SCAN_ID * scan_id,
bool mvcc_select_lock_needed,
SCAN_OPERATION_TYPE scan_op_type,
int fixed,
int grouped,
QPROC_SINGLE_FETCH single_fetch,
DB_VALUE * join_dbval,
val_list_node * val_list,
val_descr * vd,
indx_info * indx_info,
OID * cls_oid,
HFID * hfid,
regu_variable_list_node * regu_list_key,
PRED_EXPR * pr_key,
regu_variable_list_node * regu_list_pred,
PRED_EXPR * pr,
regu_variable_list_node * regu_list_rest,
PRED_EXPR * pr_range,
regu_variable_list_node * regu_list_range,
valptr_list_node * output_val_list,
regu_variable_list_node * regu_val_list,
int num_attrs_key,
ATTR_ID * attrids_key,
HEAP_CACHE_ATTRINFO * cache_key,
int num_attrs_pred,
ATTR_ID * attrids_pred,
HEAP_CACHE_ATTRINFO * cache_pred,
int num_attrs_rest,
ATTR_ID * attrids_rest,
HEAP_CACHE_ATTRINFO * cache_rest,
int num_attrs_range,
ATTR_ID * attrids_range,
HEAP_CACHE_ATTRINFO * cache_range,
bool iscan_oid_order,
QUERY_ID query_id,
bool min_max_optimzied_scan
)
function scan_open_json_table_scan
int scan_open_json_table_scan (
THREAD_ENTRY * thread_p,
SCAN_ID * scan_id,
int grouped,
QPROC_SINGLE_FETCH single_fetch,
DB_VALUE * join_dbval,
val_list_node * val_list,
val_descr * vd,
PRED_EXPR * pr
)
function scan_open_list_scan
int scan_open_list_scan (
THREAD_ENTRY * thread_p,
SCAN_ID * scan_id,
int grouped,
QPROC_SINGLE_FETCH single_fetch,
DB_VALUE * join_dbval,
val_list_node * val_list,
val_descr * vd,
QFILE_LIST_ID * list_id,
regu_variable_list_node * regu_list_pred,
PRED_EXPR * pr,
regu_variable_list_node * regu_list_rest,
regu_variable_list_node * regu_list_build,
regu_variable_list_node * regu_list_probe,
int hash_list_scan_yn,
bool is_read_only
)
function scan_open_method_scan
int scan_open_method_scan (
THREAD_ENTRY * thread_p,
SCAN_ID * scan_id,
int grouped,
QPROC_SINGLE_FETCH single_fetch,
DB_VALUE * join_dbval,
val_list_node * val_list,
val_descr * vd,
QFILE_LIST_ID * list_id,
PL_SIGNATURE_ARRAY_TYPE * meth_sig_list
)
function scan_open_set_scan
int scan_open_set_scan (
THREAD_ENTRY * thread_p,
SCAN_ID * scan_id,
int grouped,
QPROC_SINGLE_FETCH single_fetch,
DB_VALUE * join_dbval,
val_list_node * val_list,
val_descr * vd,
regu_variable_node * set_ptr,
regu_variable_list_node * regu_list_pred,
PRED_EXPR * pr
)
function scan_open_showstmt_scan
int scan_open_showstmt_scan (
THREAD_ENTRY * thread_p,
SCAN_ID * scan_id,
int grouped,
QPROC_SINGLE_FETCH single_fetch,
DB_VALUE * join_dbval,
val_list_node * val_list,
val_descr * vd,
PRED_EXPR * pr,
SHOWSTMT_TYPE show_type,
regu_variable_list_node * arg_list
)
function scan_open_values_scan
int scan_open_values_scan (
THREAD_ENTRY * thread_p,
SCAN_ID * scan_id,
int grouped,
QPROC_SINGLE_FETCH single_fetch,
DB_VALUE * join_dbval,
val_list_node * val_list,
val_descr * vd,
valptr_list_node * valptr_list
)
function scan_prev_scan
SCAN_CODE scan_prev_scan (
THREAD_ENTRY * thread_p,
SCAN_ID * s_id
)
function scan_print_stats_json
void scan_print_stats_json (
SCAN_ID * scan_id,
json_t * stats
)
function scan_print_stats_text
void scan_print_stats_text (
FILE * fp,
SCAN_ID * scan_id
)
function scan_reset_scan_block
SCAN_CODE scan_reset_scan_block (
THREAD_ENTRY * thread_p,
SCAN_ID * s_id
)
function scan_save_scan_pos
void scan_save_scan_pos (
SCAN_ID * s_id,
SCAN_POS * scan_pos
)
function scan_start_scan
int scan_start_scan (
THREAD_ENTRY * thread_p,
SCAN_ID * s_id
)
function showstmt_end_scan
int showstmt_end_scan (
THREAD_ENTRY * thread_p,
SCAN_ID * s_id
)
function showstmt_next_scan
SCAN_CODE showstmt_next_scan (
THREAD_ENTRY * thread_p,
SCAN_ID * s_id
)
function showstmt_scan_init
void showstmt_scan_init (
void
)
function showstmt_start_scan
int showstmt_start_scan (
THREAD_ENTRY * thread_p,
SCAN_ID * s_id
)
Macro Definition Documentation
define IDX_COV_DEFAULT_TUPLES
#define IDX_COV_DEFAULT_TUPLES `200`
define SCAN_IS_INDEX_COVERED
#define SCAN_IS_INDEX_COVERED (
iscan_id_p
) `(( iscan_id_p )-> indx_cov.list_id != NULL )`
define SCAN_IS_INDEX_ILS
#define SCAN_IS_INDEX_ILS (
iscan_id_p
) `/* multi line expression */`
define SCAN_IS_INDEX_ISS
#define SCAN_IS_INDEX_ISS (
iscan_id_p
) `(( iscan_id_p )->iss.use)`
define SCAN_IS_INDEX_MRO
#define SCAN_IS_INDEX_MRO (
iscan_id_p
) `(( iscan_id_p )-> multi_range_opt.use )`
The documentation for this class was generated from the following file cubrid/src/query/scan_manager.h