24 #ifndef _SCAN_MANAGER_H_ 25 #define _SCAN_MANAGER_H_ 29 #if !defined (SERVER_MODE) && !defined (SA_MODE) 30 #error Belongs to server module 34 #if defined(SERVER_MODE) 73 #define IDX_COV_DEFAULT_TUPLES 200 306 struct timeval elapsed_scan;
319 struct timeval elapsed_lookup;
326 struct timeval elapsed_hash_build;
369 #define SCAN_IS_INDEX_COVERED(iscan_id_p) \ 370 ((iscan_id_p)->indx_cov.list_id != NULL) 371 #define SCAN_IS_INDEX_MRO(iscan_id_p) ((iscan_id_p)->multi_range_opt.use) 372 #define SCAN_IS_INDEX_ISS(iscan_id_p) ((iscan_id_p)->iss.use) 373 #define SCAN_IS_INDEX_ILS(iscan_id_p) \ 374 ((iscan_id_p)->indx_info != NULL \ 375 && (iscan_id_p)->indx_info->ils_prefix_len > 0) 422 valptr_list_node * output_val_list,
bool iscan_oid_order, QUERY_ID query_id,
481 int btree_num_attrs,
ATTR_ID * btree_attr_ids,
int *num_vstr_ptr,
489 #if defined(SERVER_MODE) 490 extern void scan_print_stats_json (
SCAN_ID * scan_id, json_t * stats);
491 extern void scan_print_stats_text (FILE * fp,
SCAN_ID * scan_id);
QPROC_QUALIFICATION qualification
regu_variable_node * set_ptr
REGU_VALUES_SCAN_ID rvsid
void scan_end_scan(THREAD_ENTRY *thread_p, SCAN_ID *s_id)
void scan_save_scan_pos(SCAN_ID *s_id, SCAN_POS *scan_pos)
regu_variable_list_node * rest_regu_list
DB_VALUE ** key_info_values
METHOD_SCAN_BUFFER scan_buf
QFILE_TUPLE_POSITION ls_tplpos
SCAN_OPERATION_TYPE scan_op_type
DB_BIGINT key_limit_lower
valptr_list_node * output_val_list
void showstmt_scan_init(void)
QFILE_TUPLE_VALUE_TYPE_LIST * type_list
DB_VALUE ** cache_page_info
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)
MULTI_RANGE_OPT multi_range_opt
DB_BIGINT key_limit_upper
int scan_start_scan(THREAD_ENTRY *thread_p, SCAN_ID *s_id)
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)
QFILE_TUPLE_RECORD * tplrec
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)
DISK_ISVALID not_vacuumed_res
DB_VALUE ** cache_recordinfo
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, method_sig_list *meth_sig_list)
SCAN_CODE scan_next_scan_block(THREAD_ENTRY *thread_p, SCAN_ID *s_id)
bool mvcc_select_lock_needed
regu_variable_list_node * regu_list
HEAP_SCANCACHE scan_cache
key_range * skipped_range
regu_variable_list_node * key_info_regu_list
bool scan_immediately_stop
SCAN_CODE scan_next_scan(THREAD_ENTRY *thread_p, SCAN_ID *s_id)
RANGE_OPT_ITEM ** top_n_items
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)
regu_variable_list_node * regu_val_list
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)
SCAN_CODE scan_prev_scan(THREAD_ENTRY *thread_p, SCAN_ID *s_id)
HEAP_SCANCACHE scan_cache
int scan_initialize(void)
QFILE_LIST_SCAN_ID * lsid
SCAN_CODE scan_reset_scan_block(THREAD_ENTRY *thread_p, SCAN_ID *s_id)
TP_DOMAIN ** sort_col_dom
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)
QFILE_TUPLE_RECORD tplrec
regu_variable_list_node * operand
regu_variable_list_node * rest_regu_list
int showstmt_start_scan(THREAD_ENTRY *thread_p, SCAN_ID *s_id)
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)
QFILE_TUPLE_RECORD * tplrecp
DB_VALUE * fetched_values
regu_variable_list_node * recordinfo_regu_list
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_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)
int * bt_attrs_prefix_length
regu_variable_list_node * page_info_regu_list
regu_variable_list_node * rest_regu_list
int showstmt_end_scan(THREAD_ENTRY *thread_p, SCAN_ID *s_id)
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)
SCAN_CODE scan_jump_scan_pos(THREAD_ENTRY *thread_p, SCAN_ID *s_id, SCAN_POS *scan_pos)
DB_VALUE ** node_info_values
HEAP_SCANRANGE scan_range
QPROC_SINGLE_FETCH single_fetch
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)
void scan_init_filter_info(FILTER_INFO *filter_info_p, SCAN_PRED *scan_pred, SCAN_ATTRS *scan_attrs, val_list_node *val_list, val_descr *val_descr, OID *class_oid, int btree_num_attrs, ATTR_ID *btree_attr_ids, int *num_vstr_ptr, ATTR_ID *vstr_ids)
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)
BTREE_ISCAN_OID_LIST * oid_list
SCAN_CODE showstmt_next_scan(THREAD_ENTRY *thread_p, SCAN_ID *s_id)
regu_variable_list_node * node_info_regu_list
void scan_close_scan(THREAD_ENTRY *thread_p, SCAN_ID *s_id)