CUBRID Engine
latest
|
#include <time.h>
#include "btree.h"
#include "heap_file.h"
#include "method_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"
Go to the source code of this file.
Classes | |
struct | heap_scan_id |
struct | heap_page_scan_id |
struct | indx_cov |
struct | range_opt_item |
struct | multi_range_opt |
struct | index_skip_scan |
struct | indx_scan_id |
struct | index_node_scan_id |
struct | llist_scan_id |
struct | showstmt_scan_id |
struct | regu_values_scan_id |
struct | set_scan_id |
struct | va_scan_id |
struct | scan_pos |
struct | scan_stats |
struct | scan_id_struct |
Namespaces | |
cubxasl | |
Macros | |
#define | IDX_COV_DEFAULT_TUPLES 200 |
#define | SCAN_IS_INDEX_COVERED(iscan_id_p) ((iscan_id_p)->indx_cov.list_id != NULL) |
#define | SCAN_IS_INDEX_MRO(iscan_id_p) ((iscan_id_p)->multi_range_opt.use) |
#define | SCAN_IS_INDEX_ISS(iscan_id_p) ((iscan_id_p)->iss.use) |
#define | SCAN_IS_INDEX_ILS(iscan_id_p) |
Typedefs | |
typedef struct indx_info | INDX_INFO |
typedef struct val_descr | VAL_DESCR |
using | PRED_EXPR = cubxasl::pred_expr |
typedef struct heap_scan_id | HEAP_SCAN_ID |
typedef struct heap_page_scan_id | HEAP_PAGE_SCAN_ID |
typedef struct indx_cov | INDX_COV |
typedef struct range_opt_item | RANGE_OPT_ITEM |
typedef struct multi_range_opt | MULTI_RANGE_OPT |
typedef struct index_skip_scan | INDEX_SKIP_SCAN |
typedef struct index_node_scan_id | INDEX_NODE_SCAN_ID |
typedef struct llist_scan_id | LLIST_SCAN_ID |
typedef struct showstmt_scan_id | SHOWSTMT_SCAN_ID |
typedef struct regu_values_scan_id | REGU_VALUES_SCAN_ID |
typedef struct set_scan_id | SET_SCAN_ID |
typedef struct va_scan_id | VA_SCAN_ID |
typedef struct scan_pos | SCAN_POS |
typedef struct scan_stats | SCAN_STATS |
typedef struct scan_id_struct | SCAN_ID |
#define IDX_COV_DEFAULT_TUPLES 200 |
Definition at line 73 of file scan_manager.h.
Referenced by scan_init_indx_coverage().
#define SCAN_IS_INDEX_COVERED | ( | iscan_id_p | ) | ((iscan_id_p)->indx_cov.list_id != NULL) |
Definition at line 369 of file scan_manager.h.
Referenced by qexec_intprt_fnc(), scan_next_index_lookup_heap(), and scan_next_index_scan().
#define SCAN_IS_INDEX_ILS | ( | iscan_id_p | ) |
Definition at line 373 of file scan_manager.h.
#define SCAN_IS_INDEX_ISS | ( | iscan_id_p | ) | ((iscan_id_p)->iss.use) |
Definition at line 372 of file scan_manager.h.
#define SCAN_IS_INDEX_MRO | ( | iscan_id_p | ) | ((iscan_id_p)->multi_range_opt.use) |
Definition at line 371 of file scan_manager.h.
Referenced by qexec_intprt_fnc().
typedef struct heap_page_scan_id HEAP_PAGE_SCAN_ID |
Definition at line 112 of file scan_manager.h.
typedef struct heap_scan_id HEAP_SCAN_ID |
Definition at line 93 of file scan_manager.h.
typedef struct index_node_scan_id INDEX_NODE_SCAN_ID |
Definition at line 235 of file scan_manager.h.
typedef struct index_skip_scan INDEX_SKIP_SCAN |
Definition at line 177 of file scan_manager.h.
Definition at line 123 of file scan_manager.h.
Definition at line 51 of file scan_manager.h.
typedef struct llist_scan_id LLIST_SCAN_ID |
Definition at line 246 of file scan_manager.h.
typedef struct multi_range_opt MULTI_RANGE_OPT |
Definition at line 148 of file scan_manager.h.
using PRED_EXPR = cubxasl::pred_expr |
Definition at line 66 of file scan_manager.h.
typedef struct range_opt_item RANGE_OPT_ITEM |
Definition at line 141 of file scan_manager.h.
typedef struct regu_values_scan_id REGU_VALUES_SCAN_ID |
Definition at line 270 of file scan_manager.h.
typedef struct scan_id_struct SCAN_ID |
Definition at line 329 of file scan_manager.h.
Definition at line 295 of file scan_manager.h.
typedef struct scan_stats SCAN_STATS |
Definition at line 303 of file scan_manager.h.
typedef struct set_scan_id SET_SCAN_ID |
Definition at line 277 of file scan_manager.h.
typedef struct showstmt_scan_id SHOWSTMT_SCAN_ID |
Definition at line 257 of file scan_manager.h.
typedef struct va_scan_id VA_SCAN_ID |
Definition at line 288 of file scan_manager.h.
Definition at line 58 of file scan_manager.h.
enum ISS_OP_TYPE |
Enumerator | |
---|---|
ISS_OP_NONE | |
ISS_OP_GET_FIRST_KEY | |
ISS_OP_DO_RANGE_SEARCH | |
ISS_OP_SEARCH_NEXT_DISTINCT_KEY |
Definition at line 168 of file scan_manager.h.
enum SCAN_TYPE |
Definition at line 75 of file scan_manager.h.
void scan_close_scan | ( | THREAD_ENTRY * | thread_p, |
SCAN_ID * | s_id | ||
) |
Definition at line 4719 of file scan_manager.c.
References showstmt_scan_id::arg_values, indx_scan_id::bt_attr_ids, indx_scan_id::bt_attrs_prefix_length, indx_scan_id::bt_num_attrs, multi_range_opt::buffer, indx_scan_id::copy_buf, db_private_free_and_init, qfile_tuple_value_type_list::domp, indx_scan_id::fetched_values, hash_list_scan::hash_list_scan_yn, hash_list_scan::hash_table, llist_scan_id::hlsid, i, range_opt_item::index_value, indx_scan_id::indx_cov, multi_range_opt::is_desc_order, scan_id_struct::isid, indx_scan_id::key_vals, indx_cov::list_id, llist_scan_id::list_id, scan_id_struct::llsid, indx_cov::lsid, method_close_scan(), mht_clear_hls(), mht_destroy_hls(), mht_dump_hls(), indx_scan_id::multi_range_opt, NULL, indx_scan_id::oid_list, showstmt_scan_id::out_values, qfile_list_id::page_cnt, pr_clear_value(), qdata_free_hscan_entry(), qdata_free_hscan_key(), qdata_print_hash_scan_entry(), qfile_close_list(), qfile_close_scan(), qfile_destroy_list(), QFILE_FREE_AND_INIT_LIST_ID, scan_id_struct::s, S_CLASS_ATTR_SCAN, S_CLOSED, S_HEAP_PAGE_SCAN, S_HEAP_SCAN, S_HEAP_SCAN_RECORD_INFO, S_INDX_SCAN, S_JSON_TABLE_SCAN, S_LIST_SCAN, S_METHOD_SCAN, S_SET_SCAN, S_SHOWSTMT_SCAN, S_VALUES_SCAN, va_scan_id::scan_buf, scan_free_iscan_oid_buf_list(), multi_range_opt::size, multi_range_opt::sort_att_idx, multi_range_opt::sort_col_dom, scan_id_struct::status, scan_id_struct::stsid, hash_list_scan::temp_key, hash_list_scan::temp_new_key, multi_range_opt::top_n_items, qfile_tuple_record::tpl, indx_cov::tplrec, multi_range_opt::tplrec, qfile_list_id::tuple_cnt, scan_id_struct::type, indx_cov::type_list, scan_id_struct::vaid, hash_scan_key::val_count, and indx_scan_id::vstr_ids.
Referenced by qexec_clear_xasl(), qexec_close_scan(), qexec_init_next_partition(), and qexec_merge_fnc().
void scan_end_scan | ( | THREAD_ENTRY * | thread_p, |
SCAN_ID * | s_id | ||
) |
Definition at line 4594 of file scan_manager.c.
References indx_scan_id::bt_scan, btree_scan_clear_key(), indx_scan_id::curr_keyno, scan_id_struct::direction, cubscan::json_table::scanner::end(), scan_id_struct::grouped, heap_scancache_end(), heap_scanrange_end(), scan_id_struct::hsid, i, scan_id_struct::isid, scan_id_struct::jtid, indx_scan_id::key_cnt, indx_scan_id::key_vals, scan_id_struct::llsid, llist_scan_id::lsid, NULL, pr_clear_value(), qfile_close_scan(), qfile_end_scan_fix(), scan_id_struct::rvsid, scan_id_struct::s, S_BACKWARD, S_CLASS_ATTR_SCAN, S_CLOSED, S_ENDED, S_FORWARD, S_HEAP_SCAN, S_HEAP_SCAN_RECORD_INFO, S_INDX_SCAN, S_JSON_TABLE_SCAN, S_LIST_SCAN, S_METHOD_SCAN, S_SET_SCAN, S_SHOWSTMT_SCAN, S_VALUES_SCAN, heap_scan_id::scan_cache, indx_scan_id::scan_cache, scan_init_iss(), heap_scan_id::scan_range, heap_scan_id::scancache_inited, indx_scan_id::scancache_inited, heap_scan_id::scanrange_inited, set_scan_id::set, showstmt_end_scan(), scan_id_struct::ssid, scan_id_struct::status, and scan_id_struct::type.
Referenced by qexec_clear_xasl(), qexec_end_scan(), qexec_init_next_partition(), qexec_merge_fnc(), qexec_merge_list_outer(), qexec_next_merge_block(), qexec_next_scan_block(), qexec_next_scan_block_iterations(), and scan_open_list_scan().
void scan_finalize | ( | void | ) |
Definition at line 7294 of file scan_manager.c.
References btree_iscan_oid_list::next_list, NULL, scan_free_oid_list(), and scan_Iscan_oid_buf_list.
Referenced by qmgr_finalize(), and scan_initialize().
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 | ||
) |
Definition at line 660 of file scan_manager.c.
References assert, filter_info::btree_attr_ids, filter_info::btree_num_attrs, filter_info::class_oid, filter_info::func_idx_col_id, NULL, filter_info::num_vstr_ptr, filter_info::scan_attrs, filter_info::scan_pred, filter_info::val_descr, filter_info::val_list, and filter_info::vstr_ids.
Referenced by cubquery::upddel_mvcc_cond_reeval::init(), scan_get_index_oidset(), scan_next_class_attr_scan(), scan_next_heap_page_scan(), scan_next_heap_scan(), scan_next_index_key_info_scan(), scan_next_index_node_info_scan(), and scan_next_index_scan().
void scan_init_index_scan | ( | INDX_SCAN_ID * | isidp, |
struct btree_iscan_oid_list * | oid_list, | ||
MVCC_SNAPSHOT * | mvcc_snapshot | ||
) |
Definition at line 283 of file scan_manager.c.
References assert, indx_scan_id::check_not_vacuumed, indx_scan_id::copy_buf, indx_scan_id::copy_buf_len, DISK_VALID, indx_scan_id::indx_cov, indx_scan_id::indx_info, indx_scan_id::multi_range_opt, heap_scancache::mvcc_snapshot, indx_scan_id::need_count_only, indx_scan_id::not_vacuumed_res, NULL, indx_scan_id::oid_list, indx_scan_id::scan_cache, and scan_init_iss().
Referenced by btree_keyoid_checkscan_check(), btree_load_check_fk(), locator_check_btree_entries(), locator_check_primary_key_delete(), locator_check_primary_key_update(), locator_check_unique_btree_entries(), and locator_prefetch_index_page_internal().
int scan_init_iss | ( | INDX_SCAN_ID * | isidp | ) |
Definition at line 214 of file scan_manager.c.
References ARG_FILE_LINE, assert_release, index_skip_scan::current_op, DB_IS_NULL, db_make_null(), ER_FAILED, ER_FATAL_ERROR_SEVERITY, ER_GENERIC_ERROR, er_set(), regu_variable_node::regu_data_value::funcp, indx_scan_id::indx_info, indx_scan_id::iss, ISS_OP_NONE, indx_info::iss_range, key_range::key1, NO_ERROR, NULL, function_node::operand, pr_clear_value(), index_skip_scan::skipped_range, TYPE_DBVAL, index_skip_scan::use, indx_info::use_iss, regu_variable_node::value, and regu_variable_list_node::value.
Referenced by locator_check_btree_entries(), scan_end_scan(), scan_init_index_scan(), scan_open_index_key_info_scan(), scan_open_index_scan(), and scan_reset_scan_block().
int scan_initialize | ( | void | ) |
Definition at line 7251 of file scan_manager.c.
References assert, ASSERT_ERROR, btree_iscan_oid_list::capacity, i, btree_iscan_oid_list::next_list, NO_ERROR, NULL, btree_iscan_oid_list::oidp, scan_alloc_oid_list(), scan_finalize(), scan_Iscan_oid_buf_list, and SCAN_ISCAN_OID_BUF_LIST_DEFAULT_SIZE.
Referenced by qmgr_initialize().
SCAN_CODE scan_jump_scan_pos | ( | THREAD_ENTRY * | thread_p, |
SCAN_ID * | s_id, | ||
SCAN_POS * | scan_pos | ||
) |
Definition at line 7126 of file scan_manager.c.
References fetch_val_list(), scan_id_struct::llsid, scan_pos::ls_tplpos, llist_scan_id::lsid, NO_ERROR, NULL, PEEK, scan_pos::position, scan_id_struct::position, scan_pred::pr_eval_fnc, scan_pred::pred_expr, qfile_jump_scan_tuple_position(), qfile_scan_list_next(), QPROC_NOT_QUALIFIED, QPROC_QUALIFIED, QPROC_QUALIFIED_OR_NOT, scan_id_struct::qualification, scan_pred::regu_list, llist_scan_id::rest_regu_list, scan_id_struct::s, S_AFTER, S_END, S_ERROR, S_SUCCESS, llist_scan_id::scan_pred, qfile_tuple_record::size, scan_pos::status, scan_id_struct::status, qfile_tuple_record::tpl, llist_scan_id::tplrecp, V_ERROR, V_FALSE, V_TRUE, scan_id_struct::val_list, and scan_id_struct::vd.
Referenced by qexec_merge_list_outer().
SCAN_CODE scan_next_scan | ( | THREAD_ENTRY * | thread_p, |
SCAN_ID * | s_id | ||
) |
Definition at line 6964 of file scan_manager.c.
References scan_handle_single_scan(), and scan_next_scan_local().
Referenced by qexec_execute_connect_by(), qexec_execute_delete(), qexec_execute_insert(), qexec_execute_scan(), qexec_execute_update(), qexec_intprt_fnc(), and qexec_merge_fnc().
SCAN_CODE scan_next_scan_block | ( | THREAD_ENTRY * | thread_p, |
SCAN_ID * | s_id | ||
) |
Definition at line 4453 of file scan_manager.c.
References ARG_FILE_LINE, assert, indx_scan_id::bt_scan, BTREE_END_OF_SCAN, indx_scan_id::curr_oidno, scan_id_struct::direction, ER_ERROR_SEVERITY, ER_QPROC_INVALID_XASLNODE, er_set(), scan_id_struct::grouped, heap_scanrange_to_following(), heap_scanrange_to_prior(), scan_id_struct::hsid, indx_scan_id::indx_info, indx_scan_id::iscan_oid_order, scan_id_struct::isid, NO_ERROR, NULL, scan_id_struct::null_fetched, indx_scan_id::oids_count, indx_scan_id::one_range, scan_id_struct::position, scan_id_struct::qualified_block, R_KEYLIST, R_RANGELIST, indx_info::range_type, scan_id_struct::s, S_AFTER, S_BACKWARD, S_BEFORE, S_CLASS_ATTR_SCAN, S_END, S_ERROR, S_FORWARD, S_HEAP_PAGE_SCAN, S_HEAP_SCAN, S_HEAP_SCAN_RECORD_INFO, S_INDX_KEY_INFO_SCAN, S_INDX_NODE_INFO_SCAN, S_INDX_SCAN, S_JSON_TABLE_SCAN, S_LIST_SCAN, S_METHOD_SCAN, S_ON, S_SET_SCAN, S_SHOWSTMT_SCAN, S_SUCCESS, S_VALUES_SCAN, scan_get_index_oidset(), heap_scan_id::scan_range, scan_id_struct::single_fetched, and scan_id_struct::type.
Referenced by qexec_next_merge_block(), and qexec_next_scan_block().
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 | ||
) |
Definition at line 2933 of file scan_manager.c.
References heap_scan_id::cls_oid, COPY_OID, heap_scan_id::curr_oid, DB_TYPE_NULL, eval_fnc(), heap_scan_id::hfid, scan_id_struct::hsid, NO_ERROR, NULL, heap_scan_id::pred_attrs, heap_scan_id::rest_attrs, heap_scan_id::rest_regu_list, scan_id_struct::s, S_CLASS_ATTR_SCAN, S_SELECT, scan_init_scan_attrs(), scan_init_scan_id(), scan_init_scan_pred(), heap_scan_id::scan_pred, heap_scan_id::scancache_inited, heap_scan_id::scanrange_inited, scan_id_struct::type, and UT_CAST_TO_NULL_HEAP_OID.
Referenced by qexec_init_next_partition(), and qexec_open_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 | ||
) |
Definition at line 2884 of file scan_manager.c.
References heap_page_scan_id::cache_page_info, heap_page_scan_id::cls_oid, COPY_OID, heap_page_scan_id::curr_vpid, DB_TYPE_NULL, eval_fnc(), heap_page_scan_id::hfid, scan_id_struct::hpsid, NO_ERROR, NULL, heap_page_scan_id::page_info_regu_list, QPROC_NO_SINGLE_INNER, scan_id_struct::s, S_SELECT, scan_init_scan_id(), scan_init_scan_pred(), heap_page_scan_id::scan_pred, scan_id_struct::type, and VPID_SET_NULL.
Referenced by qexec_init_next_partition(), and qexec_open_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 | ||
) |
Definition at line 2811 of file scan_manager.c.
References assert, heap_scan_id::cache_recordinfo, heap_scan_id::cls_oid, COPY_OID, heap_scan_id::curr_oid, DB_TYPE_NULL, eval_fnc(), heap_scan_id::hfid, scan_id_struct::hsid, NO_ERROR, NULL, heap_scan_id::pred_attrs, heap_scan_id::recordinfo_regu_list, heap_scan_id::rest_attrs, heap_scan_id::rest_regu_list, scan_id_struct::s, S_HEAP_SCAN, S_HEAP_SCAN_RECORD_INFO, scan_init_scan_attrs(), scan_init_scan_id(), scan_init_scan_pred(), heap_scan_id::scan_pred, heap_scan_id::scancache_inited, heap_scan_id::scanrange_inited, scan_id_struct::type, and UT_CAST_TO_NULL_HEAP_OID.
Referenced by qexec_init_next_partition(), and qexec_open_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 | ||
) |
Definition at line 3386 of file scan_manager.c.
References assert, indx_scan_id::bt_attr_ids, indx_scan_id::bt_num_attrs, indx_scan_id::bt_scan, indx_scan_id::bt_type, indx_info::btid, btree_scan::btid_int, btree_get_root_header(), btree_glean_root_header_info(), BTREE_INIT_SCAN, indx_scan_id::cls_oid, indx_scan_id::copy_buf, indx_scan_id::copy_buf_len, COPY_OID, indx_scan_id::curr_keyno, indx_scan_id::curr_oidno, indx_scan_id::curr_oidp, db_private_alloc, db_private_free_and_init, DB_TYPE_NULL, qfile_tuple_value_type_list::domp, er_errid(), ER_FAILED, eval_fnc(), heap_get_indexinfo_of_btid(), indx_scan_id::hfid, indx_scan_id::indx_cov, indx_scan_id::indx_info, btree_scan::is_btid_int_valid, indx_scan_id::iscan_oid_order, scan_id_struct::isid, indx_scan_id::key_cnt, indx_info::key_info, indx_scan_id::key_info_regu_list, indx_scan_id::key_info_values, indx_scan_id::key_vals, indx_cov::list_id, indx_cov::lsid, btree_node_header::max_key_len, indx_scan_id::multi_range_opt, NO_ERROR, btree_root_header::node, NULL, indx_scan_id::num_vstr, indx_scan_id::oid_list, OLD_PAGE, indx_scan_id::one_range, vpid::pageid, pgbuf_fix, PGBUF_LATCH_READ, PGBUF_UNCONDITIONAL_LATCH, pgbuf_unfix_and_init, prm_get_bool_value(), PRM_ID_ORACLE_STYLE_EMPTY_STRING, QFILE_FREE_AND_INIT_LIST_ID, QPROC_NO_SINGLE_INNER, btid::root_pageid, scan_id_struct::s, S_INDX_KEY_INFO_SCAN, S_SELECT, scan_init_index_key_limit(), scan_init_indx_coverage(), scan_init_iss(), scan_init_scan_id(), scan_init_scan_pred(), indx_scan_id::scan_pred, indx_scan_id::scancache_inited, btid_int::sys_btid, qfile_tuple_record::tpl, indx_cov::tplrec, scan_id_struct::type, indx_cov::type_list, multi_range_opt::use, btid::vfid, vpid::volid, vfid::volid, and indx_scan_id::vstr_ids.
Referenced by qexec_open_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 | ||
) |
Definition at line 3590 of file scan_manager.c.
References assert, indx_info::btid, btree_node_scan::btid_int, index_node_scan_id::btns, btree_get_root_header(), btree_glean_root_header_info(), BTREE_NODE_SCAN_INIT, index_node_scan_id::caches_inited, DB_TYPE_NULL, ER_FAILED, eval_fnc(), index_node_scan_id::indx_info, scan_id_struct::insid, NO_ERROR, index_node_scan_id::node_info_regu_list, index_node_scan_id::node_info_values, NULL, OLD_PAGE, vpid::pageid, pgbuf_fix, PGBUF_LATCH_READ, PGBUF_UNCONDITIONAL_LATCH, pgbuf_unfix_and_init, QPROC_NO_SINGLE_INNER, btid::root_pageid, scan_id_struct::s, S_INDX_NODE_INFO_SCAN, S_SELECT, scan_init_scan_id(), scan_init_scan_pred(), index_node_scan_id::scan_pred, btid_int::sys_btid, scan_id_struct::type, btid::vfid, vpid::volid, and vfid::volid.
Referenced by qexec_open_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 | ||
) |
Definition at line 3019 of file scan_manager.c.
References assert, indx_scan_id::bt_attr_ids, indx_scan_id::bt_attrs_prefix_length, indx_scan_id::bt_num_attrs, indx_scan_id::bt_scan, indx_scan_id::bt_type, indx_info::btid, btree_scan::btid_int, btree_get_root_header(), btree_glean_root_header_info(), BTREE_INIT_SCAN, btree_iscan_oid_list::capacity, indx_scan_id::cls_oid, indx_scan_id::copy_buf, indx_scan_id::copy_buf_len, COPY_OID, indx_info::coverage, scan_stats::covered_index, indx_scan_id::curr_keyno, indx_scan_id::curr_oidno, indx_scan_id::curr_oidp, DB_INT32_MAX, db_make_null(), db_private_alloc, db_private_free_and_init, DB_TYPE_MIDXKEY, DB_TYPE_NULL, DBVAL_BUFSIZE, qfile_tuple_value_type_list::domp, EQ_NA, er_errid(), ER_FAILED, eval_fnc(), indx_scan_id::fetched_values, heap_get_indexinfo_of_btid(), indx_scan_id::hfid, indx_info::ils_prefix_len, indx_scan_id::indx_cov, indx_scan_id::indx_info, btree_scan::is_btid_int_valid, ISCAN_OID_BUFFER_COUNT, indx_scan_id::iscan_oid_order, scan_id_struct::isid, indx_scan_id::key_attrs, key_info::key_cnt, indx_scan_id::key_cnt, indx_info::key_info, indx_scan_id::key_limit_lower, key_info::key_limit_reset, indx_scan_id::key_limit_upper, indx_scan_id::key_pred, key_info::key_ranges, btid_int::key_type, indx_scan_id::key_vals, indx_cov::list_id, scan_stats::loose_index_scan, indx_cov::lsid, btree_node_header::max_key_len, btree_iscan_oid_list::max_oid_cnt, indx_scan_id::multi_range_opt, scan_stats::multi_range_opt, btree_iscan_oid_list::next_list, NO_ERROR, btree_root_header::node, NULL, indx_scan_id::num_vstr, btree_iscan_oid_list::oid_cnt, indx_scan_id::oid_list, btree_iscan_oid_list::oidp, OLD_PAGE, indx_scan_id::one_range, PAGE_BTREE, vpid::pageid, pgbuf_check_page_ptype(), pgbuf_fix, PGBUF_LATCH_READ, PGBUF_UNCONDITIONAL_LATCH, pgbuf_unfix_and_init, indx_scan_id::pred_attrs, prm_get_bool_value(), PRM_ID_ORACLE_STYLE_EMPTY_STRING, QFILE_FREE_AND_INIT_LIST_ID, QSTR_IS_ANY_CHAR_OR_BIT, key_range::range, indx_scan_id::range_attrs, indx_scan_id::range_pred, indx_scan_id::rest_attrs, indx_scan_id::rest_regu_list, btid::root_pageid, scan_id_struct::s, S_INDX_SCAN, S_SELECT, scan_alloc_iscan_oid_buf_list(), scan_free_iscan_oid_buf_list(), scan_init_index_key_limit(), scan_init_indx_coverage(), scan_init_iss(), scan_init_multi_range_optimization(), scan_init_scan_attrs(), scan_init_scan_id(), scan_init_scan_pred(), indx_scan_id::scan_pred, scan_id_struct::scan_stats, indx_scan_id::scancache_inited, btid_int::sys_btid, TP_DOMAIN_TYPE, qfile_tuple_record::tpl, indx_cov::tplrec, tp_domain::type, scan_id_struct::type, indx_cov::type_list, multi_range_opt::use, btid::vfid, vpid::volid, vfid::volid, and indx_scan_id::vstr_ids.
Referenced by qexec_init_next_partition(), and qexec_open_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 | ||
) |
Definition at line 3954 of file scan_manager.c.
References assert, DB_TYPE_NULL, eval_fnc(), cubscan::json_table::scanner::get_predicate(), scan_id_struct::jtid, NO_ERROR, NULL, scan_id_struct::s, S_JSON_TABLE_SCAN, S_SELECT, scan_init_scan_id(), scan_init_scan_pred(), cubscan::json_table::scanner::set_value_descriptor(), and scan_id_struct::type.
Referenced by qexec_open_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 | ||
) |
Definition at line 3662 of file scan_manager.c.
References hash_list_scan::build_regu_list, check_hash_list_scan(), hash_list_scan::curr_hash_entry, DB_TYPE_NULL, scan_stats::elapsed_hash_build, eval_fnc(), hash_list_scan::hash_list_scan_yn, HASH_METH_NOT_USE, hash_list_scan::hash_table, llist_scan_id::hlsid, llist_scan_id::list_id, scan_id_struct::llsid, mht_create_hls(), hash_list_scan::need_coerce_type, NO_ERROR, NULL, hash_list_scan::probe_regu_list, qdata_alloc_hscan_key(), qdata_hash_scan_key(), qdata_hscan_key_eq(), llist_scan_id::rest_regu_list, scan_id_struct::s, S_ERROR, S_LIST_SCAN, S_SELECT, scan_build_hash_list_scan(), scan_end_scan(), scan_init_scan_id(), scan_init_scan_pred(), llist_scan_id::scan_pred, scan_start_scan(), scan_id_struct::scan_stats, hash_list_scan::temp_key, hash_list_scan::temp_new_key, thread_is_on_trace(), TSC_ADD_TIMEVAL, tsc_elapsed_time_usec(), tsc_getticks(), qfile_list_id::tuple_cnt, and scan_id_struct::type.
Referenced by qexec_open_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, | ||
method_sig_list * | meth_sig_list | ||
) |
Definition at line 3989 of file scan_manager.c.
References method_open_scan(), scan_id_struct::s, S_METHOD_SCAN, S_SELECT, va_scan_id::scan_buf, scan_init_scan_id(), scan_id_struct::type, and scan_id_struct::vaid.
Referenced by qexec_open_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 | ||
) |
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 | ||
) |
Definition at line 3767 of file scan_manager.c.
References showstmt_scan_id::arg_cnt, showstmt_scan_id::arg_values, assert, showstmt_scan_id::ctx, showstmt_scan_id::cursor, db_private_alloc, db_private_free_and_init, DB_TYPE_NULL, ER_OUT_OF_VIRTUAL_MEMORY, error(), eval_fnc(), fetch_peek_dbval(), i, qproc_db_value_list::next, regu_variable_list_node::next, NO_ERROR, NULL, showstmt_scan_id::out_cnt, showstmt_scan_id::out_values, scan_id_struct::s, S_SELECT, S_SHOWSTMT_SCAN, scan_init_scan_id(), scan_init_scan_pred(), showstmt_scan_id::scan_pred, showstmt_scan_id::show_type, scan_id_struct::stsid, scan_id_struct::type, TYPE_POS_VALUE, qproc_db_value_list::val, val_list_node::val_cnt, val_list_node::valp, and regu_variable_list_node::value.
Referenced by qexec_open_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 | ||
) |
Definition at line 3876 of file scan_manager.c.
References assert, NO_ERROR, NULL, regu_values_scan_id::regu_list, scan_id_struct::rvsid, scan_id_struct::s, S_SELECT, S_VALUES_SCAN, scan_init_scan_id(), scan_id_struct::type, valptr_list_node::valptr_cnt, valptr_list_node::valptrp, and regu_values_scan_id::value_cnt.
Referenced by qexec_open_scan().
SCAN_CODE scan_prev_scan | ( | THREAD_ENTRY * | thread_p, |
SCAN_ID * | s_id | ||
) |
Definition at line 7095 of file scan_manager.c.
References scan_handle_single_scan(), and scan_prev_scan_local().
SCAN_CODE scan_reset_scan_block | ( | THREAD_ENTRY * | thread_p, |
SCAN_ID * | s_id | ||
) |
Definition at line 4318 of file scan_manager.c.
References ARG_FILE_LINE, indx_scan_id::bt_scan, BTREE_RESET_SCAN, indx_scan_id::curr_keyno, heap_scan_id::curr_oid, indx_scan_id::curr_oidno, showstmt_scan_id::cursor, scan_id_struct::direction, ER_ERROR_SEVERITY, ER_QPROC_INVALID_XASLNODE, er_set(), scan_id_struct::grouped, scan_id_struct::hsid, indx_scan_id::indx_cov, indx_scan_id::indx_info, indx_scan_id::iscan_oid_order, scan_id_struct::isid, indx_info::key_info, indx_cov::list_id, llist_scan_id::list_id, scan_id_struct::llsid, indx_cov::lsid, llist_scan_id::lsid, NO_ERROR, NULL, scan_id_struct::null_fetched, OID_SET_NULL, indx_scan_id::oids_count, scan_id_struct::position, qfile_list_scan_id::position, qfile_close_scan(), qfile_destroy_list(), qfile_end_scan_fix(), QFILE_FREE_AND_INIT_LIST_ID, qfile_open_list(), qfile_open_list_scan(), qfile_start_scan_fix(), indx_cov::query_id, scan_id_struct::s, S_AFTER, S_BACKWARD, S_BEFORE, S_CLASS_ATTR_SCAN, S_ERROR, S_FORWARD, S_HEAP_SCAN, S_INDX_SCAN, S_JSON_TABLE_SCAN, S_LIST_SCAN, S_SET_SCAN, S_SHOWSTMT_SCAN, S_SUCCESS, scan_init_index_key_limit(), scan_init_iss(), scan_id_struct::single_fetched, scan_id_struct::stsid, scan_id_struct::type, indx_cov::type_list, and scan_id_struct::vd.
Referenced by qexec_execute_scan(), qexec_intprt_fnc(), and qexec_next_scan_block_iterations().
Definition at line 7109 of file scan_manager.c.
References scan_id_struct::llsid, scan_pos::ls_tplpos, llist_scan_id::lsid, scan_pos::position, scan_id_struct::position, qfile_save_current_scan_tuple_position(), scan_id_struct::s, scan_pos::status, and scan_id_struct::status.
Referenced by qexec_merge_list_outer().
int scan_start_scan | ( | THREAD_ENTRY * | thread_p, |
SCAN_ID * | s_id | ||
) |
Definition at line 4014 of file scan_manager.c.
References ARG_FILE_LINE, assert, scan_attrs::attr_cache, scan_attrs::attr_ids, index_node_scan_id::btns, BTREE_KEY_INFO_COUNT, BTREE_NODE_INFO_COUNT, BTREE_NODE_SCAN_INIT, heap_scan_id::cache_recordinfo, heap_scan_id::caches_inited, indx_scan_id::caches_inited, index_node_scan_id::caches_inited, heap_scan_id::cls_oid, indx_scan_id::cls_oid, indx_scan_id::curr_keyno, heap_scan_id::curr_oid, indx_scan_id::curr_oidno, heap_page_scan_id::curr_vpid, regu_value_list::current_value, db_make_null(), scan_id_struct::direction, er_errid(), ER_ERROR_SEVERITY, ER_FAILED, ER_QPROC_INVALID_XASLNODE, er_set(), scan_id_struct::fixed, scan_id_struct::grouped, heap_attrinfo_end(), heap_attrinfo_start(), HEAP_RECORD_INFO_COUNT, heap_scancache_start(), heap_scanrange_start(), heap_scan_id::hfid, indx_scan_id::hfid, scan_id_struct::hpsid, scan_id_struct::hsid, i, scan_id_struct::insid, scan_id_struct::isid, scan_id_struct::jtid, indx_scan_id::key_attrs, indx_scan_id::key_info_values, indx_scan_id::key_pred, llist_scan_id::list_id, scan_id_struct::llsid, logtb_get_mvcc_snapshot(), llist_scan_id::lsid, regu_variable_list_node::next, NO_ERROR, index_node_scan_id::node_info_values, NULL, scan_id_struct::null_fetched, scan_attrs::num_attrs, OID_IS_ROOTOID, indx_scan_id::oids_count, indx_scan_id::one_range, scan_id_struct::position, heap_scan_id::pred_attrs, indx_scan_id::pred_attrs, qfile_open_list_scan(), qfile_start_scan_fix(), scan_id_struct::qualified_block, indx_scan_id::range_attrs, indx_scan_id::range_pred, scan_pred::regu_list, regu_value_list::regu_list, regu_values_scan_id::regu_list, heap_scan_id::rest_attrs, indx_scan_id::rest_attrs, scan_id_struct::rvsid, scan_id_struct::s, S_BEFORE, S_CLASS_ATTR_SCAN, S_FORWARD, S_HEAP_PAGE_SCAN, S_HEAP_SCAN, S_HEAP_SCAN_RECORD_INFO, S_INDX_KEY_INFO_SCAN, S_INDX_NODE_INFO_SCAN, S_INDX_SCAN, S_JSON_TABLE_SCAN, S_LIST_SCAN, S_METHOD_SCAN, S_SET_SCAN, S_SHOWSTMT_SCAN, S_STARTED, S_VALUES_SCAN, heap_scan_id::scan_cache, indx_scan_id::scan_cache, heap_scan_id::scan_range, heap_scan_id::scancache_inited, indx_scan_id::scancache_inited, heap_scan_id::scanrange_inited, set_scan_id::set, showstmt_start_scan(), scan_id_struct::single_fetched, scan_id_struct::ssid, scan_id_struct::status, scan_id_struct::type, UT_CAST_TO_NULL_HEAP_OID, regu_variable_list_node::value, and VPID_SET_NULL.
Referenced by qexec_init_next_partition(), qexec_merge_list_outer(), qexec_next_merge_block(), qexec_next_scan_block(), and scan_open_list_scan().
int showstmt_end_scan | ( | THREAD_ENTRY * | thread_p, |
SCAN_ID * | s_id | ||
) |
Definition at line 309 of file show_scan.c.
References assert, showstmt_scan_id::ctx, show_request::end_func, error(), NO_ERROR, NULL, scan_id_struct::s, show_request::show_type, showstmt_scan_id::show_type, and scan_id_struct::stsid.
Referenced by scan_end_scan().
SCAN_CODE showstmt_next_scan | ( | THREAD_ENTRY * | thread_p, |
SCAN_ID * | s_id | ||
) |
Definition at line 250 of file show_scan.c.
References assert, showstmt_scan_id::ctx, showstmt_scan_id::cursor, i, show_request::next_func, NULL, showstmt_scan_id::out_cnt, showstmt_scan_id::out_values, pr_clear_value(), scan_id_struct::s, S_END, show_request::show_type, showstmt_scan_id::show_type, and scan_id_struct::stsid.
Referenced by scan_next_showstmt_scan().
void showstmt_scan_init | ( | void | ) |
Definition at line 100 of file show_scan.c.
References btree_index_end_scan(), btree_index_next_scan(), btree_index_start_scan(), csect_start_scan, css_job_queues_start_scan(), css_user_access_status_start_scan(), disk_volume_header_end_scan(), disk_volume_header_next_scan(), disk_volume_header_start_scan(), show_request::end_func, heap_capacity_next_scan(), heap_header_capacity_end_scan(), heap_header_capacity_start_scan(), heap_header_next_scan(), log_active_log_header_end_scan(), log_active_log_header_next_scan(), log_active_log_header_start_scan(), log_archive_log_header_end_scan(), log_archive_log_header_next_scan(), log_archive_log_header_start_scan(), logtb_descriptors_start_scan(), show_request::next_func, pgbuf_start_scan(), show_scan_Inited, show_request::show_type, SHOWSTMT_ACCESS_STATUS, SHOWSTMT_ACTIVE_LOG_HEADER, SHOWSTMT_ALL_HEAP_CAPACITY, SHOWSTMT_ALL_HEAP_HEADER, SHOWSTMT_ALL_INDEXES_CAPACITY, SHOWSTMT_ALL_INDEXES_HEADER, SHOWSTMT_ARCHIVE_LOG_HEADER, showstmt_array_end_scan(), showstmt_array_next_scan(), SHOWSTMT_END, SHOWSTMT_FULL_TIMEZONES, SHOWSTMT_GLOBAL_CRITICAL_SECTIONS, SHOWSTMT_HEAP_CAPACITY, SHOWSTMT_HEAP_HEADER, SHOWSTMT_INDEX_CAPACITY, SHOWSTMT_INDEX_HEADER, SHOWSTMT_JOB_QUEUES, SHOWSTMT_PAGE_BUFFER_STATUS, SHOWSTMT_SLOTTED_PAGE_HEADER, SHOWSTMT_SLOTTED_PAGE_SLOTS, SHOWSTMT_THREADS, SHOWSTMT_TIMEZONES, SHOWSTMT_TRAN_TABLES, SHOWSTMT_VOLUME_HEADER, spage_header_end_scan(), spage_header_next_scan(), spage_header_start_scan(), spage_slots_end_scan(), spage_slots_next_scan(), spage_slots_start_scan(), show_request::start_func, thread_start_scan(), tz_full_timezones_start_scan(), and tz_timezones_start_scan().
Referenced by xboot_register_client().
int showstmt_start_scan | ( | THREAD_ENTRY * | thread_p, |
SCAN_ID * | s_id | ||
) |
Definition at line 283 of file show_scan.c.
References showstmt_scan_id::arg_cnt, showstmt_scan_id::arg_values, assert, showstmt_scan_id::ctx, error(), NO_ERROR, NULL, scan_id_struct::s, show_request::show_type, showstmt_scan_id::show_type, show_request::start_func, and scan_id_struct::stsid.
Referenced by scan_start_scan().