Skip to content

File query_executor.c

FileList > cubrid > src > query > query_executor.c

Go to the source code of this file

  • #include "config.h"
  • #include <stdio.h>
  • #include <string.h>
  • #include <math.h>
  • #include <search.h>
  • #include <sys/timeb.h>
  • #include "query_executor.h"
  • #include "binaryheap.h"
  • #include "deduplicate_key.h"
  • #include "porting.h"
  • #include "error_manager.h"
  • #include "partition_sr.h"
  • #include "query_aggregate.hpp"
  • #include "query_analytic.hpp"
  • #include "query_opfunc.h"
  • #include "fetch.h"
  • #include "dbtype.h"
  • #include "object_primitive.h"
  • #include "object_representation.h"
  • #include "list_file.h"
  • #include "extendible_hash.h"
  • #include "xasl_cache.h"
  • #include "stream_to_xasl.h"
  • #include "query_manager.h"
  • #include "query_reevaluation.hpp"
  • #include "replication.h"
  • #include "elo.h"
  • #include "db_elo.h"
  • #include "locator_sr.h"
  • #include "log_lsa.hpp"
  • #include "log_volids.hpp"
  • #include "xserver_interface.h"
  • #include "tz_support.h"
  • #include "session.h"
  • #include "db_date.h"
  • #include "btree_load.h"
  • #include "query_dump.h"
  • #include "jansson.h"
  • #include "db_json.hpp"
  • #include "string_regex.hpp"
  • #include "thread_entry.hpp"
  • #include "regu_var.hpp"
  • #include "xasl.h"
  • #include "xasl_aggregate.hpp"
  • #include "xasl_analytic.hpp"
  • #include "xasl_predicate.hpp"
  • #include "subquery_cache.h"
  • #include "query_hash_join.h"
  • #include "memoize.hpp"
  • #include "px_parallel.hpp"
  • #include "px_heap_scan_trace_handler.hpp"
  • #include "px_heap_scan.hpp"
  • #include "px_query_executor.hpp"
  • #include <vector>
  • #include "memory_wrapper.hpp"

Classes

Type Name
struct analytic_function_state
struct analytic_state
struct del_lob_info
struct groupby_dimension
struct groupby_state
struct ordbynum_info
struct parent_pos_info
struct upddel_class_info_internal

Public Types

Type Name
typedef struct analytic_function_state ANALYTIC_FUNCTION_STATE
typedef enum analytic_stage ANALYTIC_STAGE
typedef struct analytic_state ANALYTIC_STATE
typedef struct del_lob_info DEL_LOB_INFO
typedef struct groupby_dimension GROUPBY_DIMENSION
typedef enum groupby_dimension_flag GROUPBY_DIMENSION_FLAG
typedef struct groupby_state GROUPBY_STATE
typedef struct ordbynum_info ORDBYNUM_INFO
typedef struct parent_pos_info PARENT_POS_INFO
enum TOPN_STATUS
typedef struct upddel_class_info_internal UPDDEL_CLASS_INFO_INTERNAL
typedef XSAL_SCAN_FUNC * XASL_SCAN_FNC_PTR
typedef SCAN_CODE(* XSAL_SCAN_FUNC
enum analytic_stage
enum groupby_dimension_flag

Public Functions

Type Name
void get_xasl_dumper_linked_in ()
int qexec_alloc_agg_hash_context_buildlist_xasl (THREAD_ENTRY * thread_p, xasl_node * xasl, XASL_STATE * xasl_state, bool not_use_membuf)
int qexec_clear_func_pred (THREAD_ENTRY * thread_p, func_pred * fpr)
int qexec_clear_list_cache_by_class (THREAD_ENTRY * thread_p, const OID * class_oid)
int qexec_clear_partition_expression (THREAD_ENTRY * thread_p, regu_variable_node * expr)
int qexec_clear_pred_context (THREAD_ENTRY * thread_p, pred_expr_with_context * pred_filter, bool dealloc_dbvalues)
int qexec_clear_xasl (THREAD_ENTRY * thread_p, xasl_node * xasl, bool is_final, bool for_parallel_aptr)
int qexec_clear_xasl_for_parallel_aptr (THREAD_ENTRY * thread_p, XASL_NODE * xasl, bool is_final)
xasl_state * qexec_deep_copy_xasl_state (THREAD_ENTRY * thread_p, xasl_state * xasl_state_p)
int qexec_execute_mainblock (THREAD_ENTRY * thread_p, xasl_node * xasl, xasl_state * xstate, UPDDEL_CLASS_INSTANCE_LOCK_INFO * p_class_instance_lock_info)
qfile_list_id * qexec_execute_query (THREAD_ENTRY * thread_p, xasl_node * xasl, int dbval_cnt, const DB_VALUE * dbval_ptr, QUERY_ID query_id)
SCAN_CODE qexec_execute_scan_ptr (THREAD_ENTRY * thread_p, xasl_node * xasl, XASL_STATE * xasl_state, void * scan_func_ptr)
int qexec_execute_subquery_for_result_cache (THREAD_ENTRY * thread_p, XASL_NODE * xasl, XASL_STATE * xasl_state)
void qexec_free_xasl_state (THREAD_ENTRY * thread_p, xasl_state * xasl_state)
int qexec_get_tuple_column_value (QFILE_TUPLE tpl, int index, DB_VALUE * valp, tp_domain * domain)
qfile_list_id * qexec_get_xasl_list_id (xasl_node * xasl)
int qexec_hash_gby_agg_tuple_public (THREAD_ENTRY * thread_p, xasl_node * xasl, XASL_STATE * xasl_state, QFILE_TUPLE_RECORD * tplrec, QFILE_TUPLE_DESCRIPTOR * tpldesc, QFILE_LIST_ID * groupby_list, bool * output_tuple)
int qexec_insert_tuple_into_list (THREAD_ENTRY * thread_p, qfile_list_id * list_id, valptr_list_node * outptr_list, val_descr * vd, qfile_tuple_record * tplrec)
void qexec_replace_prior_regu_vars_prior_expr (THREAD_ENTRY * thread_p, regu_variable_node * regu, xasl_node * xasl, xasl_node * connect_by_ptr)
int qexec_resolve_domains_for_aggregation_for_parallel_heap_scan_buildvalue_proc (THREAD_ENTRY * thread_p, XASL_NODE * xasl, void * vd, int * resolved)
int qexec_resolve_domains_for_aggregation_for_parallel_heap_scan_g_agg (THREAD_ENTRY * thread_p, XASL_NODE * xasl, void * vd, int * resolved)
int qexec_start_mainblock_iterations (THREAD_ENTRY * thread_p, xasl_node * xasl, xasl_state * xasl_state)

Public Static Functions

Type Name
DB_VALUE_COMPARE_RESULT bf2df_str_cmpdisk (void * mem1, void * mem2, TP_DOMAIN * domain, int do_coercion, int total_order, int * start_colp)
DB_VALUE_COMPARE_RESULT bf2df_str_cmpval (DB_VALUE * value1, DB_VALUE * value2, int do_coercion, int total_order, int * start_colp, int collation)
DB_VALUE_COMPARE_RESULT bf2df_str_compare (const unsigned char * s0, int l0, const unsigned char * s1, int l1)
int bf2df_str_son_index (THREAD_ENTRY * thread_p, char ** son_index, char * father_index, int * len_son_index, int cnt)
int prepare_mvcc_reev_data (THREAD_ENTRY * thread_p, XASL_NODE * aptr, XASL_STATE * xasl_state, int num_reev_classes, int * cond_reev_indexes, MVCC_UPDDEL_REEV_DATA * reev_data, int num_classes, UPDDEL_CLASS_INFO * classes, UPDDEL_CLASS_INFO_INTERNAL * internal_classes, int num_assigns, UPDATE_ASSIGNMENT * assigns, PRED_EXPR * cons_pred, UPDDEL_MVCC_COND_REEVAL ** mvcc_reev_classes, UPDATE_MVCC_REEV_ASSIGNMENT ** mvcc_reev_assigns, bool has_delete)
int qdata_setup_analytic_eval_list (THREAD_ENTRY * thread_p, XASL_NODE * xasl, XASL_STATE * xasl_state)
int qexec_add_composite_lock (THREAD_ENTRY * thread_p, REGU_VARIABLE_LIST reg_var_list, XASL_STATE * xasl_state, LK_COMPOSITE_LOCK * composite_lock, int upd_del_cls_cnt, OID * default_cls_oid)
TOPN_STATUS qexec_add_tuple_to_topn (THREAD_ENTRY * thread_p, TOPN_TUPLES * sort_stop, QFILE_TUPLE_DESCRIPTOR * tpldescr)
int qexec_alloc_agg_hash_context (THREAD_ENTRY * thread_p, BUILDLIST_PROC_NODE * proc, XASL_STATE * xasl_state, bool not_use_membuf)
void qexec_analytic_add_tuple (THREAD_ENTRY * thread_p, ANALYTIC_STATE * analytic_state, QFILE_TUPLE tpl, int peek)
int qexec_analytic_eval_in_processing (THREAD_ENTRY * thread_p, XASL_NODE * xasl, XASL_STATE * xasl_state)
int qexec_analytic_eval_instnum_pred (THREAD_ENTRY * thread_p, ANALYTIC_STATE * analytic_state, ANALYTIC_STAGE stage)
int qexec_analytic_evaluate_cume_dist_percent_rank_function (THREAD_ENTRY * thread_p, ANALYTIC_FUNCTION_STATE * func_state)
int qexec_analytic_evaluate_interpolation_function (THREAD_ENTRY * thread_p, ANALYTIC_FUNCTION_STATE * func_state)
int qexec_analytic_evaluate_ntile_function (THREAD_ENTRY * thread_p, ANALYTIC_FUNCTION_STATE * func_state)
int qexec_analytic_evaluate_offset_function (THREAD_ENTRY * thread_p, ANALYTIC_FUNCTION_STATE * func_state, ANALYTIC_STATE * analytic_state)
int qexec_analytic_finalize_group (THREAD_ENTRY * thread_p, XASL_STATE * xasl_state, ANALYTIC_FUNCTION_STATE * func_state, bool is_same_group)
SORT_STATUS qexec_analytic_get_next (THREAD_ENTRY * thread_p, RECDES * recdes, void * arg)
int qexec_analytic_group_header_load (ANALYTIC_FUNCTION_STATE * func_state)
int qexec_analytic_group_header_next (THREAD_ENTRY * thread_p, ANALYTIC_FUNCTION_STATE * func_state)
int qexec_analytic_put_next (THREAD_ENTRY * thread_p, const RECDES * recdes, void * arg)
int qexec_analytic_sort_key_header_load (ANALYTIC_FUNCTION_STATE * func_state, bool load_value)
int qexec_analytic_start_group (THREAD_ENTRY * thread_p, XASL_STATE * xasl_state, ANALYTIC_FUNCTION_STATE * func_state, const RECDES * key, bool reinit)
int qexec_analytic_update_group_result (THREAD_ENTRY * thread_p, ANALYTIC_STATE * analytic_state)
int qexec_analytic_value_advance (THREAD_ENTRY * thread_p, ANALYTIC_FUNCTION_STATE * func_state, int amount, int max_group_changes, bool ignore_nulls)
int qexec_analytic_value_lookup (THREAD_ENTRY * thread_p, ANALYTIC_FUNCTION_STATE * func_state, int position, bool ignore_nulls)
int qexec_build_agg_hkey (THREAD_ENTRY * thread_p, XASL_STATE * xasl_state, REGU_VARIABLE_LIST regu_list, QFILE_TUPLE tpl, AGGREGATE_HASH_KEY * key)
DEL_LOB_INFO * qexec_change_delete_lob_info (THREAD_ENTRY * thread_p, XASL_STATE * xasl_state, UPDDEL_CLASS_INFO_INTERNAL * class_info, DEL_LOB_INFO ** del_lob_info_list_ptr)
int qexec_check_for_cycle (THREAD_ENTRY * thread_p, OUTPTR_LIST * outptr_list, QFILE_TUPLE tpl, QFILE_TUPLE_VALUE_TYPE_LIST * type_list, QFILE_LIST_ID * list_id_p, int * iscycle)
int qexec_check_limit_clause (THREAD_ENTRY * thread_p, XASL_NODE * xasl, XASL_STATE * xasl_state, bool * empty_result)
void qexec_clear_a_eval_values (THREAD_ENTRY * thread_p, ANALYTIC_EVAL_TYPE * a_eval_list)
int qexec_clear_access_spec_list (THREAD_ENTRY * thread_p, XASL_NODE * xasl_p, ACCESS_SPEC_TYPE * list, bool is_final, bool except_trace, bool for_parallel_aptr)
int qexec_clear_agg_list (THREAD_ENTRY * thread_p, XASL_NODE * xasl_p, AGGREGATE_TYPE * list, bool is_final)
int qexec_clear_agg_orderby_const_list (THREAD_ENTRY * thread_p, XASL_NODE * xasl, bool is_final)
void qexec_clear_all_lists (THREAD_ENTRY * thread_p, XASL_NODE * xasl_list)
int qexec_clear_analytic_function_list (THREAD_ENTRY * thread_p, XASL_NODE * xasl_p, ANALYTIC_EVAL_TYPE * list, bool is_final)
void qexec_clear_analytic_function_state (THREAD_ENTRY * thread_p, ANALYTIC_FUNCTION_STATE * func_state)
void qexec_clear_analytic_state (THREAD_ENTRY * thread_p, ANALYTIC_STATE * analytic_state)
void qexec_clear_analytic_stats_list (ANALYTIC_STATS ** stats_list)
int qexec_clear_arith_list (THREAD_ENTRY * thread_p, XASL_NODE * xasl_p, ARITH_TYPE * list, bool is_final, bool for_parallel_aptr)
void qexec_clear_connect_by_lists (THREAD_ENTRY * thread_p, XASL_NODE * xasl)
void qexec_clear_db_val_list (QPROC_DB_VALUE_LIST list)
void qexec_clear_groupby_state (THREAD_ENTRY * thread_p, GROUPBY_STATE * gbstate)
void qexec_clear_head_lists (THREAD_ENTRY * thread_p, XASL_NODE * xasl_list)
void qexec_clear_head_lists_with_truncate (THREAD_ENTRY * thread_p, XASL_NODE * xasl_list)
void qexec_clear_internal_classes (THREAD_ENTRY * thread_p, UPDDEL_CLASS_INFO_INTERNAL * classes, int count)
void qexec_clear_mainblock_iterations (THREAD_ENTRY * thread_p, XASL_NODE * xasl)
void qexec_clear_pos_desc (XASL_NODE * xasl_p, QFILE_TUPLE_VALUE_POSITION * position_descr, bool is_final)
int qexec_clear_pred (THREAD_ENTRY * thread_p, XASL_NODE * xasl_p, PRED_EXPR * pr, bool is_final, bool for_parallel_aptr)
void qexec_clear_pred_xasl (THREAD_ENTRY * thread_p, PRED_EXPR * pred)
int qexec_clear_regu_list (THREAD_ENTRY * thread_p, XASL_NODE * xasl_p, REGU_VARIABLE_LIST list, bool is_final, bool for_parallel_aptr)
int qexec_clear_regu_value_list (THREAD_ENTRY * thread_p, XASL_NODE * xasl_p, REGU_VALUE_LIST * list, bool is_final, bool for_parallel_aptr)
int qexec_clear_regu_var (THREAD_ENTRY * thread_p, XASL_NODE * xasl_p, REGU_VARIABLE * regu_var, bool is_final, bool for_parallel_aptr)
int qexec_clear_regu_variable_list (THREAD_ENTRY * thread_p, XASL_NODE * xasl_p, REGU_VARIABLE_LIST list, bool is_final, bool for_parallel_aptr)
void qexec_clear_scan_all_lists (THREAD_ENTRY * thread_p, XASL_NODE * xasl_list)
void qexec_clear_sort_list (XASL_NODE * xasl_p, SORT_LIST * list, bool is_final)
void qexec_clear_topn_tuple (THREAD_ENTRY * thread_p, TOPN_TUPLE * tuple, int count)
int qexec_clear_update_assignment (THREAD_ENTRY * thread_p, XASL_NODE * xasl_p, UPDATE_ASSIGNMENT * assignment, bool is_final)
void qexec_clear_xasl_head (THREAD_ENTRY * thread_p, XASL_NODE * xasl)
void qexec_close_scan (THREAD_ENTRY * thread_p, ACCESS_SPEC_TYPE * curr_spec)
DB_VALUE_COMPARE_RESULT qexec_cmp_tpl_vals_merge (QFILE_TUPLE * left_tval, TP_DOMAIN ** left_dom, QFILE_TUPLE * rght_tval, TP_DOMAIN ** rght_dom, int tval_cnt)
int qexec_collection_has_null (DB_VALUE * colval)
int qexec_compare_valptr_with_tuple (OUTPTR_LIST * outptr_list, QFILE_TUPLE tpl, QFILE_TUPLE_VALUE_TYPE_LIST * type_list, int * are_equal)
DEL_LOB_INFO * qexec_create_delete_lob_info (THREAD_ENTRY * thread_p, XASL_STATE * xasl_state, UPDDEL_CLASS_INFO_INTERNAL * class_info)
int qexec_create_internal_classes (THREAD_ENTRY * thread_p, UPDDEL_CLASS_INFO * classes_info, int count, UPDDEL_CLASS_INFO_INTERNAL ** classes)
int qexec_create_mvcc_reev_assignments (THREAD_ENTRY * thread_p, XASL_NODE * aptr, bool should_delete, UPDDEL_CLASS_INFO_INTERNAL * classes, int num_classes, int num_assignments, UPDATE_ASSIGNMENT * assignments, UPDATE_MVCC_REEV_ASSIGNMENT ** mvcc_reev_assigns)
void qexec_destroy_upddel_ehash_files (THREAD_ENTRY * thread_p, XASL_NODE * buildlist)
int qexec_end_buildvalueblock_iterations (THREAD_ENTRY * thread_p, XASL_NODE * xasl, XASL_STATE * xasl_state, QFILE_TUPLE_RECORD * tplrec)
void qexec_end_connect_by_lists (THREAD_ENTRY * thread_p, XASL_NODE * xasl)
int qexec_end_mainblock_iterations (THREAD_ENTRY * thread_p, XASL_NODE * xasl, XASL_STATE * xasl_state, QFILE_TUPLE_RECORD * tplrec)
int qexec_end_one_iteration (THREAD_ENTRY * thread_p, XASL_NODE * xasl, XASL_STATE * xasl_state, QFILE_TUPLE_RECORD * tplrec)
void qexec_end_scan (THREAD_ENTRY * thread_p, ACCESS_SPEC_TYPE * curr_spec)
DB_LOGICAL qexec_eval_grbynum_pred (THREAD_ENTRY * thread_p, GROUPBY_STATE * gbstate)
DB_LOGICAL qexec_eval_instnum_pred (THREAD_ENTRY * thread_p, XASL_NODE * xasl, XASL_STATE * xasl_state)
DB_LOGICAL qexec_eval_ordbynum_pred (THREAD_ENTRY * thread_p, ORDBYNUM_INFO * ordby_info)
int qexec_evaluate_aggregates_optimize (THREAD_ENTRY * thread_p, AGGREGATE_TYPE * agg_list, ACCESS_SPEC_TYPE * spec, bool * is_scan_needed)
int qexec_evaluate_partition_aggregates (THREAD_ENTRY * thread_p, ACCESS_SPEC_TYPE * spec, AGGREGATE_TYPE * agg_list, bool * is_scan_needed)
int qexec_execute_analytic (THREAD_ENTRY * thread_p, XASL_NODE * xasl, XASL_STATE * xasl_state, ANALYTIC_EVAL_TYPE * analytic_eval, QFILE_TUPLE_RECORD * tplrec, bool is_last, bool is_skip_sort)
int qexec_execute_build_columns (THREAD_ENTRY * thread_p, XASL_NODE * xasl, XASL_STATE * xasl_state)
int qexec_execute_build_indexes (THREAD_ENTRY * thread_p, XASL_NODE * xasl, XASL_STATE * xasl_state)
int qexec_execute_connect_by (THREAD_ENTRY * thread_p, XASL_NODE * xasl, XASL_STATE * xasl_state, QFILE_TUPLE_RECORD * tplrec)
int qexec_execute_cte (THREAD_ENTRY * thread_p, XASL_NODE * xasl, XASL_STATE * xasl_state)
int qexec_execute_dblink_query (THREAD_ENTRY * thread_p, XASL_NODE * xasl, XASL_STATE * xasl_state)
int qexec_execute_delete (THREAD_ENTRY * thread_p, XASL_NODE * xasl, XASL_STATE * xasl_state)
int qexec_execute_do_stmt (THREAD_ENTRY * thread_p, XASL_NODE * xasl, XASL_STATE * xasl_state)
int qexec_execute_duplicate_key_update (THREAD_ENTRY * thread_p, ODKU_INFO * odku, HFID * hfid, VAL_DESCR * vd, int op_type, HEAP_SCANCACHE * scan_cache, HEAP_CACHE_ATTRINFO * attr_info, HEAP_CACHE_ATTRINFO * index_attr_info, HEAP_IDX_ELEMENTS_INFO * idx_info, int pruning_type, PRUNING_CONTEXT * pcontext, int * force_count)
int qexec_execute_increment (THREAD_ENTRY * thread_p, const OID * oid, const OID * class_oid, const HFID * class_hfid, ATTR_ID attrid, int n_increment, int pruning_type)
int qexec_execute_insert (THREAD_ENTRY * thread_p, XASL_NODE * xasl, XASL_STATE * xasl_state, bool skip_aptr)
int qexec_execute_mainblock_internal (THREAD_ENTRY * thread_p, XASL_NODE * xasl, XASL_STATE * xasl_state, UPDDEL_CLASS_INSTANCE_LOCK_INFO * p_class_instance_lock_info)
int qexec_execute_merge (THREAD_ENTRY * thread_p, XASL_NODE * xasl, XASL_STATE * xasl_state)
SCAN_CODE qexec_execute_nljoin_with_memoize (THREAD_ENTRY * thread_p, bool * is_memoize_succeed, XASL_NODE * xasl, XASL_STATE * xasl_state, QFILE_TUPLE_RECORD * ignore, XASL_SCAN_FNC_PTR next_scan_fnc)
int qexec_execute_obj_fetch (THREAD_ENTRY * thread_p, XASL_NODE * xasl, XASL_STATE * xasl_state, SCAN_OPERATION_TYPE scan_operation_type)
SCAN_CODE qexec_execute_scan (THREAD_ENTRY * thread_p, XASL_NODE * xasl, XASL_STATE * xasl_state, QFILE_TUPLE_RECORD * ignore, XASL_SCAN_FNC_PTR next_scan_fnc)
int qexec_execute_selupd_list (THREAD_ENTRY * thread_p, XASL_NODE * xasl, XASL_STATE * xasl_state)
int qexec_execute_selupd_list_find_class (THREAD_ENTRY * thread_p, XASL_NODE * xasl, VAL_DESCR * vd, OID * oid, SELUPD_LIST * selupd, OID * class_oid, HFID * class_hfid, DB_CLASS_PARTITION_TYPE * needs_pruning, bool * found)
int qexec_execute_update (THREAD_ENTRY * thread_p, XASL_NODE * xasl, bool has_delete, XASL_STATE * xasl_state)
void qexec_failure_line (int line, XASL_STATE * xasl_state)
int qexec_fill_sort_limit (THREAD_ENTRY * thread_p, XASL_NODE * xasl, XASL_STATE * xasl_state, int * limit_ptr)
void qexec_final_close_dblink_specs (XASL_NODE * xasl)
int qexec_for_update_set_class_locks (THREAD_ENTRY * thread_p, XASL_NODE * scan_list)
void qexec_free_agg_hash_context (THREAD_ENTRY * thread_p, BUILDLIST_PROC_NODE * proc)
void qexec_free_delete_lob_info_list (THREAD_ENTRY * thread_p, DEL_LOB_INFO ** del_lob_info_list_ptr)
void qexec_gby_agg_tuple (THREAD_ENTRY * thread_p, GROUPBY_STATE * gbstate, QFILE_TUPLE tpl, int peek)
void qexec_gby_clear_group_dim (THREAD_ENTRY * thread_p, GROUPBY_STATE * gbstate)
void qexec_gby_finalize_group (THREAD_ENTRY * thread_p, GROUPBY_STATE * gbstate, int N, bool keep_list_file)
int qexec_gby_finalize_group_dim (THREAD_ENTRY * thread_p, GROUPBY_STATE * gbstate, const RECDES * recdes)
void qexec_gby_finalize_group_val_list (THREAD_ENTRY * thread_p, GROUPBY_STATE * gbstate, int N)
SORT_STATUS qexec_gby_get_next (THREAD_ENTRY * thread_p, RECDES * recdes, void * arg)
int qexec_gby_init_group_dim (GROUPBY_STATE * gbstate)
int qexec_gby_put_next (THREAD_ENTRY * thread_p, const RECDES * recdes, void * arg)
void qexec_gby_start_group (THREAD_ENTRY * thread_p, GROUPBY_STATE * gbstate, const RECDES * recdes, int N)
void qexec_gby_start_group_dim (THREAD_ENTRY * thread_p, GROUPBY_STATE * gbstate, const RECDES * recdes)
QPROC_TPLDESCR_STATUS qexec_generate_tuple_descriptor (THREAD_ENTRY * thread_p, QFILE_LIST_ID * list_id, VALPTR_LIST * outptr_list, VAL_DESCR * vd)
int qexec_get_attr_default (THREAD_ENTRY * thread_p, OR_ATTRIBUTE * attr, DB_VALUE * default_val)
int qexec_get_index_pseudocolumn_value_from_tuple (THREAD_ENTRY * thread_p, XASL_NODE * xasl, QFILE_TUPLE tpl, DB_VALUE ** index_valp, char ** index_value, int * index_len)
int qexec_get_orderbynum_upper_bound (THREAD_ENTRY * tread_p, PRED_EXPR * pred, VAL_DESCR * vd, DB_VALUE * ubound)
int qexec_groupby (THREAD_ENTRY * thread_p, XASL_NODE * xasl, XASL_STATE * xasl_state, QFILE_TUPLE_RECORD * tplrec)
int qexec_groupby_index (THREAD_ENTRY * thread_p, XASL_NODE * xasl, XASL_STATE * xasl_state, QFILE_TUPLE_RECORD * tplrec)
int qexec_hash_gby_agg_tuple (THREAD_ENTRY * thread_p, XASL_NODE * xasl, XASL_STATE * xasl_state, BUILDLIST_PROC_NODE * proc, QFILE_TUPLE_RECORD * tplrec, QFILE_TUPLE_DESCRIPTOR * tpldesc, QFILE_LIST_ID * groupby_list, bool * output_tuple)
SORT_STATUS qexec_hash_gby_get_next (THREAD_ENTRY * thread_p, RECDES * recdes, void * arg)
int qexec_hash_gby_put_next (THREAD_ENTRY * thread_p, const RECDES * recdes, void * arg)
int qexec_init_agg_hierarchy_helpers (THREAD_ENTRY * thread_p, ACCESS_SPEC_TYPE * spec, AGGREGATE_TYPE * aggregate_list, HIERARCHY_AGGREGATE_HELPER ** helpers, int * helpers_countp)
int qexec_init_index_pseudocolumn_strings (THREAD_ENTRY * thread_p, char ** father_index, int * len_father_index, char ** son_index, int * len_son_index)
int qexec_init_instnum_val (XASL_NODE * xasl, THREAD_ENTRY * thread_p, XASL_STATE * xasl_state)
SCAN_CODE qexec_init_next_partition (THREAD_ENTRY * thread_p, ACCESS_SPEC_TYPE * spec, XASL_NODE * xasl)
int qexec_init_upddel_ehash_files (THREAD_ENTRY * thread_p, XASL_NODE * buildlist)
int qexec_initialize_analytic_function_state (THREAD_ENTRY * thread_p, ANALYTIC_FUNCTION_STATE * func_state, ANALYTIC_TYPE * func_p, XASL_STATE * xasl_state, bool is_skip_sort)
ANALYTIC_STATE * qexec_initialize_analytic_state (THREAD_ENTRY * thread_p, ANALYTIC_STATE * analytic_state, ANALYTIC_TYPE * a_func_list, SORT_LIST * sort_list, REGU_VARIABLE_LIST a_regu_list, VAL_LIST * a_val_list, OUTPTR_LIST * a_outptr_list, OUTPTR_LIST * a_outptr_list_interm, bool is_skip_sort, bool is_last_run, XASL_NODE * xasl, XASL_STATE * xasl_state, QFILE_TUPLE_VALUE_TYPE_LIST * type_list, QFILE_TUPLE_RECORD * tplrec)
GROUPBY_STATE * qexec_initialize_groupby_state (GROUPBY_STATE * gbstate, SORT_LIST * groupby_list, PRED_EXPR * having_pred, PRED_EXPR * grbynum_pred, DB_VALUE * grbynum_val, int grbynum_flag, XASL_NODE * eptr_list, AGGREGATE_TYPE * g_agg_list, REGU_VARIABLE_LIST g_regu_list, VAL_LIST * g_val_list, OUTPTR_LIST * g_outptr_list, REGU_VARIABLE_LIST g_hk_regu_list, bool with_rollup, int hash_eligible, AGGREGATE_HASH_CONTEXT * agg_hash_context, XASL_NODE * xasl, XASL_STATE * xasl_state, QFILE_TUPLE_VALUE_TYPE_LIST * type_list, QFILE_TUPLE_RECORD * tplrec)
SCAN_CODE qexec_intprt_fnc (THREAD_ENTRY * thread_p, XASL_NODE * xasl, XASL_STATE * xasl_state, QFILE_TUPLE_RECORD * tplrec, XASL_SCAN_FNC_PTR next_scan_fnc)
int qexec_iterate_connect_by_results (THREAD_ENTRY * thread_p, XASL_NODE * xasl, XASL_STATE * xasl_state, QFILE_TUPLE_RECORD * tplrec)
int qexec_listfile_orderby (THREAD_ENTRY * thread_p, XASL_NODE * xasl, QFILE_LIST_ID * list_file, SORT_LIST * orderby_list, XASL_STATE * xasl_state, OUTPTR_LIST * outptr_list)
int qexec_locate_agg_hentry_in_list (THREAD_ENTRY * thread_p, AGGREGATE_HASH_CONTEXT * context, AGGREGATE_HASH_KEY * key, bool * found)
SCAN_CODE qexec_merge_fnc (THREAD_ENTRY * thread_p, XASL_NODE * xasl, XASL_STATE * xasl_state, QFILE_TUPLE_RECORD * tplrec, XASL_SCAN_FNC_PTR ignore)
QFILE_LIST_ID * qexec_merge_list (THREAD_ENTRY * thread_p, QFILE_LIST_ID * outer_list_idp, QFILE_LIST_ID * inner_list_idp, QFILE_LIST_MERGE_INFO * merge_infop, int ls_flag)
QFILE_LIST_ID * qexec_merge_list_outer (THREAD_ENTRY * thread_p, SCAN_ID * outer_sid, SCAN_ID * inner_sid, QFILE_LIST_MERGE_INFO * merge_infop, PRED_EXPR * other_outer_join_pred, XASL_STATE * xasl_state, int ls_flag)
int qexec_merge_listfiles (THREAD_ENTRY * thread_p, XASL_NODE * xasl, XASL_STATE * xasl_state)
int qexec_merge_tuple (QFILE_TUPLE_RECORD * tplrec1, QFILE_TUPLE_RECORD * tplrec2, QFILE_LIST_MERGE_INFO * merge_info, QFILE_TUPLE_RECORD * tplrec)
int qexec_merge_tuple_add_list (THREAD_ENTRY * thread_p, QFILE_LIST_ID * list_id, QFILE_TUPLE_RECORD * tplrec1, QFILE_TUPLE_RECORD * tplrec2, QFILE_LIST_MERGE_INFO * merge_info, QFILE_TUPLE_RECORD * tplrec)
UPDDEL_MVCC_COND_REEVAL * qexec_mvcc_cond_reev_set_scan_order (XASL_NODE * aptr, UPDDEL_MVCC_COND_REEVAL * reev_classes, int num_reev_classes, UPDDEL_CLASS_INFO * classes, int num_classes)
SCAN_CODE qexec_next_merge_block (THREAD_ENTRY * thread_p, ACCESS_SPEC_TYPE ** spec)
SCAN_CODE qexec_next_scan_block (THREAD_ENTRY * thread_p, XASL_NODE * xasl)
SCAN_CODE qexec_next_scan_block_iterations (THREAD_ENTRY * thread_p, XASL_NODE * xasl)
int qexec_oid_of_duplicate_key_update (THREAD_ENTRY * thread_p, HEAP_SCANCACHE ** pruned_partition_scan_cache, HEAP_SCANCACHE * scan_cache, HEAP_CACHE_ATTRINFO * attr_info, HEAP_CACHE_ATTRINFO * index_attr_info, const HEAP_IDX_ELEMENTS_INFO * idx_info, int needs_pruning, PRUNING_CONTEXT * pcontext, OID * unique_oid, int op_type)
int qexec_open_scan (THREAD_ENTRY * thread_p, ACCESS_SPEC_TYPE * curr_spec, VAL_LIST * val_list, VAL_DESCR * vd, bool force_select_lock, int fixed, int grouped, bool iscan_oid_order, SCAN_ID * s_id, QUERY_ID query_id, SCAN_OPERATION_TYPE scan_op_type, bool scan_immediately_stop, bool * p_mvcc_select_lock_needed, XASL_NODE * xasl)
int qexec_ordby_put_next (THREAD_ENTRY * thread_p, const RECDES * recdes, void * arg)
int qexec_orderby_distinct (THREAD_ENTRY * thread_p, XASL_NODE * xasl, QUERY_OPTIONS option, XASL_STATE * xasl_state)
int qexec_orderby_distinct_by_sorting (THREAD_ENTRY * thread_p, XASL_NODE * xasl, QUERY_OPTIONS option, XASL_STATE * xasl_state)
int qexec_process_partition_unique_stats (THREAD_ENTRY * thread_p, PRUNING_CONTEXT * pcontext)
int qexec_process_unique_stats (THREAD_ENTRY * thread_p, const OID * class_oid, UPDDEL_CLASS_INFO_INTERNAL * class_)
int qexec_prune_spec (THREAD_ENTRY * thread_p, ACCESS_SPEC_TYPE * spec, VAL_DESCR * vd, SCAN_OPERATION_TYPE scan_op_type)
int qexec_recalc_tuples_parent_pos_in_list (THREAD_ENTRY * thread_p, QFILE_LIST_ID * list_id_p)
int qexec_remove_duplicates_for_replace (THREAD_ENTRY * thread_p, HEAP_SCANCACHE * scan_cache, HEAP_CACHE_ATTRINFO * attr_info, HEAP_CACHE_ATTRINFO * index_attr_info, const HEAP_IDX_ELEMENTS_INFO * idx_info, int op_type, int pruning_type, PRUNING_CONTEXT * pcontext, int * removed_count)
void qexec_replace_prior_regu_vars (THREAD_ENTRY * thread_p, REGU_VARIABLE * regu, XASL_NODE * xasl)
void qexec_replace_prior_regu_vars_pred (THREAD_ENTRY * thread_p, PRED_EXPR * pred, XASL_NODE * xasl)
void qexec_reset_pred_expr (PRED_EXPR * pred)
void qexec_reset_pseudocolumns_val_pointers (DB_VALUE * level_valp, DB_VALUE * isleaf_valp, DB_VALUE * iscycle_valp, DB_VALUE * parent_pos_valp, DB_VALUE * index_valp)
void qexec_reset_regu_variable (REGU_VARIABLE * var)
void qexec_reset_regu_variable_list (REGU_VARIABLE_LIST list)
int qexec_resolve_domains_for_aggregation (THREAD_ENTRY * thread_p, AGGREGATE_TYPE * agg_p, VAL_DESCR * vd, QFILE_TUPLE_RECORD * tplrec, REGU_VARIABLE_LIST regu_list, int * resolved)
void qexec_resolve_domains_for_group_by (BUILDLIST_PROC_NODE * buildlist, OUTPTR_LIST * reference_out_list)
void qexec_resolve_domains_on_sort_list (SORT_LIST * order_list, REGU_VARIABLE_LIST reference_regu_list)
int qexec_schema_get_type_desc (DB_TYPE id, TP_DOMAIN * domain, DB_VALUE * result)
const char * qexec_schema_get_type_name_from_id (DB_TYPE id)
int qexec_set_class_locks (THREAD_ENTRY * thread_p, XASL_NODE * aptr_list, UPDDEL_CLASS_INFO * query_classes, int query_classes_count, UPDDEL_CLASS_INFO_INTERNAL * internal_classes)
int qexec_set_pseudocolumns_val_pointers (XASL_NODE * xasl, DB_VALUE ** level_valp, DB_VALUE ** isleaf_valp, DB_VALUE ** iscycle_valp, DB_VALUE ** parent_pos_valp, DB_VALUE ** index_valp)
void qexec_set_xasl_trace_to_session (THREAD_ENTRY * thread_p, XASL_NODE * xasl)
int qexec_setup_list_id (THREAD_ENTRY * thread_p, XASL_NODE * xasl)
int qexec_setup_topn_proc (THREAD_ENTRY * thread_p, XASL_NODE * xasl, VAL_DESCR * vd)
long qexec_size_remaining (QFILE_TUPLE_RECORD * tplrec1, QFILE_TUPLE_RECORD * tplrec2, QFILE_LIST_MERGE_INFO * merge_info, int k)
int qexec_start_connect_by_lists (THREAD_ENTRY * thread_p, XASL_NODE * xasl, XASL_STATE * xasl_state)
BH_CMP_RESULT qexec_topn_cmpval (DB_VALUE * left, DB_VALUE * right, SORT_LIST * sort_spec)
BH_CMP_RESULT qexec_topn_compare (const void * left, const void * right, BH_CMP_ARG arg)
int qexec_topn_tuples_to_list_id (THREAD_ENTRY * thread_p, XASL_NODE * xasl, XASL_STATE * xasl_state, bool is_final)
void qexec_update_btree_unique_stats_info (THREAD_ENTRY * thread_p, multi_index_unique_stats * info, const HEAP_SCANCACHE * scan_cache)
int qexec_update_connect_by_lists (THREAD_ENTRY * thread_p, XASL_NODE * xasl, XASL_STATE * xasl_state, QFILE_TUPLE_RECORD * tplrec)
int qexec_upddel_add_unique_oid_to_ehid (THREAD_ENTRY * thread_p, XASL_NODE * xasl, XASL_STATE * xasl_state)
int qexec_upddel_mvcc_set_filters (THREAD_ENTRY * thread_p, XASL_NODE * aptr_list, UPDDEL_MVCC_COND_REEVAL * mvcc_reev_class, OID * class_oid)
int qexec_upddel_setup_current_class (THREAD_ENTRY * thread_p, UPDDEL_CLASS_INFO * class_, UPDDEL_CLASS_INFO_INTERNAL * class_info, int op_type, OID * current_oid)
int query_multi_range_opt_check_set_sort_col (THREAD_ENTRY * thread_p, XASL_NODE * xasl)
ACCESS_SPEC_TYPE * query_multi_range_opt_check_specs (THREAD_ENTRY * thread_p, XASL_NODE * xasl)
REGU_VARIABLE * replace_null_arith (REGU_VARIABLE * regu_var, DB_VALUE * set_dbval)
REGU_VARIABLE * replace_null_dbval (REGU_VARIABLE * regu_var, DB_VALUE * set_dbval)
int tranid_compare (const void * t1, const void * t2)

Macros

Type Name
define CONNECTBY_TUPLE_INDEX_STRING_MEM 64
define CTE_CURRENT_SCAN_READ_TUPLE (node) /* multi line expression */
define CTE_CURR_ITERATION_LAST_TUPLE (node) /* multi line expression */
define GOTO_EXIT_ON_ERROR /* multi line expression */
define HASH_AGGREGATE_DEFAULT_TABLE_SIZE 1000
define HASH_AGGREGATE_VH_SELECTIVITY_THRESHOLD 0.5f
define HASH_AGGREGATE_VH_SELECTIVITY_TUPLE_THRESHOLD 2000
define MIN_NUM_ROWS_FOR_MULTI_DELETE 20
define QEXEC_CLEAR_AGG_LIST_VALUE (agg_list) /* multi line expression */
define QEXEC_EMPTY_ACCESS_SPEC_SCAN (specp) /* multi line expression */
define QEXEC_GET_BH_TOPN_TUPLE (heap, index) (\*([**TOPN\_TUPLE**](xasl_8h.md#typedef-topn_tuple) \*\*) [**BH\_ELEMENT**](binaryheap_8h.md#define-bh_element) (heap, index))
define QEXEC_IS_MULTI_TABLE_UPDATE_DELETE (xasl) (xasl-&gt;upd\_del\_class\_cnt &gt; 1 \|\| (xasl-&gt;upd\_del\_class\_cnt == 1 && xasl-&gt;scan\_ptr != [**NULL**](freelistheap_8h.md#define-null)))
define QEXEC_IS_SUBQUERY_CACHE (n) ( (n) && ((n)-&gt;sub\_xasl\_id != [**NULL**](freelistheap_8h.md#define-null)) )
define QEXEC_MERGE_ADD_MERGETUPLE (thread_p, t1, t2) /* multi line expression */
define QEXEC_MERGE_NEXT_SCAN (thread_p, pre, e) /* multi line expression */
define QEXEC_MERGE_NEXT_SCAN_PVALS (thread_p, pre, e) /* multi line expression */
define QEXEC_MERGE_OUTER_NEXT_SCAN (thread_p, pre, e) /* multi line expression */
define QEXEC_MERGE_OUTER_NEXT_SCAN_PVALS (thread_p, pre, e) /* multi line expression */
define QEXEC_MERGE_OUTER_PREV_SCAN (thread_p, pre) /* multi line expression */
define QEXEC_MERGE_OUTER_PREV_SCAN_PVALS (thread_p, pre) /* multi line expression */
define QEXEC_MERGE_PREV_SCAN (thread_p, pre) /* multi line expression */
define QEXEC_MERGE_PVALS (pre) /* multi line expression */
define QEXEC_MERGE_REV_SCAN_PVALS (thread_p, pre) /* multi line expression */
define QEXEC_SEL_UPD_USE_REEVALUATION (xasl) /* multi line expression */
define QEXEC_UNLOCK_UNQUALIFIED_OID (thread_p, xasl) /* multi line expression */
define QPROC_MAX_GROUPED_SCAN_CNT (4)
define QPROC_SINGLE_CLASS_GROUPED_SCAN (0)

Public Types Documentation

typedef ANALYTIC_FUNCTION_STATE

typedef struct analytic_function_state ANALYTIC_FUNCTION_STATE;

typedef ANALYTIC_STAGE

typedef enum analytic_stage ANALYTIC_STAGE;

typedef ANALYTIC_STATE

typedef struct analytic_state ANALYTIC_STATE;

typedef DEL_LOB_INFO

typedef struct del_lob_info DEL_LOB_INFO;

typedef GROUPBY_DIMENSION

typedef struct groupby_dimension GROUPBY_DIMENSION;

typedef GROUPBY_DIMENSION_FLAG

typedef enum groupby_dimension_flag GROUPBY_DIMENSION_FLAG;

typedef GROUPBY_STATE

typedef struct groupby_state GROUPBY_STATE;

typedef ORDBYNUM_INFO

typedef struct ordbynum_info ORDBYNUM_INFO;

typedef PARENT_POS_INFO

typedef struct parent_pos_info PARENT_POS_INFO;

enum TOPN_STATUS

enum TOPN_STATUS {
    TOPN_SUCCESS,
    TOPN_OVERFLOW,
    TOPN_FAILURE
};

typedef UPDDEL_CLASS_INFO_INTERNAL

typedef struct upddel_class_info_internal UPDDEL_CLASS_INFO_INTERNAL;

typedef XASL_SCAN_FNC_PTR

typedef XSAL_SCAN_FUNC* XASL_SCAN_FNC_PTR;

typedef XSAL_SCAN_FUNC

typedef SCAN_CODE(* XSAL_SCAN_FUNC) (THREAD_ENTRY *thread_p, XASL_NODE *, XASL_STATE *, QFILE_TUPLE_RECORD *, void *);

enum analytic_stage

enum analytic_stage {
    ANALYTIC_INTERM_PROC = 1,
    ANALYTIC_GROUP_PROC
};

enum groupby_dimension_flag

enum groupby_dimension_flag {
    GROUPBY_DIM_FLAG_NONE = 0,
    GROUPBY_DIM_FLAG_GROUP_BY = 1,
    GROUPBY_DIM_FLAG_ROLLUP = 2,
    GROUPBY_DIM_FLAG_CUBE = 4,
    GROUPBY_DIM_FLAG_SET = 8
};

Public Functions Documentation

function get_xasl_dumper_linked_in

void get_xasl_dumper_linked_in () 

function qexec_alloc_agg_hash_context_buildlist_xasl

int qexec_alloc_agg_hash_context_buildlist_xasl (
    THREAD_ENTRY * thread_p,
    xasl_node * xasl,
    XASL_STATE * xasl_state,
    bool not_use_membuf
) 

function qexec_clear_func_pred

int qexec_clear_func_pred (
    THREAD_ENTRY * thread_p,
    func_pred * fpr
) 

function qexec_clear_list_cache_by_class

int qexec_clear_list_cache_by_class (
    THREAD_ENTRY * thread_p,
    const  OID * class_oid
) 

function qexec_clear_partition_expression

int qexec_clear_partition_expression (
    THREAD_ENTRY * thread_p,
    regu_variable_node * expr
) 

function qexec_clear_pred_context

int qexec_clear_pred_context (
    THREAD_ENTRY * thread_p,
    pred_expr_with_context * pred_filter,
    bool dealloc_dbvalues
) 

function qexec_clear_xasl

int qexec_clear_xasl (
    THREAD_ENTRY * thread_p,
    xasl_node * xasl,
    bool is_final,
    bool for_parallel_aptr
) 

function qexec_clear_xasl_for_parallel_aptr

int qexec_clear_xasl_for_parallel_aptr (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    bool is_final
) 

function qexec_deep_copy_xasl_state

xasl_state * qexec_deep_copy_xasl_state (
    THREAD_ENTRY * thread_p,
    xasl_state * xasl_state_p
) 

function qexec_execute_mainblock

int qexec_execute_mainblock (
    THREAD_ENTRY * thread_p,
    xasl_node * xasl,
    xasl_state * xstate,
    UPDDEL_CLASS_INSTANCE_LOCK_INFO * p_class_instance_lock_info
) 

function qexec_execute_query

qfile_list_id * qexec_execute_query (
    THREAD_ENTRY * thread_p,
    xasl_node * xasl,
    int dbval_cnt,
    const  DB_VALUE * dbval_ptr,
    QUERY_ID query_id
) 

function qexec_execute_scan_ptr

SCAN_CODE qexec_execute_scan_ptr (
    THREAD_ENTRY * thread_p,
    xasl_node * xasl,
    XASL_STATE * xasl_state,
    void * scan_func_ptr
) 

function qexec_execute_subquery_for_result_cache

int qexec_execute_subquery_for_result_cache (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    XASL_STATE * xasl_state
) 

function qexec_free_xasl_state

void qexec_free_xasl_state (
    THREAD_ENTRY * thread_p,
    xasl_state * xasl_state
) 

function qexec_get_tuple_column_value

int qexec_get_tuple_column_value (
    QFILE_TUPLE tpl,
    int index,
    DB_VALUE * valp,
    tp_domain * domain
) 

function qexec_get_xasl_list_id

qfile_list_id * qexec_get_xasl_list_id (
    xasl_node * xasl
) 

function qexec_hash_gby_agg_tuple_public

int qexec_hash_gby_agg_tuple_public (
    THREAD_ENTRY * thread_p,
    xasl_node * xasl,
    XASL_STATE * xasl_state,
    QFILE_TUPLE_RECORD * tplrec,
    QFILE_TUPLE_DESCRIPTOR * tpldesc,
    QFILE_LIST_ID * groupby_list,
    bool * output_tuple
) 

function qexec_insert_tuple_into_list

int qexec_insert_tuple_into_list (
    THREAD_ENTRY * thread_p,
    qfile_list_id * list_id,
    valptr_list_node * outptr_list,
    val_descr * vd,
    qfile_tuple_record * tplrec
) 

function qexec_replace_prior_regu_vars_prior_expr

void qexec_replace_prior_regu_vars_prior_expr (
    THREAD_ENTRY * thread_p,
    regu_variable_node * regu,
    xasl_node * xasl,
    xasl_node * connect_by_ptr
) 

function qexec_resolve_domains_for_aggregation_for_parallel_heap_scan_buildvalue_proc

int qexec_resolve_domains_for_aggregation_for_parallel_heap_scan_buildvalue_proc (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    void * vd,
    int * resolved
) 

function qexec_resolve_domains_for_aggregation_for_parallel_heap_scan_g_agg

int qexec_resolve_domains_for_aggregation_for_parallel_heap_scan_g_agg (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    void * vd,
    int * resolved
) 

function qexec_start_mainblock_iterations

int qexec_start_mainblock_iterations (
    THREAD_ENTRY * thread_p,
    xasl_node * xasl,
    xasl_state * xasl_state
) 

Public Static Functions Documentation

function bf2df_str_cmpdisk

static DB_VALUE_COMPARE_RESULT bf2df_str_cmpdisk (
    void * mem1,
    void * mem2,
    TP_DOMAIN * domain,
    int do_coercion,
    int total_order,
    int * start_colp
) 

function bf2df_str_cmpval

static DB_VALUE_COMPARE_RESULT bf2df_str_cmpval (
    DB_VALUE * value1,
    DB_VALUE * value2,
    int do_coercion,
    int total_order,
    int * start_colp,
    int collation
) 

function bf2df_str_compare

static DB_VALUE_COMPARE_RESULT bf2df_str_compare (
    const  unsigned  char * s0,
    int l0,
    const  unsigned  char * s1,
    int l1
) 

function bf2df_str_son_index

static int bf2df_str_son_index (
    THREAD_ENTRY * thread_p,
    char ** son_index,
    char * father_index,
    int * len_son_index,
    int cnt
) 

function prepare_mvcc_reev_data

static int prepare_mvcc_reev_data (
    THREAD_ENTRY * thread_p,
    XASL_NODE * aptr,
    XASL_STATE * xasl_state,
    int num_reev_classes,
    int * cond_reev_indexes,
    MVCC_UPDDEL_REEV_DATA * reev_data,
    int num_classes,
    UPDDEL_CLASS_INFO * classes,
    UPDDEL_CLASS_INFO_INTERNAL * internal_classes,
    int num_assigns,
    UPDATE_ASSIGNMENT * assigns,
    PRED_EXPR * cons_pred,
    UPDDEL_MVCC_COND_REEVAL ** mvcc_reev_classes,
    UPDATE_MVCC_REEV_ASSIGNMENT ** mvcc_reev_assigns,
    bool has_delete
) 

function qdata_setup_analytic_eval_list

static int qdata_setup_analytic_eval_list (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    XASL_STATE * xasl_state
) 

function qexec_add_composite_lock

static int qexec_add_composite_lock (
    THREAD_ENTRY * thread_p,
    REGU_VARIABLE_LIST reg_var_list,
    XASL_STATE * xasl_state,
    LK_COMPOSITE_LOCK * composite_lock,
    int upd_del_cls_cnt,
    OID * default_cls_oid
) 

function qexec_add_tuple_to_topn

static TOPN_STATUS qexec_add_tuple_to_topn (
    THREAD_ENTRY * thread_p,
    TOPN_TUPLES * sort_stop,
    QFILE_TUPLE_DESCRIPTOR * tpldescr
) 

function qexec_alloc_agg_hash_context

static int qexec_alloc_agg_hash_context (
    THREAD_ENTRY * thread_p,
    BUILDLIST_PROC_NODE * proc,
    XASL_STATE * xasl_state,
    bool not_use_membuf
) 

function qexec_analytic_add_tuple

static void qexec_analytic_add_tuple (
    THREAD_ENTRY * thread_p,
    ANALYTIC_STATE * analytic_state,
    QFILE_TUPLE tpl,
    int peek
) 

function qexec_analytic_eval_in_processing

static int qexec_analytic_eval_in_processing (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    XASL_STATE * xasl_state
) 

function qexec_analytic_eval_instnum_pred

static int qexec_analytic_eval_instnum_pred (
    THREAD_ENTRY * thread_p,
    ANALYTIC_STATE * analytic_state,
    ANALYTIC_STAGE stage
) 

function qexec_analytic_evaluate_cume_dist_percent_rank_function

static int qexec_analytic_evaluate_cume_dist_percent_rank_function (
    THREAD_ENTRY * thread_p,
    ANALYTIC_FUNCTION_STATE * func_state
) 

function qexec_analytic_evaluate_interpolation_function

static int qexec_analytic_evaluate_interpolation_function (
    THREAD_ENTRY * thread_p,
    ANALYTIC_FUNCTION_STATE * func_state
) 

function qexec_analytic_evaluate_ntile_function

static int qexec_analytic_evaluate_ntile_function (
    THREAD_ENTRY * thread_p,
    ANALYTIC_FUNCTION_STATE * func_state
) 

function qexec_analytic_evaluate_offset_function

static int qexec_analytic_evaluate_offset_function (
    THREAD_ENTRY * thread_p,
    ANALYTIC_FUNCTION_STATE * func_state,
    ANALYTIC_STATE * analytic_state
) 

function qexec_analytic_finalize_group

static int qexec_analytic_finalize_group (
    THREAD_ENTRY * thread_p,
    XASL_STATE * xasl_state,
    ANALYTIC_FUNCTION_STATE * func_state,
    bool is_same_group
) 

function qexec_analytic_get_next

static SORT_STATUS qexec_analytic_get_next (
    THREAD_ENTRY * thread_p,
    RECDES * recdes,
    void * arg
) 

function qexec_analytic_group_header_load

static int qexec_analytic_group_header_load (
    ANALYTIC_FUNCTION_STATE * func_state
) 

function qexec_analytic_group_header_next

static int qexec_analytic_group_header_next (
    THREAD_ENTRY * thread_p,
    ANALYTIC_FUNCTION_STATE * func_state
) 

function qexec_analytic_put_next

static int qexec_analytic_put_next (
    THREAD_ENTRY * thread_p,
    const  RECDES * recdes,
    void * arg
) 

function qexec_analytic_sort_key_header_load

static int qexec_analytic_sort_key_header_load (
    ANALYTIC_FUNCTION_STATE * func_state,
    bool load_value
) 

function qexec_analytic_start_group

static int qexec_analytic_start_group (
    THREAD_ENTRY * thread_p,
    XASL_STATE * xasl_state,
    ANALYTIC_FUNCTION_STATE * func_state,
    const  RECDES * key,
    bool reinit
) 

function qexec_analytic_update_group_result

static int qexec_analytic_update_group_result (
    THREAD_ENTRY * thread_p,
    ANALYTIC_STATE * analytic_state
) 

function qexec_analytic_value_advance

static int qexec_analytic_value_advance (
    THREAD_ENTRY * thread_p,
    ANALYTIC_FUNCTION_STATE * func_state,
    int amount,
    int max_group_changes,
    bool ignore_nulls
) 

function qexec_analytic_value_lookup

static int qexec_analytic_value_lookup (
    THREAD_ENTRY * thread_p,
    ANALYTIC_FUNCTION_STATE * func_state,
    int position,
    bool ignore_nulls
) 

function qexec_build_agg_hkey

static int qexec_build_agg_hkey (
    THREAD_ENTRY * thread_p,
    XASL_STATE * xasl_state,
    REGU_VARIABLE_LIST regu_list,
    QFILE_TUPLE tpl,
    AGGREGATE_HASH_KEY * key
) 

function qexec_change_delete_lob_info

static DEL_LOB_INFO * qexec_change_delete_lob_info (
    THREAD_ENTRY * thread_p,
    XASL_STATE * xasl_state,
    UPDDEL_CLASS_INFO_INTERNAL * class_info,
    DEL_LOB_INFO ** del_lob_info_list_ptr
) 

function qexec_check_for_cycle

static int qexec_check_for_cycle (
    THREAD_ENTRY * thread_p,
    OUTPTR_LIST * outptr_list,
    QFILE_TUPLE tpl,
    QFILE_TUPLE_VALUE_TYPE_LIST * type_list,
    QFILE_LIST_ID * list_id_p,
    int * iscycle
) 

function qexec_check_limit_clause

static int qexec_check_limit_clause (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    XASL_STATE * xasl_state,
    bool * empty_result
) 

function qexec_clear_a_eval_values

static void qexec_clear_a_eval_values (
    THREAD_ENTRY * thread_p,
    ANALYTIC_EVAL_TYPE * a_eval_list
) 

function qexec_clear_access_spec_list

static int qexec_clear_access_spec_list (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl_p,
    ACCESS_SPEC_TYPE * list,
    bool is_final,
    bool except_trace,
    bool for_parallel_aptr
) 

function qexec_clear_agg_list

static int qexec_clear_agg_list (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl_p,
    AGGREGATE_TYPE * list,
    bool is_final
) 

function qexec_clear_agg_orderby_const_list

static int qexec_clear_agg_orderby_const_list (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    bool is_final
) 

function qexec_clear_all_lists

static void qexec_clear_all_lists (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl_list
) 

function qexec_clear_analytic_function_list

static int qexec_clear_analytic_function_list (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl_p,
    ANALYTIC_EVAL_TYPE * list,
    bool is_final
) 

function qexec_clear_analytic_function_state

static void qexec_clear_analytic_function_state (
    THREAD_ENTRY * thread_p,
    ANALYTIC_FUNCTION_STATE * func_state
) 

function qexec_clear_analytic_state

static void qexec_clear_analytic_state (
    THREAD_ENTRY * thread_p,
    ANALYTIC_STATE * analytic_state
) 

function qexec_clear_analytic_stats_list

static void qexec_clear_analytic_stats_list (
    ANALYTIC_STATS ** stats_list
) 

function qexec_clear_arith_list

static int qexec_clear_arith_list (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl_p,
    ARITH_TYPE * list,
    bool is_final,
    bool for_parallel_aptr
) 

function qexec_clear_connect_by_lists

static void qexec_clear_connect_by_lists (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl
) 

function qexec_clear_db_val_list

static void qexec_clear_db_val_list (
    QPROC_DB_VALUE_LIST list
) 

function qexec_clear_groupby_state

static void qexec_clear_groupby_state (
    THREAD_ENTRY * thread_p,
    GROUPBY_STATE * gbstate
) 

function qexec_clear_head_lists

static void qexec_clear_head_lists (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl_list
) 

function qexec_clear_head_lists_with_truncate

static void qexec_clear_head_lists_with_truncate (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl_list
) 

function qexec_clear_internal_classes

static void qexec_clear_internal_classes (
    THREAD_ENTRY * thread_p,
    UPDDEL_CLASS_INFO_INTERNAL * classes,
    int count
) 

function qexec_clear_mainblock_iterations

static void qexec_clear_mainblock_iterations (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl
) 

function qexec_clear_pos_desc

static void qexec_clear_pos_desc (
    XASL_NODE * xasl_p,
    QFILE_TUPLE_VALUE_POSITION * position_descr,
    bool is_final
) 

function qexec_clear_pred

static int qexec_clear_pred (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl_p,
    PRED_EXPR * pr,
    bool is_final,
    bool for_parallel_aptr
) 

function qexec_clear_pred_xasl

static void qexec_clear_pred_xasl (
    THREAD_ENTRY * thread_p,
    PRED_EXPR * pred
) 

function qexec_clear_regu_list

static int qexec_clear_regu_list (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl_p,
    REGU_VARIABLE_LIST list,
    bool is_final,
    bool for_parallel_aptr
) 

function qexec_clear_regu_value_list

static int qexec_clear_regu_value_list (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl_p,
    REGU_VALUE_LIST * list,
    bool is_final,
    bool for_parallel_aptr
) 

function qexec_clear_regu_var

static int qexec_clear_regu_var (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl_p,
    REGU_VARIABLE * regu_var,
    bool is_final,
    bool for_parallel_aptr
) 

function qexec_clear_regu_variable_list

static int qexec_clear_regu_variable_list (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl_p,
    REGU_VARIABLE_LIST list,
    bool is_final,
    bool for_parallel_aptr
) 

function qexec_clear_scan_all_lists

static void qexec_clear_scan_all_lists (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl_list
) 

function qexec_clear_sort_list

static void qexec_clear_sort_list (
    XASL_NODE * xasl_p,
    SORT_LIST * list,
    bool is_final
) 

function qexec_clear_topn_tuple

static void qexec_clear_topn_tuple (
    THREAD_ENTRY * thread_p,
    TOPN_TUPLE * tuple,
    int count
) 

function qexec_clear_update_assignment

static int qexec_clear_update_assignment (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl_p,
    UPDATE_ASSIGNMENT * assignment,
    bool is_final
) 

function qexec_clear_xasl_head

static void qexec_clear_xasl_head (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl
) 

function qexec_close_scan

static void qexec_close_scan (
    THREAD_ENTRY * thread_p,
    ACCESS_SPEC_TYPE * curr_spec
) 

function qexec_cmp_tpl_vals_merge

static DB_VALUE_COMPARE_RESULT qexec_cmp_tpl_vals_merge (
    QFILE_TUPLE * left_tval,
    TP_DOMAIN ** left_dom,
    QFILE_TUPLE * rght_tval,
    TP_DOMAIN ** rght_dom,
    int tval_cnt
) 

function qexec_collection_has_null

static int qexec_collection_has_null (
    DB_VALUE * colval
) 

function qexec_compare_valptr_with_tuple

static int qexec_compare_valptr_with_tuple (
    OUTPTR_LIST * outptr_list,
    QFILE_TUPLE tpl,
    QFILE_TUPLE_VALUE_TYPE_LIST * type_list,
    int * are_equal
) 

function qexec_create_delete_lob_info

static DEL_LOB_INFO * qexec_create_delete_lob_info (
    THREAD_ENTRY * thread_p,
    XASL_STATE * xasl_state,
    UPDDEL_CLASS_INFO_INTERNAL * class_info
) 

function qexec_create_internal_classes

static int qexec_create_internal_classes (
    THREAD_ENTRY * thread_p,
    UPDDEL_CLASS_INFO * classes_info,
    int count,
    UPDDEL_CLASS_INFO_INTERNAL ** classes
) 

function qexec_create_mvcc_reev_assignments

static int qexec_create_mvcc_reev_assignments (
    THREAD_ENTRY * thread_p,
    XASL_NODE * aptr,
    bool should_delete,
    UPDDEL_CLASS_INFO_INTERNAL * classes,
    int num_classes,
    int num_assignments,
    UPDATE_ASSIGNMENT * assignments,
    UPDATE_MVCC_REEV_ASSIGNMENT ** mvcc_reev_assigns
) 

function qexec_destroy_upddel_ehash_files

static void qexec_destroy_upddel_ehash_files (
    THREAD_ENTRY * thread_p,
    XASL_NODE * buildlist
) 

function qexec_end_buildvalueblock_iterations

static int qexec_end_buildvalueblock_iterations (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    XASL_STATE * xasl_state,
    QFILE_TUPLE_RECORD * tplrec
) 

function qexec_end_connect_by_lists

static void qexec_end_connect_by_lists (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl
) 

function qexec_end_mainblock_iterations

static int qexec_end_mainblock_iterations (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    XASL_STATE * xasl_state,
    QFILE_TUPLE_RECORD * tplrec
) 

function qexec_end_one_iteration

static int qexec_end_one_iteration (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    XASL_STATE * xasl_state,
    QFILE_TUPLE_RECORD * tplrec
) 

function qexec_end_scan

static void qexec_end_scan (
    THREAD_ENTRY * thread_p,
    ACCESS_SPEC_TYPE * curr_spec
) 

function qexec_eval_grbynum_pred

static DB_LOGICAL qexec_eval_grbynum_pred (
    THREAD_ENTRY * thread_p,
    GROUPBY_STATE * gbstate
) 

function qexec_eval_instnum_pred

static DB_LOGICAL qexec_eval_instnum_pred (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    XASL_STATE * xasl_state
) 

function qexec_eval_ordbynum_pred

static DB_LOGICAL qexec_eval_ordbynum_pred (
    THREAD_ENTRY * thread_p,
    ORDBYNUM_INFO * ordby_info
) 

function qexec_evaluate_aggregates_optimize

static int qexec_evaluate_aggregates_optimize (
    THREAD_ENTRY * thread_p,
    AGGREGATE_TYPE * agg_list,
    ACCESS_SPEC_TYPE * spec,
    bool * is_scan_needed
) 

function qexec_evaluate_partition_aggregates

static int qexec_evaluate_partition_aggregates (
    THREAD_ENTRY * thread_p,
    ACCESS_SPEC_TYPE * spec,
    AGGREGATE_TYPE * agg_list,
    bool * is_scan_needed
) 

function qexec_execute_analytic

static int qexec_execute_analytic (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    XASL_STATE * xasl_state,
    ANALYTIC_EVAL_TYPE * analytic_eval,
    QFILE_TUPLE_RECORD * tplrec,
    bool is_last,
    bool is_skip_sort
) 

function qexec_execute_build_columns

static int qexec_execute_build_columns (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    XASL_STATE * xasl_state
) 

function qexec_execute_build_indexes

static int qexec_execute_build_indexes (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    XASL_STATE * xasl_state
) 

function qexec_execute_connect_by

static int qexec_execute_connect_by (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    XASL_STATE * xasl_state,
    QFILE_TUPLE_RECORD * tplrec
) 

function qexec_execute_cte

static int qexec_execute_cte (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    XASL_STATE * xasl_state
) 

static int qexec_execute_dblink_query (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    XASL_STATE * xasl_state
) 

function qexec_execute_delete

static int qexec_execute_delete (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    XASL_STATE * xasl_state
) 

function qexec_execute_do_stmt

static int qexec_execute_do_stmt (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    XASL_STATE * xasl_state
) 

function qexec_execute_duplicate_key_update

static int qexec_execute_duplicate_key_update (
    THREAD_ENTRY * thread_p,
    ODKU_INFO * odku,
    HFID * hfid,
    VAL_DESCR * vd,
    int op_type,
    HEAP_SCANCACHE * scan_cache,
    HEAP_CACHE_ATTRINFO * attr_info,
    HEAP_CACHE_ATTRINFO * index_attr_info,
    HEAP_IDX_ELEMENTS_INFO * idx_info,
    int pruning_type,
    PRUNING_CONTEXT * pcontext,
    int * force_count
) 

function qexec_execute_increment

static int qexec_execute_increment (
    THREAD_ENTRY * thread_p,
    const  OID * oid,
    const  OID * class_oid,
    const  HFID * class_hfid,
    ATTR_ID attrid,
    int n_increment,
    int pruning_type
) 

function qexec_execute_insert

static int qexec_execute_insert (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    XASL_STATE * xasl_state,
    bool skip_aptr
) 

function qexec_execute_mainblock_internal

static int qexec_execute_mainblock_internal (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    XASL_STATE * xasl_state,
    UPDDEL_CLASS_INSTANCE_LOCK_INFO * p_class_instance_lock_info
) 

function qexec_execute_merge

static int qexec_execute_merge (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    XASL_STATE * xasl_state
) 

function qexec_execute_nljoin_with_memoize

static SCAN_CODE qexec_execute_nljoin_with_memoize (
    THREAD_ENTRY * thread_p,
    bool * is_memoize_succeed,
    XASL_NODE * xasl,
    XASL_STATE * xasl_state,
    QFILE_TUPLE_RECORD * ignore,
    XASL_SCAN_FNC_PTR next_scan_fnc
) 

function qexec_execute_obj_fetch

static int qexec_execute_obj_fetch (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    XASL_STATE * xasl_state,
    SCAN_OPERATION_TYPE scan_operation_type
) 

function qexec_execute_scan

static SCAN_CODE qexec_execute_scan (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    XASL_STATE * xasl_state,
    QFILE_TUPLE_RECORD * ignore,
    XASL_SCAN_FNC_PTR next_scan_fnc
) 

function qexec_execute_selupd_list

static int qexec_execute_selupd_list (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    XASL_STATE * xasl_state
) 

function qexec_execute_selupd_list_find_class

static int qexec_execute_selupd_list_find_class (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    VAL_DESCR * vd,
    OID * oid,
    SELUPD_LIST * selupd,
    OID * class_oid,
    HFID * class_hfid,
    DB_CLASS_PARTITION_TYPE * needs_pruning,
    bool * found
) 

function qexec_execute_update

static int qexec_execute_update (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    bool has_delete,
    XASL_STATE * xasl_state
) 

function qexec_failure_line

static void qexec_failure_line (
    int line,
    XASL_STATE * xasl_state
) 

function qexec_fill_sort_limit

static int qexec_fill_sort_limit (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    XASL_STATE * xasl_state,
    int * limit_ptr
) 

static void qexec_final_close_dblink_specs (
    XASL_NODE * xasl
) 

function qexec_for_update_set_class_locks

static int qexec_for_update_set_class_locks (
    THREAD_ENTRY * thread_p,
    XASL_NODE * scan_list
) 

function qexec_free_agg_hash_context

static void qexec_free_agg_hash_context (
    THREAD_ENTRY * thread_p,
    BUILDLIST_PROC_NODE * proc
) 

function qexec_free_delete_lob_info_list

static void qexec_free_delete_lob_info_list (
    THREAD_ENTRY * thread_p,
    DEL_LOB_INFO ** del_lob_info_list_ptr
) 

function qexec_gby_agg_tuple

static void qexec_gby_agg_tuple (
    THREAD_ENTRY * thread_p,
    GROUPBY_STATE * gbstate,
    QFILE_TUPLE tpl,
    int peek
) 

function qexec_gby_clear_group_dim

static void qexec_gby_clear_group_dim (
    THREAD_ENTRY * thread_p,
    GROUPBY_STATE * gbstate
) 

function qexec_gby_finalize_group

static void qexec_gby_finalize_group (
    THREAD_ENTRY * thread_p,
    GROUPBY_STATE * gbstate,
    int N,
    bool keep_list_file
) 

function qexec_gby_finalize_group_dim

static int qexec_gby_finalize_group_dim (
    THREAD_ENTRY * thread_p,
    GROUPBY_STATE * gbstate,
    const  RECDES * recdes
) 

function qexec_gby_finalize_group_val_list

static void qexec_gby_finalize_group_val_list (
    THREAD_ENTRY * thread_p,
    GROUPBY_STATE * gbstate,
    int N
) 

function qexec_gby_get_next

static SORT_STATUS qexec_gby_get_next (
    THREAD_ENTRY * thread_p,
    RECDES * recdes,
    void * arg
) 

function qexec_gby_init_group_dim

static int qexec_gby_init_group_dim (
    GROUPBY_STATE * gbstate
) 

function qexec_gby_put_next

static int qexec_gby_put_next (
    THREAD_ENTRY * thread_p,
    const  RECDES * recdes,
    void * arg
) 

function qexec_gby_start_group

static void qexec_gby_start_group (
    THREAD_ENTRY * thread_p,
    GROUPBY_STATE * gbstate,
    const  RECDES * recdes,
    int N
) 

function qexec_gby_start_group_dim

static void qexec_gby_start_group_dim (
    THREAD_ENTRY * thread_p,
    GROUPBY_STATE * gbstate,
    const  RECDES * recdes
) 

function qexec_generate_tuple_descriptor

static QPROC_TPLDESCR_STATUS qexec_generate_tuple_descriptor (
    THREAD_ENTRY * thread_p,
    QFILE_LIST_ID * list_id,
    VALPTR_LIST * outptr_list,
    VAL_DESCR * vd
) 

function qexec_get_attr_default

static int qexec_get_attr_default (
    THREAD_ENTRY * thread_p,
    OR_ATTRIBUTE * attr,
    DB_VALUE * default_val
) 

function qexec_get_index_pseudocolumn_value_from_tuple

static int qexec_get_index_pseudocolumn_value_from_tuple (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    QFILE_TUPLE tpl,
    DB_VALUE ** index_valp,
    char ** index_value,
    int * index_len
) 

function qexec_get_orderbynum_upper_bound

static int qexec_get_orderbynum_upper_bound (
    THREAD_ENTRY * tread_p,
    PRED_EXPR * pred,
    VAL_DESCR * vd,
    DB_VALUE * ubound
) 

function qexec_groupby

static int qexec_groupby (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    XASL_STATE * xasl_state,
    QFILE_TUPLE_RECORD * tplrec
) 

function qexec_groupby_index

static int qexec_groupby_index (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    XASL_STATE * xasl_state,
    QFILE_TUPLE_RECORD * tplrec
) 

function qexec_hash_gby_agg_tuple

static int qexec_hash_gby_agg_tuple (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    XASL_STATE * xasl_state,
    BUILDLIST_PROC_NODE * proc,
    QFILE_TUPLE_RECORD * tplrec,
    QFILE_TUPLE_DESCRIPTOR * tpldesc,
    QFILE_LIST_ID * groupby_list,
    bool * output_tuple
) 

function qexec_hash_gby_get_next

static SORT_STATUS qexec_hash_gby_get_next (
    THREAD_ENTRY * thread_p,
    RECDES * recdes,
    void * arg
) 

function qexec_hash_gby_put_next

static int qexec_hash_gby_put_next (
    THREAD_ENTRY * thread_p,
    const  RECDES * recdes,
    void * arg
) 

function qexec_init_agg_hierarchy_helpers

static int qexec_init_agg_hierarchy_helpers (
    THREAD_ENTRY * thread_p,
    ACCESS_SPEC_TYPE * spec,
    AGGREGATE_TYPE * aggregate_list,
    HIERARCHY_AGGREGATE_HELPER ** helpers,
    int * helpers_countp
) 

function qexec_init_index_pseudocolumn_strings

static int qexec_init_index_pseudocolumn_strings (
    THREAD_ENTRY * thread_p,
    char ** father_index,
    int * len_father_index,
    char ** son_index,
    int * len_son_index
) 

function qexec_init_instnum_val

static int qexec_init_instnum_val (
    XASL_NODE * xasl,
    THREAD_ENTRY * thread_p,
    XASL_STATE * xasl_state
) 

function qexec_init_next_partition

static SCAN_CODE qexec_init_next_partition (
    THREAD_ENTRY * thread_p,
    ACCESS_SPEC_TYPE * spec,
    XASL_NODE * xasl
) 

function qexec_init_upddel_ehash_files

static int qexec_init_upddel_ehash_files (
    THREAD_ENTRY * thread_p,
    XASL_NODE * buildlist
) 

function qexec_initialize_analytic_function_state

static int qexec_initialize_analytic_function_state (
    THREAD_ENTRY * thread_p,
    ANALYTIC_FUNCTION_STATE * func_state,
    ANALYTIC_TYPE * func_p,
    XASL_STATE * xasl_state,
    bool is_skip_sort
) 

function qexec_initialize_analytic_state

static ANALYTIC_STATE * qexec_initialize_analytic_state (
    THREAD_ENTRY * thread_p,
    ANALYTIC_STATE * analytic_state,
    ANALYTIC_TYPE * a_func_list,
    SORT_LIST * sort_list,
    REGU_VARIABLE_LIST a_regu_list,
    VAL_LIST * a_val_list,
    OUTPTR_LIST * a_outptr_list,
    OUTPTR_LIST * a_outptr_list_interm,
    bool is_skip_sort,
    bool is_last_run,
    XASL_NODE * xasl,
    XASL_STATE * xasl_state,
    QFILE_TUPLE_VALUE_TYPE_LIST * type_list,
    QFILE_TUPLE_RECORD * tplrec
) 

function qexec_initialize_groupby_state

static GROUPBY_STATE * qexec_initialize_groupby_state (
    GROUPBY_STATE * gbstate,
    SORT_LIST * groupby_list,
    PRED_EXPR * having_pred,
    PRED_EXPR * grbynum_pred,
    DB_VALUE * grbynum_val,
    int grbynum_flag,
    XASL_NODE * eptr_list,
    AGGREGATE_TYPE * g_agg_list,
    REGU_VARIABLE_LIST g_regu_list,
    VAL_LIST * g_val_list,
    OUTPTR_LIST * g_outptr_list,
    REGU_VARIABLE_LIST g_hk_regu_list,
    bool with_rollup,
    int hash_eligible,
    AGGREGATE_HASH_CONTEXT * agg_hash_context,
    XASL_NODE * xasl,
    XASL_STATE * xasl_state,
    QFILE_TUPLE_VALUE_TYPE_LIST * type_list,
    QFILE_TUPLE_RECORD * tplrec
) 

function qexec_intprt_fnc

static SCAN_CODE qexec_intprt_fnc (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    XASL_STATE * xasl_state,
    QFILE_TUPLE_RECORD * tplrec,
    XASL_SCAN_FNC_PTR next_scan_fnc
) 

function qexec_iterate_connect_by_results

static int qexec_iterate_connect_by_results (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    XASL_STATE * xasl_state,
    QFILE_TUPLE_RECORD * tplrec
) 

function qexec_listfile_orderby

static int qexec_listfile_orderby (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    QFILE_LIST_ID * list_file,
    SORT_LIST * orderby_list,
    XASL_STATE * xasl_state,
    OUTPTR_LIST * outptr_list
) 

function qexec_locate_agg_hentry_in_list

static int qexec_locate_agg_hentry_in_list (
    THREAD_ENTRY * thread_p,
    AGGREGATE_HASH_CONTEXT * context,
    AGGREGATE_HASH_KEY * key,
    bool * found
) 

function qexec_merge_fnc

static SCAN_CODE qexec_merge_fnc (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    XASL_STATE * xasl_state,
    QFILE_TUPLE_RECORD * tplrec,
    XASL_SCAN_FNC_PTR ignore
) 

function qexec_merge_list

static QFILE_LIST_ID * qexec_merge_list (
    THREAD_ENTRY * thread_p,
    QFILE_LIST_ID * outer_list_idp,
    QFILE_LIST_ID * inner_list_idp,
    QFILE_LIST_MERGE_INFO * merge_infop,
    int ls_flag
) 

function qexec_merge_list_outer

static QFILE_LIST_ID * qexec_merge_list_outer (
    THREAD_ENTRY * thread_p,
    SCAN_ID * outer_sid,
    SCAN_ID * inner_sid,
    QFILE_LIST_MERGE_INFO * merge_infop,
    PRED_EXPR * other_outer_join_pred,
    XASL_STATE * xasl_state,
    int ls_flag
) 

function qexec_merge_listfiles

static int qexec_merge_listfiles (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    XASL_STATE * xasl_state
) 

function qexec_merge_tuple

static int qexec_merge_tuple (
    QFILE_TUPLE_RECORD * tplrec1,
    QFILE_TUPLE_RECORD * tplrec2,
    QFILE_LIST_MERGE_INFO * merge_info,
    QFILE_TUPLE_RECORD * tplrec
) 

function qexec_merge_tuple_add_list

static int qexec_merge_tuple_add_list (
    THREAD_ENTRY * thread_p,
    QFILE_LIST_ID * list_id,
    QFILE_TUPLE_RECORD * tplrec1,
    QFILE_TUPLE_RECORD * tplrec2,
    QFILE_LIST_MERGE_INFO * merge_info,
    QFILE_TUPLE_RECORD * tplrec
) 

function qexec_mvcc_cond_reev_set_scan_order

static UPDDEL_MVCC_COND_REEVAL * qexec_mvcc_cond_reev_set_scan_order (
    XASL_NODE * aptr,
    UPDDEL_MVCC_COND_REEVAL * reev_classes,
    int num_reev_classes,
    UPDDEL_CLASS_INFO * classes,
    int num_classes
) 

function qexec_next_merge_block

static SCAN_CODE qexec_next_merge_block (
    THREAD_ENTRY * thread_p,
    ACCESS_SPEC_TYPE ** spec
) 

function qexec_next_scan_block

static SCAN_CODE qexec_next_scan_block (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl
) 

function qexec_next_scan_block_iterations

static SCAN_CODE qexec_next_scan_block_iterations (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl
) 

function qexec_oid_of_duplicate_key_update

static int qexec_oid_of_duplicate_key_update (
    THREAD_ENTRY * thread_p,
    HEAP_SCANCACHE ** pruned_partition_scan_cache,
    HEAP_SCANCACHE * scan_cache,
    HEAP_CACHE_ATTRINFO * attr_info,
    HEAP_CACHE_ATTRINFO * index_attr_info,
    const  HEAP_IDX_ELEMENTS_INFO * idx_info,
    int needs_pruning,
    PRUNING_CONTEXT * pcontext,
    OID * unique_oid,
    int op_type
) 

function qexec_open_scan

static int qexec_open_scan (
    THREAD_ENTRY * thread_p,
    ACCESS_SPEC_TYPE * curr_spec,
    VAL_LIST * val_list,
    VAL_DESCR * vd,
    bool force_select_lock,
    int fixed,
    int grouped,
    bool iscan_oid_order,
    SCAN_ID * s_id,
    QUERY_ID query_id,
    SCAN_OPERATION_TYPE scan_op_type,
    bool scan_immediately_stop,
    bool * p_mvcc_select_lock_needed,
    XASL_NODE * xasl
) 

function qexec_ordby_put_next

static int qexec_ordby_put_next (
    THREAD_ENTRY * thread_p,
    const  RECDES * recdes,
    void * arg
) 

function qexec_orderby_distinct

static int qexec_orderby_distinct (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    QUERY_OPTIONS option,
    XASL_STATE * xasl_state
) 

function qexec_orderby_distinct_by_sorting

static int qexec_orderby_distinct_by_sorting (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    QUERY_OPTIONS option,
    XASL_STATE * xasl_state
) 

function qexec_process_partition_unique_stats

static int qexec_process_partition_unique_stats (
    THREAD_ENTRY * thread_p,
    PRUNING_CONTEXT * pcontext
) 

function qexec_process_unique_stats

static int qexec_process_unique_stats (
    THREAD_ENTRY * thread_p,
    const  OID * class_oid,
    UPDDEL_CLASS_INFO_INTERNAL * class_
) 

function qexec_prune_spec

static int qexec_prune_spec (
    THREAD_ENTRY * thread_p,
    ACCESS_SPEC_TYPE * spec,
    VAL_DESCR * vd,
    SCAN_OPERATION_TYPE scan_op_type
) 

function qexec_recalc_tuples_parent_pos_in_list

static int qexec_recalc_tuples_parent_pos_in_list (
    THREAD_ENTRY * thread_p,
    QFILE_LIST_ID * list_id_p
) 

function qexec_remove_duplicates_for_replace

static int qexec_remove_duplicates_for_replace (
    THREAD_ENTRY * thread_p,
    HEAP_SCANCACHE * scan_cache,
    HEAP_CACHE_ATTRINFO * attr_info,
    HEAP_CACHE_ATTRINFO * index_attr_info,
    const  HEAP_IDX_ELEMENTS_INFO * idx_info,
    int op_type,
    int pruning_type,
    PRUNING_CONTEXT * pcontext,
    int * removed_count
) 

function qexec_replace_prior_regu_vars

static void qexec_replace_prior_regu_vars (
    THREAD_ENTRY * thread_p,
    REGU_VARIABLE * regu,
    XASL_NODE * xasl
) 

function qexec_replace_prior_regu_vars_pred

static void qexec_replace_prior_regu_vars_pred (
    THREAD_ENTRY * thread_p,
    PRED_EXPR * pred,
    XASL_NODE * xasl
) 

function qexec_reset_pred_expr

static void qexec_reset_pred_expr (
    PRED_EXPR * pred
) 

function qexec_reset_pseudocolumns_val_pointers

static void qexec_reset_pseudocolumns_val_pointers (
    DB_VALUE * level_valp,
    DB_VALUE * isleaf_valp,
    DB_VALUE * iscycle_valp,
    DB_VALUE * parent_pos_valp,
    DB_VALUE * index_valp
) 

function qexec_reset_regu_variable

static void qexec_reset_regu_variable (
    REGU_VARIABLE * var
) 

function qexec_reset_regu_variable_list

static void qexec_reset_regu_variable_list (
    REGU_VARIABLE_LIST list
) 

function qexec_resolve_domains_for_aggregation

static int qexec_resolve_domains_for_aggregation (
    THREAD_ENTRY * thread_p,
    AGGREGATE_TYPE * agg_p,
    VAL_DESCR * vd,
    QFILE_TUPLE_RECORD * tplrec,
    REGU_VARIABLE_LIST regu_list,
    int * resolved
) 

function qexec_resolve_domains_for_group_by

static void qexec_resolve_domains_for_group_by (
    BUILDLIST_PROC_NODE * buildlist,
    OUTPTR_LIST * reference_out_list
) 

function qexec_resolve_domains_on_sort_list

static void qexec_resolve_domains_on_sort_list (
    SORT_LIST * order_list,
    REGU_VARIABLE_LIST reference_regu_list
) 

function qexec_schema_get_type_desc

static int qexec_schema_get_type_desc (
    DB_TYPE id,
    TP_DOMAIN * domain,
    DB_VALUE * result
) 

function qexec_schema_get_type_name_from_id

static const  char * qexec_schema_get_type_name_from_id (
    DB_TYPE id
) 

function qexec_set_class_locks

static int qexec_set_class_locks (
    THREAD_ENTRY * thread_p,
    XASL_NODE * aptr_list,
    UPDDEL_CLASS_INFO * query_classes,
    int query_classes_count,
    UPDDEL_CLASS_INFO_INTERNAL * internal_classes
) 

function qexec_set_pseudocolumns_val_pointers

static int qexec_set_pseudocolumns_val_pointers (
    XASL_NODE * xasl,
    DB_VALUE ** level_valp,
    DB_VALUE ** isleaf_valp,
    DB_VALUE ** iscycle_valp,
    DB_VALUE ** parent_pos_valp,
    DB_VALUE ** index_valp
) 

function qexec_set_xasl_trace_to_session

static void qexec_set_xasl_trace_to_session (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl
) 

function qexec_setup_list_id

static int qexec_setup_list_id (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl
) 

function qexec_setup_topn_proc

static int qexec_setup_topn_proc (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    VAL_DESCR * vd
) 

function qexec_size_remaining

static long qexec_size_remaining (
    QFILE_TUPLE_RECORD * tplrec1,
    QFILE_TUPLE_RECORD * tplrec2,
    QFILE_LIST_MERGE_INFO * merge_info,
    int k
) 

function qexec_start_connect_by_lists

static int qexec_start_connect_by_lists (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    XASL_STATE * xasl_state
) 

function qexec_topn_cmpval

static BH_CMP_RESULT qexec_topn_cmpval (
    DB_VALUE * left,
    DB_VALUE * right,
    SORT_LIST * sort_spec
) 

function qexec_topn_compare

static BH_CMP_RESULT qexec_topn_compare (
    const  void * left,
    const  void * right,
    BH_CMP_ARG arg
) 

function qexec_topn_tuples_to_list_id

static int qexec_topn_tuples_to_list_id (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    XASL_STATE * xasl_state,
    bool is_final
) 

function qexec_update_btree_unique_stats_info

static void qexec_update_btree_unique_stats_info (
    THREAD_ENTRY * thread_p,
    multi_index_unique_stats * info,
    const  HEAP_SCANCACHE * scan_cache
) 

function qexec_update_connect_by_lists

static int qexec_update_connect_by_lists (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    XASL_STATE * xasl_state,
    QFILE_TUPLE_RECORD * tplrec
) 

function qexec_upddel_add_unique_oid_to_ehid

static int qexec_upddel_add_unique_oid_to_ehid (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl,
    XASL_STATE * xasl_state
) 

function qexec_upddel_mvcc_set_filters

static int qexec_upddel_mvcc_set_filters (
    THREAD_ENTRY * thread_p,
    XASL_NODE * aptr_list,
    UPDDEL_MVCC_COND_REEVAL * mvcc_reev_class,
    OID * class_oid
) 

function qexec_upddel_setup_current_class

static int qexec_upddel_setup_current_class (
    THREAD_ENTRY * thread_p,
    UPDDEL_CLASS_INFO * class_,
    UPDDEL_CLASS_INFO_INTERNAL * class_info,
    int op_type,
    OID * current_oid
) 

function query_multi_range_opt_check_set_sort_col

static int query_multi_range_opt_check_set_sort_col (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl
) 

function query_multi_range_opt_check_specs

static ACCESS_SPEC_TYPE * query_multi_range_opt_check_specs (
    THREAD_ENTRY * thread_p,
    XASL_NODE * xasl
) 

function replace_null_arith

static REGU_VARIABLE * replace_null_arith (
    REGU_VARIABLE * regu_var,
    DB_VALUE * set_dbval
) 

function replace_null_dbval

static REGU_VARIABLE * replace_null_dbval (
    REGU_VARIABLE * regu_var,
    DB_VALUE * set_dbval
) 

function tranid_compare

static int tranid_compare (
    const  void * t1,
    const  void * t2
) 

Macro Definition Documentation

define CONNECTBY_TUPLE_INDEX_STRING_MEM

#define CONNECTBY_TUPLE_INDEX_STRING_MEM `64`

define CTE_CURRENT_SCAN_READ_TUPLE

#define CTE_CURRENT_SCAN_READ_TUPLE (
    node
) `/* multi line expression */`

define CTE_CURR_ITERATION_LAST_TUPLE

#define CTE_CURR_ITERATION_LAST_TUPLE (
    node
) `/* multi line expression */`

define GOTO_EXIT_ON_ERROR

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

define HASH_AGGREGATE_DEFAULT_TABLE_SIZE

#define HASH_AGGREGATE_DEFAULT_TABLE_SIZE `1000`

define HASH_AGGREGATE_VH_SELECTIVITY_THRESHOLD

#define HASH_AGGREGATE_VH_SELECTIVITY_THRESHOLD `0.5f`

define HASH_AGGREGATE_VH_SELECTIVITY_TUPLE_THRESHOLD

#define HASH_AGGREGATE_VH_SELECTIVITY_TUPLE_THRESHOLD `2000`

define MIN_NUM_ROWS_FOR_MULTI_DELETE

#define MIN_NUM_ROWS_FOR_MULTI_DELETE `20`

define QEXEC_CLEAR_AGG_LIST_VALUE

#define QEXEC_CLEAR_AGG_LIST_VALUE (
    agg_list
) `/* multi line expression */`

define QEXEC_EMPTY_ACCESS_SPEC_SCAN

#define QEXEC_EMPTY_ACCESS_SPEC_SCAN (
    specp
) `/* multi line expression */`

define QEXEC_GET_BH_TOPN_TUPLE

#define QEXEC_GET_BH_TOPN_TUPLE (
    heap,
    index
) `(*( TOPN_TUPLE **) BH_ELEMENT (heap, index))`

define QEXEC_IS_MULTI_TABLE_UPDATE_DELETE

#define QEXEC_IS_MULTI_TABLE_UPDATE_DELETE (
    xasl
) `(xasl->upd_del_class_cnt > 1 || (xasl->upd_del_class_cnt == 1 && xasl->scan_ptr != NULL ))`

define QEXEC_IS_SUBQUERY_CACHE

#define QEXEC_IS_SUBQUERY_CACHE (
    n
) `( (n) && ((n)->sub_xasl_id != NULL ) )`

define QEXEC_MERGE_ADD_MERGETUPLE

#define QEXEC_MERGE_ADD_MERGETUPLE (
    thread_p,
    t1,
    t2
) `/* multi line expression */`

define QEXEC_MERGE_NEXT_SCAN

#define QEXEC_MERGE_NEXT_SCAN (
    thread_p,
    pre,
    e
) `/* multi line expression */`

define QEXEC_MERGE_NEXT_SCAN_PVALS

#define QEXEC_MERGE_NEXT_SCAN_PVALS (
    thread_p,
    pre,
    e
) `/* multi line expression */`

define QEXEC_MERGE_OUTER_NEXT_SCAN

#define QEXEC_MERGE_OUTER_NEXT_SCAN (
    thread_p,
    pre,
    e
) `/* multi line expression */`

define QEXEC_MERGE_OUTER_NEXT_SCAN_PVALS

#define QEXEC_MERGE_OUTER_NEXT_SCAN_PVALS (
    thread_p,
    pre,
    e
) `/* multi line expression */`

define QEXEC_MERGE_OUTER_PREV_SCAN

#define QEXEC_MERGE_OUTER_PREV_SCAN (
    thread_p,
    pre
) `/* multi line expression */`

define QEXEC_MERGE_OUTER_PREV_SCAN_PVALS

#define QEXEC_MERGE_OUTER_PREV_SCAN_PVALS (
    thread_p,
    pre
) `/* multi line expression */`

define QEXEC_MERGE_PREV_SCAN

#define QEXEC_MERGE_PREV_SCAN (
    thread_p,
    pre
) `/* multi line expression */`

define QEXEC_MERGE_PVALS

#define QEXEC_MERGE_PVALS (
    pre
) `/* multi line expression */`

define QEXEC_MERGE_REV_SCAN_PVALS

#define QEXEC_MERGE_REV_SCAN_PVALS (
    thread_p,
    pre
) `/* multi line expression */`

define QEXEC_SEL_UPD_USE_REEVALUATION

#define QEXEC_SEL_UPD_USE_REEVALUATION (
    xasl
) `/* multi line expression */`

define QEXEC_UNLOCK_UNQUALIFIED_OID

#define QEXEC_UNLOCK_UNQUALIFIED_OID (
    thread_p,
    xasl
) `/* multi line expression */`

define QPROC_MAX_GROUPED_SCAN_CNT

#define QPROC_MAX_GROUPED_SCAN_CNT `(4)`

define QPROC_SINGLE_CLASS_GROUPED_SCAN

#define QPROC_SINGLE_CLASS_GROUPED_SCAN `(0)`


The documentation for this class was generated from the following file cubrid/src/query/query_executor.c