CUBRID Engine  latest
plan_generation.c File Reference
#include <assert.h>
#include "optimizer.h"
#include "config.h"
#include "object_primitive.h"
#include "query_bitset.h"
#include "query_graph.h"
#include "query_planner.h"
#include "parser.h"
#include "parser_support.h"
#include "system_parameter.h"
#include "xasl.h"
#include "xasl_generation.h"
#include "xasl_predicate.hpp"
Include dependency graph for plan_generation.c:

Go to the source code of this file.

Typedefs

typedef int(* ELIGIBILITY_FN) (QO_TERM *)
 

Functions

static XASL_NODEmake_scan_proc (QO_ENV *env)
 
static XASL_NODEmake_mergelist_proc (QO_ENV *env, QO_PLAN *plan, XASL_NODE *left, PT_NODE *left_list, BITSET *left_exprs, PT_NODE *left_elist, XASL_NODE *rght, PT_NODE *rght_list, BITSET *rght_exprs, PT_NODE *rght_elist)
 
static XASL_NODEmake_fetch_proc (QO_ENV *env, QO_PLAN *plan)
 
static XASL_NODEmake_buildlist_proc (QO_ENV *env, PT_NODE *namelist)
 
static XASL_NODEinit_class_scan_proc (QO_ENV *env, XASL_NODE *xasl, QO_PLAN *plan)
 
static XASL_NODEinit_list_scan_proc (QO_ENV *env, XASL_NODE *xasl, XASL_NODE *list, PT_NODE *namelist, BITSET *predset, int *poslist)
 
static XASL_NODEadd_access_spec (QO_ENV *, XASL_NODE *, QO_PLAN *)
 
static XASL_NODEadd_scan_proc (QO_ENV *env, XASL_NODE *xasl, XASL_NODE *scan)
 
static XASL_NODEadd_fetch_proc (QO_ENV *env, XASL_NODE *xasl, XASL_NODE *proc)
 
static XASL_NODEadd_uncorrelated (QO_ENV *env, XASL_NODE *xasl, XASL_NODE *sub)
 
static XASL_NODEadd_subqueries (QO_ENV *env, XASL_NODE *xasl, BITSET *)
 
static XASL_NODEadd_sort_spec (QO_ENV *, XASL_NODE *, QO_PLAN *, DB_VALUE *, bool)
 
static XASL_NODEadd_if_predicate (QO_ENV *, XASL_NODE *, PT_NODE *)
 
static XASL_NODEadd_after_join_predicate (QO_ENV *, XASL_NODE *, PT_NODE *)
 
static PT_NODEmake_pred_from_bitset (QO_ENV *env, BITSET *predset, ELIGIBILITY_FN safe)
 
static void make_pred_from_plan (QO_ENV *env, QO_PLAN *plan, PT_NODE **key_access_pred, PT_NODE **access_pred, QO_XASL_INDEX_INFO *qo_index_infop, PT_NODE **hash_pred)
 
static PT_NODEmake_if_pred_from_plan (QO_ENV *env, QO_PLAN *plan)
 
static PT_NODEmake_instnum_pred_from_plan (QO_ENV *env, QO_PLAN *plan)
 
static PT_NODEmake_namelist_from_projected_segs (QO_ENV *env, QO_PLAN *plan)
 
static XASL_NODEgen_outer (QO_ENV *, QO_PLAN *, BITSET *, XASL_NODE *, XASL_NODE *, XASL_NODE *)
 
static XASL_NODEgen_inner (QO_ENV *, QO_PLAN *, BITSET *, BITSET *, XASL_NODE *, XASL_NODE *)
 
static XASL_NODEpreserve_info (QO_ENV *env, QO_PLAN *plan, XASL_NODE *xasl)
 
static int is_normal_access_term (QO_TERM *)
 
static int is_normal_if_term (QO_TERM *)
 
static int is_after_join_term (QO_TERM *)
 
static int is_totally_after_join_term (QO_TERM *)
 
static int is_follow_if_term (QO_TERM *)
 
static int is_always_true (QO_TERM *)
 
static QO_XASL_INDEX_INFOqo_get_xasl_index_info (QO_ENV *env, QO_PLAN *plan)
 
static void qo_free_xasl_index_info (QO_ENV *env, QO_XASL_INDEX_INFO *info)
 
static bool qo_validate_regu_var_for_limit (REGU_VARIABLE *var_p)
 
static bool qo_get_limit_from_instnum_pred (PARSER_CONTEXT *parser, PRED_EXPR *pred, REGU_PTR_LIST *lower, REGU_PTR_LIST *upper)
 
static bool qo_get_limit_from_eval_term (PARSER_CONTEXT *parser, PRED_EXPR *pred, REGU_PTR_LIST *lower, REGU_PTR_LIST *upper)
 
static REGU_PTR_LIST regu_ptr_list_create ()
 
static void regu_ptr_list_free (REGU_PTR_LIST list)
 
static REGU_PTR_LIST regu_ptr_list_add_regu (REGU_VARIABLE *var_p, REGU_PTR_LIST list)
 
static bool qo_check_seg_belongs_to_range_term (QO_PLAN *subplan, QO_ENV *env, int seg_idx)
 
static int qo_check_plan_index_for_multi_range_opt (PT_NODE *orderby_nodes, PT_NODE *orderby_sort_list, QO_PLAN *plan, bool *is_valid, int *first_col_idx_pos, bool *reverse)
 
static int qo_check_terms_for_multiple_range_opt (QO_PLAN *plan, int first_sort_col_idx, bool *can_optimize)
 
static bool qo_check_subqueries_for_multi_range_opt (QO_PLAN *plan, int sort_col_idx_pos)
 
static int qo_check_subplans_for_multi_range_opt (QO_PLAN *parent, QO_PLAN *plan, QO_PLAN *sortplan, bool *is_valid, bool *seen)
 
static bool qo_check_subplan_join_cond_for_multi_range_opt (QO_PLAN *parent, QO_PLAN *subplan, QO_PLAN *sort_plan)
 
static bool qo_check_parent_eq_class_for_multi_range_opt (QO_PLAN *parent, QO_PLAN *subplan, QO_PLAN *sort_plan)
 
static XASL_NODEmake_sort_limit_proc (QO_ENV *env, QO_PLAN *plan, PT_NODE *namelist, XASL_NODE *xasl)
 
static PT_NODEqo_get_orderby_num_upper_bound_node (PARSER_CONTEXT *parser, PT_NODE *orderby_for, bool *is_new_node)
 
static int qo_get_multi_col_range_segs (QO_ENV *env, QO_PLAN *plan, QO_INDEX_ENTRY *index_entryp, BITSET *multi_col_segs, BITSET *multi_col_range_segs, BITSET *index_segs)
 
static int bitset_has_path (QO_ENV *env, BITSET *predset)
 
static void mark_access_as_outer_join (PARSER_CONTEXT *parser, XASL_NODE *xasl)
 
static int path_access_term (QO_TERM *term)
 
static int path_if_term (QO_TERM *term)
 
static XASL_NODEcheck_merge_xasl (QO_ENV *env, XASL_NODE *xasl)
 
static void make_outer_instnum (QO_ENV *env, QO_PLAN *outer, QO_PLAN *plan)
 
xasl_nodeqo_to_xasl (QO_PLAN *plan, xasl_node *xasl)
 
PT_NODEqo_plan_iscan_sort_list (QO_PLAN *plan)
 
bool qo_plan_skip_orderby (QO_PLAN *plan)
 
bool qo_plan_skip_groupby (QO_PLAN *plan)
 
bool qo_is_index_covering_scan (QO_PLAN *plan)
 
bool qo_is_index_iss_scan (QO_PLAN *plan)
 
bool qo_is_index_loose_scan (QO_PLAN *plan)
 
bool qo_is_index_mro_scan (QO_PLAN *plan)
 
bool qo_plan_multi_range_opt (QO_PLAN *plan)
 
int qo_xasl_get_num_terms (QO_XASL_INDEX_INFO *info)
 
PT_NODE ** qo_xasl_get_terms (QO_XASL_INDEX_INFO *info)
 
xasl_nodeqo_add_hq_iterations_access_spec (QO_PLAN *plan, xasl_node *xasl)
 
QO_LIMIT_INFOqo_get_key_limit_from_instnum (PARSER_CONTEXT *parser, QO_PLAN *plan, xasl_node *xasl)
 
QO_LIMIT_INFOqo_get_key_limit_from_ordbynum (PARSER_CONTEXT *parser, QO_PLAN *plan, xasl_node *xasl, bool ignore_lower)
 
bool qo_check_iscan_for_multi_range_opt (QO_PLAN *plan)
 
bool qo_check_join_for_multi_range_opt (QO_PLAN *plan)
 
int qo_find_subplan_using_multi_range_opt (QO_PLAN *plan, QO_PLAN **result, int *join_idx)
 

Typedef Documentation

typedef int(* ELIGIBILITY_FN) (QO_TERM *)

Definition at line 41 of file plan_generation.c.

Function Documentation

static XASL_NODE * add_after_join_predicate ( QO_ENV env,
XASL_NODE xasl,
PT_NODE pred 
)
static

Definition at line 1014 of file plan_generation.c.

References xasl_node::after_join_pred, parser, pt_to_pred_expr(), and QO_ENV_PARSER.

Referenced by init_class_scan_proc(), and init_list_scan_proc().

Here is the caller graph for this function:

static XASL_NODE * add_fetch_proc ( QO_ENV env,
XASL_NODE xasl,
XASL_NODE proc 
)
static

Definition at line 809 of file plan_generation.c.

References xasl_node::fptr_list, and NULL.

Referenced by gen_inner(), and gen_outer().

Here is the caller graph for this function:

static XASL_NODE * add_if_predicate ( QO_ENV env,
XASL_NODE xasl,
PT_NODE pred 
)
static

Definition at line 993 of file plan_generation.c.

References xasl_node::if_pred, parser, pt_to_pred_expr(), and QO_ENV_PARSER.

Referenced by add_access_spec(), init_class_scan_proc(), init_list_scan_proc(), and make_fetch_proc().

Here is the caller graph for this function:

static XASL_NODE * add_scan_proc ( QO_ENV env,
XASL_NODE xasl,
XASL_NODE scan 
)
static

Definition at line 784 of file plan_generation.c.

References NULL, and xasl_node::scan_ptr.

Referenced by gen_inner(), and gen_outer().

Here is the caller graph for this function:

static XASL_NODE * add_subqueries ( QO_ENV env,
XASL_NODE xasl,
BITSET subqueries 
)
static
static XASL_NODE * add_uncorrelated ( QO_ENV env,
XASL_NODE xasl,
XASL_NODE sub 
)
static

Definition at line 842 of file plan_generation.c.

References xasl_node::aptr_list, NULL, pt_append_xasl(), and pt_remove_xasl().

Referenced by gen_inner(), and gen_outer().

Here is the caller graph for this function:

static int bitset_has_path ( QO_ENV env,
BITSET predset 
)
static

Definition at line 547 of file plan_generation.c.

References bitset_iterate(), bitset_next_member(), i, QO_ENV_TERM, and QO_IS_PATH_TERM.

Referenced by make_if_pred_from_plan(), and make_pred_from_plan().

Here is the caller graph for this function:

static XASL_NODE * gen_outer ( QO_ENV env,
QO_PLAN plan,
BITSET subqueries,
XASL_NODE inner_scans,
XASL_NODE fetches,
XASL_NODE xasl 
)
static

Definition at line 1566 of file plan_generation.c.

References add_access_spec(), add_fetch_proc(), add_scan_proc(), add_sort_spec(), add_subqueries(), add_uncorrelated(), pt_expr_info::arg1, ARG_FILE_LINE, assert, bitset_add(), bitset_assign(), BITSET_CLEAR, bitset_delset(), bitset_difference(), bitset_init(), bitset_intersect(), bitset_intersects(), bitset_is_empty(), bitset_iterate(), BITSET_MEMBER, bitset_next_member(), bitset_union(), check_merge_xasl(), EMPTY_SET, ER_ERROR_SEVERITY, ER_OUT_OF_VIRTUAL_MEMORY, er_set(), pt_statement_info::expr, qo_plan::follow, free_and_init, gen_inner(), i, qo_plan::info, parser_node::info, init_list_scan_proc(), is_normal_access_term(), IS_OUTER_JOIN_TYPE, is_totally_after_join_term(), qo_plan::join, JOIN_CSELECT, mergelist_proc_node::ls_merge, qfile_list_merge_info::ls_outer_inner_list, qfile_list_merge_info::ls_pos_cnt, qfile_list_merge_info::ls_pos_list, make_buildlist_proc(), make_fetch_proc(), make_mergelist_proc(), make_namelist_from_projected_segs(), make_outer_instnum(), make_sort_limit_proc(), mark_access_as_outer_join(), xasl_node::mergelist, parser_node::next, NO_JOIN, qo_index_entry::nsegs, NULL, pt_expr_info::op, xasl_node::ordbynum_val, p, parser, parser_append_node(), parser_free_tree(), qo_plan::plan_type, qo_plan::plan_un, xasl_node::proc, pt_find_attribute(), pt_gen_simple_merge_plan(), pt_is_expr_node, pt_is_function, pt_left_part(), pt_length_of_list(), pt_point(), PT_RANGE, pt_right_part(), QFILE_INNER_LIST, QFILE_OUTER_LIST, QO_ENV_PARSER, QO_ENV_PT_TREE, QO_ENV_SEG, QO_ENV_TERM, qo_expr_segs(), QO_IS_FAKE_TERM, qo_is_index_covering_scan(), qo_is_iscan(), qo_is_seq_scan(), QO_JOINMETHOD_IDX_JOIN, QO_JOINMETHOD_MERGE_JOIN, QO_JOINMETHOD_NL_JOIN, QO_NODE_SEGS, qo_plan_multi_range_opt(), QO_PLANTYPE_FOLLOW, QO_PLANTYPE_JOIN, QO_PLANTYPE_SCAN, QO_PLANTYPE_SORT, QO_PLANTYPE_WORST, QO_SEG_PT_NODE, QO_TERM_IDX, QO_TERM_PT_EXPR, QO_TERM_SEGS, QO_TERM_SUBQUERIES, qo_plan::sarged_terms, qo_plan::scan, qo_index_entry::seg_idxs, qo_term::segments, qo_plan::sort, SORT_LIMIT, SORT_TEMP, qo_plan::subqueries, and qo_plan::top_rooted.

Referenced by gen_inner(), make_sort_limit_proc(), and qo_to_xasl().

Here is the caller graph for this function:

static int is_after_join_term ( QO_TERM term)
static

Definition at line 1099 of file plan_generation.c.

References bitset_is_empty(), QO_TC_AFTER_JOIN, QO_TERM_CLASS, and QO_TERM_SUBQUERIES.

Referenced by init_class_scan_proc(), and init_list_scan_proc().

Here is the caller graph for this function:

static int is_always_true ( QO_TERM term)
static

Definition at line 1156 of file plan_generation.c.

Referenced by make_mergelist_proc(), and make_pred_from_plan().

Here is the caller graph for this function:

static int is_follow_if_term ( QO_TERM term)
static

Definition at line 1139 of file plan_generation.c.

References QO_TC_AFTER_JOIN, QO_TC_DURING_JOIN, QO_TC_TOTALLY_AFTER_JOIN, and QO_TERM_CLASS.

Referenced by make_if_pred_from_plan().

Here is the caller graph for this function:

static int is_normal_access_term ( QO_TERM term)
static

Definition at line 1055 of file plan_generation.c.

References bitset_is_empty(), QO_TC_AFTER_JOIN, QO_TC_OTHER, QO_TC_TOTALLY_AFTER_JOIN, QO_TERM_CLASS, and QO_TERM_SUBQUERIES.

Referenced by gen_outer(), init_list_scan_proc(), and make_pred_from_plan().

Here is the caller graph for this function:

static int is_normal_if_term ( QO_TERM term)
static

Definition at line 1079 of file plan_generation.c.

References bitset_is_empty(), QO_TC_OTHER, QO_TERM_CLASS, and QO_TERM_SUBQUERIES.

Referenced by init_list_scan_proc(), and make_if_pred_from_plan().

Here is the caller graph for this function:

static int is_totally_after_join_term ( QO_TERM term)
static

Definition at line 1119 of file plan_generation.c.

References bitset_is_empty(), QO_TC_TOTALLY_AFTER_JOIN, QO_TERM_CLASS, and QO_TERM_SUBQUERIES.

Referenced by gen_outer(), init_list_scan_proc(), make_instnum_pred_from_plan(), make_outer_instnum(), and path_if_term().

Here is the caller graph for this function:

static XASL_NODE * make_buildlist_proc ( QO_ENV env,
PT_NODE namelist 
)
static

Definition at line 535 of file plan_generation.c.

References pt_skeleton_buildlist_proc(), and QO_ENV_PARSER.

Referenced by gen_inner(), gen_outer(), and make_sort_limit_proc().

Here is the caller graph for this function:

static XASL_NODE * make_fetch_proc ( QO_ENV env,
QO_PLAN plan 
)
static
static PT_NODE * make_if_pred_from_plan ( QO_ENV env,
QO_PLAN plan 
)
static
static PT_NODE * make_instnum_pred_from_plan ( QO_ENV env,
QO_PLAN plan 
)
static

Definition at line 1411 of file plan_generation.c.

References is_totally_after_join_term(), make_pred_from_bitset(), and qo_plan::sarged_terms.

Referenced by add_access_spec(), and add_sort_spec().

Here is the caller graph for this function:

static XASL_NODE * make_mergelist_proc ( QO_ENV env,
QO_PLAN plan,
XASL_NODE left,
PT_NODE left_list,
BITSET left_exprs,
PT_NODE left_elist,
XASL_NODE rght,
PT_NODE rght_list,
BITSET rght_exprs,
PT_NODE rght_elist 
)
static

Definition at line 173 of file plan_generation.c.

References xasl_node::after_join_pred, ARG_FILE_LINE, assert, bitset_assign(), bitset_cardinality(), bitset_delset(), bitset_first_member(), bitset_init(), bitset_intersect(), bitset_iterate(), BITSET_MEMBER, bitset_next_member(), qfile_tuple_value_position::dom, ER_ERROR_SEVERITY, ER_FAILED_ASSERTION, ER_OUT_OF_VIRTUAL_MEMORY, er_set(), ER_WARNING_SEVERITY, free_and_init, i, mergelist_proc_node::inner_spec_list, mergelist_proc_node::inner_val_list, is_always_true(), qo_plan::join, JOIN_INNER, qfile_list_merge_info::join_type, qfile_list_merge_info::ls_column_cnt, qfile_list_merge_info::ls_inner_column, qfile_list_merge_info::ls_inner_unique, mergelist_proc_node::ls_merge, qfile_list_merge_info::ls_outer_column, qfile_list_merge_info::ls_outer_inner_list, qfile_list_merge_info::ls_outer_unique, qfile_list_merge_info::ls_pos_cnt, qfile_list_merge_info::ls_pos_list, make_pred_from_bitset(), xasl_node::mergelist, sort_list::next, parser_node::next, NULL, xasl_node::orderby_list, mergelist_proc_node::outer_spec_list, mergelist_proc_node::outer_val_list, parser, parser_free_tree(), qo_plan::plan_un, sort_list::pos_descr, qfile_tuple_value_position::pos_no, xasl_node::proc, pt_alloc_packing_buf(), pt_find_attribute(), pt_length_of_list(), pt_to_pred_expr(), pt_xasl_node_to_domain(), ptqo_single_orderby(), ptqo_to_list_scan_proc(), ptqo_to_merge_list_proc(), QFILE_INNER_LIST, QFILE_OUTER_LIST, QO_ENV_PARSER, QO_ENV_SEG, QO_ENV_TERM, QO_IS_PATH_TERM, QO_SEG_PT_NODE, QO_TERM_SEGS, QPROC_SINGLE_OUTER, S_ASC, sort_list::s_order, SCAN_PROC, qfile_list_merge_info::single_fetch, xasl_node::spec_list, and xasl_node::val_list.

Referenced by gen_outer().

Here is the caller graph for this function:

static PT_NODE * make_namelist_from_projected_segs ( QO_ENV env,
QO_PLAN plan 
)
static

Definition at line 1432 of file plan_generation.c.

References bitset_iterate(), bitset_next_member(), i, qo_plan::info, parser_node::next, NULL, parser, pt_point(), QO_ENV_PARSER, QO_ENV_SEG, and QO_SEG_PT_NODE.

Referenced by gen_inner(), and gen_outer().

Here is the caller graph for this function:

static void make_outer_instnum ( QO_ENV env,
QO_PLAN outer,
QO_PLAN plan 
)
static

Definition at line 1536 of file plan_generation.c.

References bitset_add(), bitset_iterate(), bitset_next_member(), is_totally_after_join_term(), QO_ENV_TERM, and qo_plan::sarged_terms.

Referenced by gen_outer().

Here is the caller graph for this function:

static XASL_NODE * make_scan_proc ( QO_ENV env)
static

Definition at line 117 of file plan_generation.c.

References NULL, ptqo_to_scan_proc(), and QO_ENV_PARSER.

Referenced by gen_inner().

Here is the caller graph for this function:

static void mark_access_as_outer_join ( PARSER_CONTEXT parser,
XASL_NODE xasl 
)
static

Definition at line 574 of file plan_generation.c.

References access_spec_node::next, QPROC_NO_SINGLE_OUTER, access_spec_node::single_fetch, and xasl_node::spec_list.

Referenced by gen_outer().

Here is the caller graph for this function:

static int path_access_term ( QO_TERM term)
static

Definition at line 1033 of file plan_generation.c.

References QO_IS_PATH_TERM.

Referenced by make_pred_from_plan().

Here is the caller graph for this function:

static int path_if_term ( QO_TERM term)
static

Definition at line 1044 of file plan_generation.c.

References is_totally_after_join_term(), and QO_IS_PATH_TERM.

Referenced by make_if_pred_from_plan().

Here is the caller graph for this function:

static bool qo_check_parent_eq_class_for_multi_range_opt ( QO_PLAN parent,
QO_PLAN subplan,
QO_PLAN sort_plan 
)
static
static bool qo_check_subplan_join_cond_for_multi_range_opt ( QO_PLAN parent,
QO_PLAN subplan,
QO_PLAN sort_plan 
)
static
static int qo_check_subplans_for_multi_range_opt ( QO_PLAN parent,
QO_PLAN plan,
QO_PLAN sortplan,
bool is_valid,
bool seen 
)
static
static bool qo_check_subqueries_for_multi_range_opt ( QO_PLAN plan,
int  sort_col_idx_pos 
)
static
int qo_find_subplan_using_multi_range_opt ( QO_PLAN plan,
QO_PLAN **  result,
int *  join_idx 
)
static void qo_free_xasl_index_info ( QO_ENV env,
QO_XASL_INDEX_INFO info 
)
static
static bool qo_get_limit_from_instnum_pred ( PARSER_CONTEXT parser,
PRED_EXPR pred,
REGU_PTR_LIST lower,
REGU_PTR_LIST upper 
)
static
static int qo_get_multi_col_range_segs ( QO_ENV env,
QO_PLAN plan,
QO_INDEX_ENTRY index_entryp,
BITSET multi_col_segs,
BITSET multi_col_range_segs,
BITSET index_segs 
)
static
static PT_NODE * qo_get_orderby_num_upper_bound_node ( PARSER_CONTEXT parser,
PT_NODE orderby_for,
bool is_new_node 
)
static
PT_NODE* qo_plan_iscan_sort_list ( QO_PLAN plan)

Definition at line 2436 of file plan_generation.c.

References qo_plan::iscan_sort_list.

Referenced by pt_to_buildlist_proc().

Here is the caller graph for this function:

bool qo_plan_skip_groupby ( QO_PLAN plan)

Definition at line 2460 of file plan_generation.c.

References qo_plan::plan_type, qo_plan::plan_un, QO_PLANTYPE_SCAN, and qo_plan::scan.

Referenced by pt_to_buildlist_proc().

Here is the caller graph for this function:

bool qo_plan_skip_orderby ( QO_PLAN plan)

Definition at line 2447 of file plan_generation.c.

References qo_plan::plan_type, qo_plan::plan_un, QO_PLANTYPE_SORT, qo_plan::sort, SORT_DISTINCT, and SORT_ORDERBY.

Referenced by pt_to_buildlist_proc().

Here is the caller graph for this function:

static bool qo_validate_regu_var_for_limit ( REGU_VARIABLE var_p)
static
int qo_xasl_get_num_terms ( QO_XASL_INDEX_INFO info)

Definition at line 2893 of file plan_generation.c.

References qo_xasl_index_info::nterms.

Referenced by pt_to_index_attrs(), and pt_to_index_info().

Here is the caller graph for this function:

PT_NODE** qo_xasl_get_terms ( QO_XASL_INDEX_INFO info)

Definition at line 2905 of file plan_generation.c.

References qo_xasl_index_info::term_exprs.

Referenced by pt_to_index_attrs(), and pt_to_index_info().

Here is the caller graph for this function:

static REGU_PTR_LIST regu_ptr_list_add_regu ( REGU_VARIABLE var_p,
REGU_PTR_LIST  list 
)
static

Definition at line 3036 of file plan_generation.c.

References db_private_alloc, regu_ptr_list_node::next, NULL, regu_ptr_list_free(), and regu_ptr_list_node::var_p.

Referenced by qo_get_limit_from_eval_term().

Here is the caller graph for this function:

static REGU_PTR_LIST regu_ptr_list_create ( )
static
static void regu_ptr_list_free ( REGU_PTR_LIST  list)
static

Definition at line 3015 of file plan_generation.c.

References db_private_free, regu_ptr_list_node::next, and NULL.

Referenced by qo_get_key_limit_from_instnum(), qo_get_key_limit_from_ordbynum(), and regu_ptr_list_add_regu().

Here is the caller graph for this function: