CUBRID Engine
latest
|
#include <setjmp.h>
#include "work_space.h"
#include "statistics.h"
#include "optimizer.h"
#include "parser.h"
#include "query_bitset.h"
Go to the source code of this file.
Classes | |
struct | qo_class_info_entry |
struct | qo_class_info |
struct | qo_attr_info |
struct | qo_index_entry |
struct | qo_index |
struct | qo_node_index_entry |
struct | qo_node_index |
struct | qo_using_index_entry |
struct | qo_using_index |
struct | qo_node |
struct | qo_segment |
struct | qo_eqclass |
struct | qo_term |
struct | qo_subquery |
struct | qo_partition |
struct | qo_env |
struct | qo_xasl_index_info |
Macros | |
#define | QO_ENTRY_MULTI_COL(entry) ((entry)->col_num > 1 ? true : false) |
#define | QO_INDEX_INDEX(ind, n) (&(ind)->index[(n)]) |
#define | QO_GET_CLASS_STATS(entryp) ((entryp)->self_allocated ? (entryp)->stats : (entryp)->smclass->stats) |
#define | QO_NI_N(ni) ((ni)->n) |
#define | QO_NI_ENTRY(ni, n) (&(ni)->index[(n)]) |
#define | QO_UI_N(ui) ((ui)->n) |
#define | QO_UI_INDEX(ui, n) ((ui)->index[(n)].name) |
#define | QO_UI_FORCE(ui, n) ((ui)->index[(n)].force) |
#define | QO_UI_KEYLIMIT(ui, n) ((ui)->index[(n)].key_limit) |
#define | QO_NODE_ENV(node) (node)->env |
#define | QO_NODE_ENTITY_SPEC(node) (node)->entity_spec |
#define | QO_NODE_PT_JOIN_TYPE(node) (node)->entity_spec->info.spec.join_type |
#define | QO_NODE_LOCATION(node) (node)->entity_spec->info.spec.location |
#define | QO_NODE_OID_SEG(node) (node)->oid_seg |
#define | QO_NODE_EQCLASSES(node) (node)->eqclasses |
#define | QO_NODE_PARTITION(node) (node)->partition |
#define | QO_NODE_DEP_SET(node) (node)->dep_set |
#define | QO_NODE_SARGS(node) (node)->sargs |
#define | QO_NODE_SELECTIVITY(node) (node)->selectivity |
#define | QO_NODE_SUBQUERIES(node) (node)->subqueries |
#define | QO_NODE_SEGS(node) (node)->segs |
#define | QO_NODE_IDX(node) (node)->idx |
#define | QO_NODE_REL_IDX(node) (node)->rel_idx |
#define | QO_NODE_INDEXES(node) (node)->indexes |
#define | QO_NODE_USING_INDEX(node) (node)->using_index |
#define | QO_NODE_OUTER_DEP_SET(node) (node)->outer_dep_set |
#define | QO_NODE_RIGHT_DEP_SET(node) (node)->right_dep_set |
#define | QO_NODE_SARGABLE(node) (node)->sargable |
#define | QO_NODE_NAME(node) (node)->class_name |
#define | QO_NODE_OIDP(node) (&(node)->info->info[0].oid) |
#define | QO_NODE_INFO(node) (node)->info |
#define | QO_NODE_INFO_N(node) (node)->info->n |
#define | QO_NODE_NCARD(node) (node)->ncard |
#define | QO_NODE_TCARD(node) (node)->tcard |
#define | QO_NODE_HINT(node) (node)->hint |
#define | QO_NODE_INFO_SMCLASS(node) (node)->info[0].info->smclass |
#define | QO_NODE_SORT_LIMIT_CANDIDATE(node) (node)->sort_limit_candidate |
#define | QO_NODE_IS_CLASS_HIERARCHY(node) |
#define | QO_NODE_IS_CLASS_PARTITIONED(node) |
#define | QO_NODE_IS_OUTER_JOIN(node) |
#define | QO_ADD_OUTER_DEP_SET(tail, head) |
#define | QO_ADD_RIGHT_DEP_SET(tail, head) |
#define | QO_ADD_RIGHT_TO_OUTER(tail, head) bitset_union (&(QO_NODE_OUTER_DEP_SET (tail)), &(QO_NODE_RIGHT_DEP_SET (head))); |
#define | QO_SEG_ENV(seg) (seg)->env |
#define | QO_SEG_PT_NODE(seg) (seg)->pt_node |
#define | QO_SEG_HEAD(seg) (seg)->head |
#define | QO_SEG_TAIL(seg) (seg)->tail |
#define | QO_SEG_EQ_ROOT(seg) (seg)->eq_root |
#define | QO_SEG_EQCLASS(seg) (seg)->eqclass |
#define | QO_SEG_NAME(seg) (seg)->name |
#define | QO_SEG_SET_VALUED(seg) (seg)->set_valued |
#define | QO_SEG_CLASS_ATTR(seg) (seg)->class_attr |
#define | QO_SEG_SHARED_ATTR(seg) (seg)->shared_attr |
#define | QO_SEG_INFO(seg) (seg)->info |
#define | QO_SEG_IDX(seg) (seg)->idx |
#define | QO_SEG_IS_SET_VALUED(seg) (seg)->set_valued |
#define | QO_SEG_ATTR_ID(seg) QO_SEG_ATTR_STATS(seg)->id |
#define | QO_SEG_IS_OID_SEG(seg) (QO_NODE_OID_SEG(QO_SEG_HEAD(seg)) == seg) |
#define | QO_SEG_INDEX_TERMS(seg) (seg)->index_terms |
#define | QO_SEG_FUNC_INDEX(seg) (seg)->is_function_index |
#define | OID_SEG_NAME "OID$" |
#define | QO_UNORDERED ((QO_EQCLASS*)NULL) |
#define | QO_EQCLASS_ENV(e) (e)->env |
#define | QO_EQCLASS_SEGS(e) (e)->segs |
#define | QO_EQCLASS_TERM(e) (e)->term |
#define | QO_EQCLASS_IDX(e) (e)->idx |
#define | QO_IS_PATH_TERM(t) (QO_TERM_CLASS(t) & 0x20) |
#define | QO_IS_EDGE_TERM(t) (QO_TERM_CLASS(t) & 0x10) |
#define | QO_IS_FAKE_TERM(t) (QO_TERM_CLASS(t) & 0x08) |
#define | QO_IS_DEP_TERM(t) (QO_TERM_CLASS(t) == QO_TC_DEP_LINK || QO_TERM_CLASS(t) == QO_TC_DEP_JOIN) |
#define | QO_TERM_ENV(t) (t)->env |
#define | QO_TERM_CLASS(t) (t)->term_class |
#define | QO_TERM_NODES(t) (t)->nodes |
#define | QO_TERM_SEGS(t) (t)->segments |
#define | QO_TERM_SELECTIVITY(t) (t)->selectivity |
#define | QO_TERM_RANK(t) (t)->rank |
#define | QO_TERM_HEAD(t) (t)->head |
#define | QO_TERM_TAIL(t) (t)->tail |
#define | QO_TERM_IDX(t) (t)->idx |
#define | QO_TERM_PT_EXPR(t) (t)->pt_expr |
#define | QO_TERM_LOCATION(t) (t)->location |
#define | QO_TERM_SUBQUERIES(t) (t)->subqueries |
#define | QO_TERM_SEG(t) (t)->seg |
#define | QO_TERM_OID_SEG(t) (t)->oid_seg |
#define | QO_TERM_EQCLASS(t) (t)->eqclass |
#define | QO_TERM_NOMINAL_SEG(t) (t)->nominal_seg |
#define | QO_TERM_CAN_USE_INDEX(t) (t)->can_use_index |
#define | QO_TERM_INDEX_SEG(t, i) (t)->index_seg[(i)] |
#define | QO_TERM_JOIN_TYPE(t) (t)->join_type |
#define | QO_TERM_FLAG(t) (t)->flag |
#define | QO_TERM_MULTI_COL_SEGS(t) (t)->multi_col_segs |
#define | QO_TERM_MULTI_COL_CNT(t) (t)->multi_col_cnt |
#define | QO_TERM_EQUAL_OP 1 /* is equal op ? */ |
#define | QO_TERM_RANGELIST 2 /* is RANGE (r1, r2, ...) ? */ |
#define | QO_TERM_SINGLE_PRED 4 /* is single_pred ? */ |
#define | QO_TERM_COPY_PT_EXPR 8 /* pt_expr is copyed ? */ |
#define | QO_TERM_MERGEABLE_EDGE 16 /* suitable as a m-join edge ? */ |
#define | QO_TERM_NON_IDX_SARG_COLL 32 /* not suitable for key range/filter */ |
#define | QO_TERM_MULTI_COLL_PRED 64 /* multi column && in OP, (a,b) in .. */ |
#define | QO_TERM_MULTI_COLL_CONST 128 /* multi column && have constant value, (a,1) in .. */ |
#define | QO_TERM_OR_PRED 256 /* or predicate. e.g.) a=1 or b=2 */ |
#define | QO_TERM_IS_FLAGED(t, f) (QO_TERM_FLAG(t) & (int) (f)) |
#define | QO_TERM_SET_FLAG(t, f) QO_TERM_FLAG(t) |= (int) (f) |
#define | QO_TERM_CLEAR_FLAG(t, f) QO_TERM_FLAG(t) &= (int) ~(f) |
#define | QO_PARTITION_NODES(p) (p)->nodes |
#define | QO_PARTITION_EDGES(p) (p)->edges |
#define | QO_PARTITION_DEPENDENCIES(p) (p)->dependencies |
#define | QO_PARTITION_M_OFFSET(p) (p)->M_offset |
#define | QO_PARTITION_PLAN(p) (p)->plan |
#define | QO_PARTITION_IDX(p) (p)->idx |
#define | QO_ENV_SEG(env, n) (&(env)->segs[(n)]) |
#define | QO_ENV_NODE(env, n) (&(env)->nodes[(n)]) |
#define | QO_ENV_EQCLASS(env, n) (&(env)->eqclasses[(n)]) |
#define | QO_ENV_TERM(env, n) (&(env)->terms[(n)]) |
#define | QO_ENV_PARTITION(env, n) (&(env)->partitions[(n)]) |
#define | QO_ENV_SUBQUERY(env, n) (&(env)->subqueries[(n)]) |
#define | QO_ENV_PREV_SEG(env) (env)->prev_seg |
#define | QO_ENV_PARSER(env) (env)->parser |
#define | QO_ENV_PT_TREE(env) (env)->pt_tree |
#define | QO_ENV_TMP_BITSET(env) (env)->tmp_bitset |
#define | QO_ENV_LIMIT_VALUE(env) (env)->limit_value |
#define | QO_ENV_SORT_LIMIT_NODES(env) (env)->sort_limit_nodes |
#define | QO_ENV_USE_SORT_LIMIT(env) ((env)->use_sort_limit == QO_SL_USE) |
#define | QO_ON_COND_TERM(term) (QO_TERM_LOCATION(term) > 0) |
#define | QO_INNER_JOIN_TERM(term) |
#define | QO_OUTER_JOIN_TERM(term) |
#define | QO_LEFT_OUTER_JOIN_TERM(term) |
#define | QO_RIGHT_OUTER_JOIN_TERM(term) |
#define | QO_FULL_OUTER_JOIN_TERM(term) |
#define | QO_JOIN_INFO_SIZE(_partition) (int)(1 << bitset_cardinality(&(QO_PARTITION_NODES(_partition)))) |
Typedefs | |
typedef struct qo_class_info_entry | QO_CLASS_INFO_ENTRY |
Enumerations | |
enum | QO_TERMCLASS { QO_TC_PATH = 0x30, QO_TC_JOIN = 0x11, QO_TC_SARG = 0x02, QO_TC_OTHER = 0x03, QO_TC_DEP_LINK = 0x1c, QO_TC_DEP_JOIN = 0x1d, QO_TC_DURING_JOIN = 0x04, QO_TC_AFTER_JOIN = 0x05, QO_TC_TOTALLY_AFTER_JOIN = 0x06, QO_TC_DUMMY_JOIN = 0x1f } |
enum | QO_SORT_LIMIT_USE { QO_SL_INVALID, QO_SL_USE, QO_SL_POSSIBLE } |
Functions | |
void | qo_env_free (QO_ENV *) |
void | qo_seg_fprint (QO_SEGMENT *, FILE *) |
void | qo_node_fprint (QO_NODE *, FILE *) |
void | qo_term_fprint (QO_TERM *, FILE *) |
void | qo_print_stats (FILE *) |
void | qo_eqclass_fprint_wrt (QO_EQCLASS *, BITSET *, FILE *) |
void | qo_termset_fprint (QO_ENV *, BITSET *, FILE *) |
int | qo_seg_width (QO_SEGMENT *seg) |
bool | qo_is_prefix_index (QO_INDEX_ENTRY *) |
bool | qo_is_filter_index (QO_INDEX_ENTRY *) |
void | qo_check_coll_optimization (QO_INDEX_ENTRY *ent, COLL_OPT *collation_opt) |
bool | qo_check_type_index_covering (QO_INDEX_ENTRY *ent) |
Variables | |
double | QO_INFINITY |
#define OID_SEG_NAME "OID$" |
Definition at line 525 of file query_graph.h.
#define QO_ADD_OUTER_DEP_SET | ( | tail, | |
head | |||
) |
Definition at line 427 of file query_graph.h.
Referenced by qo_add_dummy_join_term(), and qo_analyze_term().
#define QO_ADD_RIGHT_DEP_SET | ( | tail, | |
head | |||
) |
Definition at line 431 of file query_graph.h.
Referenced by qo_add_dummy_join_term(), and qo_analyze_term().
#define QO_ADD_RIGHT_TO_OUTER | ( | tail, | |
head | |||
) | bitset_union (&(QO_NODE_OUTER_DEP_SET (tail)), &(QO_NODE_RIGHT_DEP_SET (head))); |
Definition at line 435 of file query_graph.h.
Referenced by qo_add_dummy_join_term(), and qo_analyze_term().
#define QO_ENTRY_MULTI_COL | ( | entry | ) | ((entry)->col_num > 1 ? true : false) |
Definition at line 187 of file query_graph.h.
Referenced by pt_to_index_info(), qo_generate_index_scan(), qo_generate_loose_index_scan(), qo_get_ils_prefix_length(), qo_is_index_iss_scan(), qo_is_index_loose_scan(), qo_is_index_mro_scan(), qo_is_iss_index(), qo_plan_compute_iscan_sort_list(), and qo_plan_multi_range_opt().
#define QO_ENV_EQCLASS | ( | env, | |
n | |||
) | (&(env)->eqclasses[(n)]) |
Definition at line 959 of file query_graph.h.
Referenced by qo_check_parent_eq_class_for_multi_range_opt(), qo_env_dump(), qo_env_free(), and qo_eqclass_new().
#define QO_ENV_LIMIT_VALUE | ( | env | ) | (env)->limit_value |
Definition at line 967 of file query_graph.h.
Referenced by qo_discover_sort_limit_nodes(), qo_env_free(), qo_env_new(), qo_mjoin_cost(), and qo_nljoin_cost().
#define QO_ENV_NODE | ( | env, | |
n | |||
) | (&(env)->nodes[(n)]) |
Definition at line 958 of file query_graph.h.
Referenced by add_hint(), add_hint_args(), add_using_index(), build_graph_for_entity(), build_query_graph_function_index(), lookup_node(), planner_nodeset_join_cost(), planner_permutate(), planner_visit_node(), qo_add_dep_term(), qo_add_node(), qo_add_term(), qo_analyze_term(), qo_check_subplan_join_cond_for_multi_range_opt(), qo_classify_outerjoin_terms(), qo_discover_edges(), qo_discover_indexes(), qo_discover_partitions(), qo_discover_sort_limit_join_nodes(), qo_discover_sort_limit_nodes(), qo_dump_planner_info(), qo_env_dump(), qo_env_free(), qo_examine_idx_join(), qo_examine_merge_join(), qo_examine_nl_join(), qo_join_new(), qo_node_clear(), qo_optimize_helper(), qo_search_partition(), qo_search_partition_join(), and qo_term_string().
#define QO_ENV_PARSER | ( | env | ) | (env)->parser |
Definition at line 964 of file query_graph.h.
Referenced by add_access_spec(), add_after_join_predicate(), add_if_predicate(), add_sort_spec(), build_graph_for_entity(), gen_outer(), get_local_subqueries(), get_term_subqueries(), init_class_scan_proc(), init_list_scan_proc(), lookup_seg(), make_buildlist_proc(), make_fetch_proc(), make_mergelist_proc(), make_namelist_from_projected_segs(), make_pred_from_bitset(), make_scan_proc(), make_sort_limit_proc(), preserve_info(), qo_add_hq_iterations_access_spec(), qo_add_term(), qo_analyze_term(), qo_discover_sort_limit_nodes(), qo_insert_segment(), qo_optimize_helper(), qo_plan_add_to_free_list(), qo_plan_compute_iscan_sort_list(), qo_plan_is_orderby_skip_candidate(), qo_scan_fprint(), qo_scan_info(), qo_seg_width(), qo_term_dump(), qo_term_free(), qo_term_string(), and qo_top_plan_new().
#define QO_ENV_PARTITION | ( | env, | |
n | |||
) | (&(env)->partitions[(n)]) |
Definition at line 961 of file query_graph.h.
Referenced by qo_discover_partitions(), qo_discover_sort_limit_nodes(), qo_env_dump(), and qo_env_free().
#define QO_ENV_PREV_SEG | ( | env | ) | (env)->prev_seg |
Definition at line 963 of file query_graph.h.
#define QO_ENV_PT_TREE | ( | env | ) | (env)->pt_tree |
Definition at line 965 of file query_graph.h.
Referenced by add_sort_spec(), gen_outer(), get_local_subqueries(), make_sort_limit_proc(), preserve_info(), qo_check_groupby_skip_descending(), qo_check_iscan_for_multi_range_opt(), qo_check_join_for_multi_range_opt(), qo_check_orderby_skip_descending(), qo_discover_sort_limit_nodes(), qo_is_coverage_index(), qo_optimize_helper(), qo_plan_compute_iscan_sort_list(), qo_plan_is_orderby_skip_candidate(), qo_plan_print_sort_spec(), qo_plan_scan_print_json(), qo_plan_scan_print_text(), qo_scan_fprint(), qo_scan_info(), qo_search_partition_join(), qo_search_planner(), qo_top_plan_new(), qo_validate(), qo_validate_index_attr_notnull(), qo_validate_index_for_groupby(), and qo_validate_index_for_orderby().
#define QO_ENV_SEG | ( | env, | |
n | |||
) | (&(env)->segs[(n)]) |
Definition at line 957 of file query_graph.h.
Referenced by build_query_graph_function_index(), gen_outer(), lookup_seg(), make_mergelist_proc(), make_namelist_from_projected_segs(), pt_fix_first_term_expr_for_iss(), pt_fix_first_term_func_index_for_iss(), qo_analyze_term(), qo_assign_eq_classes(), qo_check_parent_eq_class_for_multi_range_opt(), qo_check_plan_index_for_multi_range_opt(), qo_check_subplan_join_cond_for_multi_range_opt(), qo_check_subqueries_for_multi_range_opt(), qo_check_terms_for_multiple_range_opt(), qo_compute_projected_size(), qo_env_dump(), qo_env_free(), qo_eqclass_dump(), qo_eqclass_wrt(), qo_find_index_segs(), qo_get_index_info(), qo_insert_segment(), qo_is_coverage_index(), qo_is_iss_index(), qo_plan_compute_iscan_sort_list(), qo_seg_clear(), qo_seg_nodes(), qo_subquery_dump(), and qo_validate_index_term_notnull().
#define QO_ENV_SORT_LIMIT_NODES | ( | env | ) | (env)->sort_limit_nodes |
Definition at line 968 of file query_graph.h.
Referenced by qo_check_new_best_plan_on_info(), qo_discover_sort_limit_nodes(), qo_env_free(), and qo_env_new().
#define QO_ENV_SUBQUERY | ( | env, | |
n | |||
) | (&(env)->subqueries[(n)]) |
Definition at line 962 of file query_graph.h.
Referenced by qo_check_subqueries_for_multi_range_opt().
#define QO_ENV_TERM | ( | env, | |
n | |||
) | (&(env)->terms[(n)]) |
Definition at line 960 of file query_graph.h.
Referenced by bitset_has_path(), gen_outer(), get_local_subqueries(), get_rank(), make_mergelist_proc(), make_outer_instnum(), make_pred_from_bitset(), planner_visit_node(), qo_add_dep_term(), qo_add_dummy_join_term(), qo_add_term(), qo_analyze_term(), qo_assign_eq_classes(), qo_check_seg_belongs_to_range_term(), qo_check_subplan_join_cond_for_multi_range_opt(), qo_check_subqueries_for_multi_range_opt(), qo_check_terms_for_multiple_range_opt(), qo_classify_outerjoin_terms(), qo_discover_edges(), qo_discover_indexes(), qo_discover_partitions(), qo_discover_sort_limit_join_nodes(), qo_env_dump(), qo_env_free(), qo_examine_correlated_index(), qo_examine_merge_join(), qo_examine_nl_join(), qo_find_index_seg_terms(), qo_find_index_terms(), qo_generate_index_scan(), qo_generate_join_index_scan(), qo_get_multi_col_range_segs(), qo_get_xasl_index_info(), qo_has_is_not_null_term(), qo_index_scan_new(), qo_is_coverage_index(), qo_is_pk_fk_full_join(), qo_iscan_cost(), qo_join_info(), qo_plan_cmp(), qo_plan_compute_iscan_sort_list(), qo_plan_scan_print_json(), qo_plan_scan_print_text(), qo_scan_info(), qo_search_partition_join(), qo_term_clear(), qo_termset_fprint(), qo_top_plan_new(), qo_validate_index_attr_notnull(), and qo_validate_index_term_notnull().
#define QO_ENV_TMP_BITSET | ( | env | ) | (env)->tmp_bitset |
Definition at line 966 of file query_graph.h.
Referenced by qo_expr_segs(), and set_seg_expr().
#define QO_ENV_USE_SORT_LIMIT | ( | env | ) | ((env)->use_sort_limit == QO_SL_USE) |
Definition at line 969 of file query_graph.h.
Referenced by qo_check_new_best_plan_on_info(), qo_join_new(), and qo_search_planner().
#define QO_EQCLASS_ENV | ( | e | ) | (e)->env |
Definition at line 555 of file query_graph.h.
Referenced by qo_eqclass_dump(), qo_eqclass_new(), and qo_eqclass_wrt().
#define QO_EQCLASS_IDX | ( | e | ) | (e)->idx |
Definition at line 558 of file query_graph.h.
Referenced by qo_check_plan_on_info(), qo_eqclass_add(), qo_eqclass_new(), qo_find_best_plan_on_info(), and qo_plan_order_by().
#define QO_EQCLASS_SEGS | ( | e | ) | (e)->segs |
Definition at line 556 of file query_graph.h.
Referenced by qo_check_new_best_plan_on_info(), qo_check_parent_eq_class_for_multi_range_opt(), qo_eqclass_add(), qo_eqclass_dump(), qo_eqclass_fprint_wrt(), qo_eqclass_free(), qo_eqclass_new(), qo_eqclass_wrt(), and qo_join_new().
#define QO_EQCLASS_TERM | ( | e | ) | (e)->term |
Definition at line 557 of file query_graph.h.
Referenced by qo_assign_eq_classes(), qo_eqclass_dump(), qo_eqclass_fprint_wrt(), and qo_eqclass_new().
#define QO_FULL_OUTER_JOIN_TERM | ( | term | ) |
Definition at line 1019 of file query_graph.h.
#define QO_GET_CLASS_STATS | ( | entryp | ) | ((entryp)->self_allocated ? (entryp)->stats : (entryp)->smclass->stats) |
Definition at line 201 of file query_graph.h.
Referenced by qo_add_node(), qo_get_attr_info(), qo_get_attr_info_func_index(), and qo_get_index_info().
#define QO_INDEX_INDEX | ( | ind, | |
n | |||
) | (&(ind)->index[(n)]) |
Definition at line 196 of file query_graph.h.
Referenced by is_index_compatible(), qo_alloc_index(), qo_find_matching_index(), qo_find_node_indexes(), and qo_free_index().
#define QO_INNER_JOIN_TERM | ( | term | ) |
Definition at line 998 of file query_graph.h.
#define QO_IS_DEP_TERM | ( | t | ) | (QO_TERM_CLASS(t) == QO_TC_DEP_LINK || QO_TERM_CLASS(t) == QO_TC_DEP_JOIN) |
Definition at line 586 of file query_graph.h.
Referenced by get_term_subqueries().
#define QO_IS_EDGE_TERM | ( | t | ) | (QO_TERM_CLASS(t) & 0x10) |
Definition at line 584 of file query_graph.h.
Referenced by planner_visit_node(), qo_discover_edges(), and qo_search_partition_join().
#define QO_IS_FAKE_TERM | ( | t | ) | (QO_TERM_CLASS(t) & 0x08) |
Definition at line 585 of file query_graph.h.
Referenced by gen_outer(), get_term_rank(), and make_pred_from_bitset().
#define QO_IS_PATH_TERM | ( | t | ) | (QO_TERM_CLASS(t) & 0x20) |
Definition at line 583 of file query_graph.h.
Referenced by bitset_has_path(), make_mergelist_proc(), path_access_term(), path_if_term(), and planner_visit_node().
#define QO_JOIN_INFO_SIZE | ( | _partition | ) | (int)(1 << bitset_cardinality(&(QO_PARTITION_NODES(_partition)))) |
Definition at line 1024 of file query_graph.h.
Referenced by qo_discover_partitions(), qo_dump_planner_info(), and qo_search_planner().
#define QO_LEFT_OUTER_JOIN_TERM | ( | term | ) |
Definition at line 1009 of file query_graph.h.
#define QO_NI_ENTRY | ( | ni, | |
n | |||
) | (&(ni)->index[(n)]) |
Definition at line 238 of file query_graph.h.
Referenced by qo_discover_indexes(), qo_examine_correlated_index(), qo_find_node_indexes(), qo_free_node_index_info(), qo_get_index_info(), qo_is_pk_fk_full_join(), and qo_search_planner().
#define QO_NI_N | ( | ni | ) | ((ni)->n) |
Definition at line 237 of file query_graph.h.
Referenced by qo_discover_indexes(), qo_examine_correlated_index(), qo_find_node_indexes(), qo_free_node_index_info(), qo_get_index_info(), qo_is_pk_fk_full_join(), and qo_search_planner().
#define QO_NODE_DEP_SET | ( | node | ) | (node)->dep_set |
Definition at line 387 of file query_graph.h.
Referenced by planner_permutate(), planner_visit_node(), qo_add_dep_term(), qo_analyze_term(), qo_discover_partitions(), qo_node_clear(), qo_node_dump(), qo_node_free(), qo_search_partition_join(), qo_term_dump(), qo_term_fprint(), and qo_term_string().
#define QO_NODE_ENTITY_SPEC | ( | node | ) | (node)->entity_spec |
Definition at line 381 of file query_graph.h.
Referenced by add_access_spec(), add_hint(), add_hint_args(), build_graph_for_entity(), build_query_graph_function_index(), get_term_subqueries(), init_class_scan_proc(), lookup_node(), make_fetch_proc(), qo_add_node(), qo_discover_indexes(), qo_find_node_indexes(), qo_get_attr_info(), qo_get_class_info(), qo_get_index_info(), qo_get_xasl_index_info(), qo_join_new(), qo_node_clear(), qo_node_dump(), qo_optimize_helper(), qo_search_partition_join(), and qo_search_planner().
#define QO_NODE_ENV | ( | node | ) | (node)->env |
Definition at line 380 of file query_graph.h.
Referenced by qo_add_node(), qo_examine_correlated_index(), qo_has_is_not_null_term(), qo_iscan_cost(), qo_node_clear(), and qo_node_free().
#define QO_NODE_EQCLASSES | ( | node | ) | (node)->eqclasses |
Definition at line 385 of file query_graph.h.
Referenced by qo_eqclass_add(), qo_node_clear(), qo_node_free(), and qo_search_planner().
#define QO_NODE_HINT | ( | node | ) | (node)->hint |
Definition at line 407 of file query_graph.h.
Referenced by add_hint(), add_hint_args(), planner_nodeset_join_cost(), qo_examine_correlated_index(), qo_examine_idx_join(), qo_examine_merge_join(), qo_examine_nl_join(), qo_get_ils_prefix_length(), qo_is_iss_index(), and qo_node_clear().
#define QO_NODE_IDX | ( | node | ) | (node)->idx |
Definition at line 392 of file query_graph.h.
Referenced by add_hint(), planner_nodeset_join_cost(), planner_permutate(), planner_visit_node(), qo_add_dep_term(), qo_add_dummy_join_term(), qo_add_node(), qo_add_term(), qo_analyze_term(), qo_classify_outerjoin_terms(), qo_discover_sort_limit_join_nodes(), qo_dump_planner_info(), qo_eqclass_wrt(), qo_examine_merge_join(), qo_is_pk_fk_full_join(), qo_node_clear(), qo_node_fprint(), qo_optimize_helper(), qo_plan_cmp(), qo_search_partition(), qo_search_partition_join(), qo_search_planner(), qo_seg_fprint(), and qo_seg_nodes().
#define QO_NODE_INDEXES | ( | node | ) | (node)->indexes |
Definition at line 394 of file query_graph.h.
Referenced by qo_discover_indexes(), qo_examine_correlated_index(), qo_find_node_indexes(), qo_get_index_info(), qo_is_pk_fk_full_join(), qo_node_clear(), qo_node_free(), and qo_search_planner().
#define QO_NODE_INFO | ( | node | ) | (node)->info |
Definition at line 403 of file query_graph.h.
Referenced by qo_add_node(), qo_find_node_indexes(), qo_get_attr_info(), qo_get_attr_info_func_index(), qo_get_index_info(), qo_is_coverage_index(), qo_node_clear(), qo_node_dump(), qo_node_free(), qo_plan_compute_iscan_sort_list(), and qo_scan_info().
#define QO_NODE_INFO_N | ( | node | ) | (node)->info->n |
Definition at line 404 of file query_graph.h.
Referenced by qo_discover_indexes(), qo_get_attr_info(), qo_get_attr_info_func_index(), qo_node_dump(), and qo_scan_info().
#define QO_NODE_INFO_SMCLASS | ( | node | ) | (node)->info[0].info->smclass |
Definition at line 408 of file query_graph.h.
#define QO_NODE_IS_CLASS_HIERARCHY | ( | node | ) |
Definition at line 411 of file query_graph.h.
Referenced by pt_instnum_to_key_limit(), qo_check_iscan_for_multi_range_opt(), qo_generate_join_index_scan(), qo_join_new(), and qo_plan_compute_iscan_sort_list().
#define QO_NODE_IS_CLASS_PARTITIONED | ( | node | ) |
Definition at line 417 of file query_graph.h.
Referenced by qo_generate_join_index_scan().
#define QO_NODE_IS_OUTER_JOIN | ( | node | ) |
Definition at line 422 of file query_graph.h.
Referenced by qo_classify_outerjoin_terms().
#define QO_NODE_LOCATION | ( | node | ) | (node)->entity_spec->info.spec.location |
Definition at line 383 of file query_graph.h.
Referenced by planner_visit_node(), qo_add_dummy_join_term(), qo_analyze_term(), qo_classify_outerjoin_terms(), and qo_optimize_helper().
#define QO_NODE_NAME | ( | node | ) | (node)->class_name |
Definition at line 401 of file query_graph.h.
Referenced by add_using_index(), qo_add_node(), qo_node_clear(), qo_node_dump(), qo_node_fprint(), qo_plan_scan_print_json(), qo_plan_scan_print_text(), qo_scan_info(), and qo_term_string().
#define QO_NODE_NCARD | ( | node | ) | (node)->ncard |
Definition at line 405 of file query_graph.h.
Referenced by qo_add_node(), qo_analyze_term(), qo_iscan_cost(), qo_node_add_sarg(), qo_node_clear(), qo_node_dump(), qo_plan_cmp(), qo_search_planner(), and qo_sscan_cost().
#define QO_NODE_OID_SEG | ( | node | ) | (node)->oid_seg |
Definition at line 384 of file query_graph.h.
Referenced by qo_insert_segment(), and qo_node_clear().
#define QO_NODE_OIDP | ( | node | ) | (&(node)->info->info[0].oid) |
Definition at line 402 of file query_graph.h.
#define QO_NODE_OUTER_DEP_SET | ( | node | ) | (node)->outer_dep_set |
Definition at line 397 of file query_graph.h.
Referenced by add_hint(), planner_permutate(), planner_visit_node(), qo_analyze_term(), qo_classify_outerjoin_terms(), qo_node_clear(), qo_node_dump(), qo_node_free(), and qo_search_partition_join().
#define QO_NODE_PARTITION | ( | node | ) | (node)->partition |
Definition at line 386 of file query_graph.h.
Referenced by qo_discover_partitions(), and qo_node_clear().
#define QO_NODE_PT_JOIN_TYPE | ( | node | ) | (node)->entity_spec->info.spec.join_type |
Definition at line 382 of file query_graph.h.
Referenced by qo_add_dummy_join_term(), qo_add_node(), qo_add_term(), qo_analyze_term(), qo_classify_outerjoin_terms(), and qo_optimize_helper().
#define QO_NODE_REL_IDX | ( | node | ) | (node)->rel_idx |
Definition at line 393 of file query_graph.h.
Referenced by planner_permutate(), planner_visit_node(), qo_discover_partitions(), and qo_search_partition_join().
#define QO_NODE_RIGHT_DEP_SET | ( | node | ) | (node)->right_dep_set |
Definition at line 398 of file query_graph.h.
Referenced by qo_node_clear(), qo_node_dump(), and qo_node_free().
#define QO_NODE_SARGABLE | ( | node | ) | (node)->sargable |
Definition at line 399 of file query_graph.h.
Referenced by qo_add_node(), and qo_discover_edges().
#define QO_NODE_SARGS | ( | node | ) | (node)->sargs |
Definition at line 388 of file query_graph.h.
Referenced by qo_examine_correlated_index(), qo_follow_new(), qo_node_add_sarg(), qo_node_clear(), qo_node_dump(), qo_node_free(), qo_scan_new(), and qo_search_planner().
#define QO_NODE_SEGS | ( | node | ) | (node)->segs |
Definition at line 391 of file query_graph.h.
Referenced by gen_outer(), qo_compute_projected_segs(), qo_find_index_segs(), qo_has_is_not_null_term(), qo_index_scan_new(), qo_insert_segment(), qo_node_clear(), and qo_node_free().
#define QO_NODE_SELECTIVITY | ( | node | ) | (node)->selectivity |
Definition at line 389 of file query_graph.h.
Referenced by qo_node_add_sarg(), qo_node_clear(), and qo_search_planner().
#define QO_NODE_SORT_LIMIT_CANDIDATE | ( | node | ) | (node)->sort_limit_candidate |
Definition at line 409 of file query_graph.h.
Referenced by qo_add_node(), qo_discover_sort_limit_nodes(), and qo_search_planner().
#define QO_NODE_SUBQUERIES | ( | node | ) | (node)->subqueries |
Definition at line 390 of file query_graph.h.
Referenced by qo_follow_new(), qo_node_clear(), qo_node_free(), qo_scan_new(), and qo_search_planner().
#define QO_NODE_TCARD | ( | node | ) | (node)->tcard |
Definition at line 406 of file query_graph.h.
Referenced by qo_add_node(), qo_follow_cost(), qo_iscan_cost(), qo_nljoin_cost(), qo_node_clear(), qo_node_dump(), qo_plan_cmp(), qo_search_partition_join(), qo_sort_cost(), and qo_sscan_cost().
#define QO_NODE_USING_INDEX | ( | node | ) | (node)->using_index |
Definition at line 395 of file query_graph.h.
Referenced by add_using_index(), qo_find_node_indexes(), qo_is_usable_index(), qo_node_clear(), and qo_node_free().
#define QO_ON_COND_TERM | ( | term | ) | (QO_TERM_LOCATION(term) > 0) |
Definition at line 995 of file query_graph.h.
Referenced by planner_visit_node(), qo_analyze_term(), qo_classify_outerjoin_terms(), qo_optimize_helper(), and qo_validate_index_term_notnull().
#define QO_OUTER_JOIN_TERM | ( | term | ) |
Definition at line 1002 of file query_graph.h.
Referenced by qo_classify_outerjoin_terms().
Definition at line 830 of file query_graph.h.
Referenced by qo_discover_partitions(), qo_partition_dump(), qo_partition_free(), qo_partition_init(), and sort_partitions().
Definition at line 829 of file query_graph.h.
Referenced by qo_discover_partitions(), qo_dump_planner_info(), qo_partition_dump(), qo_partition_free(), and qo_partition_init().
Definition at line 833 of file query_graph.h.
Referenced by qo_partition_init().
Definition at line 831 of file query_graph.h.
Referenced by planner_visit_node(), qo_discover_partitions(), qo_dump_planner_info(), qo_partition_init(), qo_search_partition_join(), and qo_search_planner().
Definition at line 828 of file query_graph.h.
Referenced by planner_visit_node(), qo_discover_partitions(), qo_discover_sort_limit_nodes(), qo_dump_planner_info(), qo_partition_dump(), qo_partition_free(), qo_partition_init(), qo_search_partition(), qo_search_partition_join(), and sort_partitions().
Definition at line 832 of file query_graph.h.
Referenced by qo_combine_partitions(), qo_partition_free(), qo_partition_init(), and qo_search_partition().
#define QO_RIGHT_OUTER_JOIN_TERM | ( | term | ) |
Definition at line 1014 of file query_graph.h.
#define QO_SEG_ATTR_ID | ( | seg | ) | QO_SEG_ATTR_STATS(seg)->id |
Definition at line 521 of file query_graph.h.
#define QO_SEG_CLASS_ATTR | ( | seg | ) | (seg)->class_attr |
Definition at line 516 of file query_graph.h.
Referenced by build_graph_for_entity(), and qo_seg_clear().
#define QO_SEG_ENV | ( | seg | ) | (seg)->env |
Definition at line 508 of file query_graph.h.
Referenced by qo_seg_clear(), qo_seg_free(), and qo_seg_width().
#define QO_SEG_EQ_ROOT | ( | seg | ) | (seg)->eq_root |
Definition at line 512 of file query_graph.h.
Referenced by qo_assign_eq_classes(), qo_equivalence(), and qo_seg_clear().
#define QO_SEG_EQCLASS | ( | seg | ) | (seg)->eqclass |
Definition at line 513 of file query_graph.h.
Referenced by qo_assign_eq_classes(), qo_eqclass_add(), and qo_seg_clear().
#define QO_SEG_FUNC_INDEX | ( | seg | ) | (seg)->is_function_index |
Definition at line 524 of file query_graph.h.
Referenced by build_query_graph_function_index(), lookup_seg(), qo_analyze_term(), qo_find_index_segs(), qo_is_coverage_index(), qo_is_iss_index(), qo_plan_compute_iscan_sort_list(), qo_seg_clear(), and qo_seg_free().
#define QO_SEG_HEAD | ( | seg | ) | (seg)->head |
Definition at line 510 of file query_graph.h.
Referenced by build_query_graph_function_index(), lookup_seg(), pt_fix_first_term_expr_for_iss(), pt_fix_first_term_func_index_for_iss(), qo_analyze_term(), qo_check_parent_eq_class_for_multi_range_opt(), qo_check_subplan_join_cond_for_multi_range_opt(), qo_check_subqueries_for_multi_range_opt(), qo_check_terms_for_multiple_range_opt(), qo_eqclass_add(), qo_eqclass_wrt(), qo_get_attr_info(), qo_get_attr_info_func_index(), qo_get_index_info(), qo_insert_segment(), qo_is_coverage_index(), qo_is_pk_fk_full_join(), qo_search_partition_join(), qo_seg_clear(), qo_seg_fprint(), and qo_seg_nodes().
#define QO_SEG_IDX | ( | seg | ) | (seg)->idx |
Definition at line 519 of file query_graph.h.
Referenced by qo_assign_eq_classes(), qo_check_terms_for_multiple_range_opt(), qo_discover_indexes(), qo_eqclass_add(), qo_generate_join_index_scan(), qo_get_xasl_index_info(), qo_insert_segment(), qo_is_coverage_index(), qo_is_pk_fk_full_join(), qo_search_isnull_key_expr(), qo_seg_clear(), qo_validate_index_attr_notnull(), and set_seg_node().
#define QO_SEG_INDEX_TERMS | ( | seg | ) | (seg)->index_terms |
Definition at line 523 of file query_graph.h.
Referenced by qo_discover_indexes(), qo_plan_compute_iscan_sort_list(), qo_seg_clear(), and qo_seg_free().
#define QO_SEG_INFO | ( | seg | ) | (seg)->info |
Definition at line 518 of file query_graph.h.
Referenced by qo_index_cardinality(), qo_insert_segment(), qo_seg_clear(), and qo_seg_free().
#define QO_SEG_IS_OID_SEG | ( | seg | ) | (QO_NODE_OID_SEG(QO_SEG_HEAD(seg)) == seg) |
Definition at line 522 of file query_graph.h.
Referenced by qo_is_coverage_index().
#define QO_SEG_IS_SET_VALUED | ( | seg | ) | (seg)->set_valued |
Definition at line 520 of file query_graph.h.
#define QO_SEG_NAME | ( | seg | ) | (seg)->name |
Definition at line 514 of file query_graph.h.
Referenced by build_query_graph_function_index(), lookup_seg(), qo_find_index_segs(), qo_get_attr_info(), qo_get_index_info(), qo_insert_segment(), qo_seg_clear(), qo_seg_fprint(), qo_seg_free(), qo_term_dump(), qo_term_fprint(), qo_validate_index_attr_notnull(), and qo_validate_index_term_notnull().
#define QO_SEG_PT_NODE | ( | seg | ) | (seg)->pt_node |
Definition at line 509 of file query_graph.h.
Referenced by gen_outer(), lookup_seg(), make_mergelist_proc(), make_namelist_from_projected_segs(), qo_check_plan_index_for_multi_range_opt(), qo_get_attr_info(), qo_get_attr_info_func_index(), qo_insert_segment(), qo_is_coverage_index(), qo_plan_compute_iscan_sort_list(), and qo_seg_width().
#define QO_SEG_SET_VALUED | ( | seg | ) | (seg)->set_valued |
Definition at line 515 of file query_graph.h.
Referenced by build_graph_for_entity(), and qo_seg_clear().
#define QO_SEG_SHARED_ATTR | ( | seg | ) | (seg)->shared_attr |
Definition at line 517 of file query_graph.h.
Referenced by build_graph_for_entity(), and qo_seg_clear().
#define QO_SEG_TAIL | ( | seg | ) | (seg)->tail |
Definition at line 511 of file query_graph.h.
Referenced by qo_insert_segment(), qo_join_segment(), and qo_seg_clear().
#define QO_TERM_CAN_USE_INDEX | ( | t | ) | (t)->can_use_index |
Definition at line 731 of file query_graph.h.
Referenced by planner_visit_node(), qo_add_dummy_join_term(), qo_analyze_term(), qo_search_partition_join(), qo_term_clear(), and qo_term_dump().
#define QO_TERM_CLASS | ( | t | ) | (t)->term_class |
Definition at line 716 of file query_graph.h.
Referenced by is_after_join_term(), is_follow_if_term(), is_normal_access_term(), is_normal_if_term(), is_totally_after_join_term(), planner_visit_node(), qo_add_dep_term(), qo_add_dummy_join_term(), qo_add_term(), qo_analyze_term(), qo_classify_outerjoin_terms(), qo_combine_partitions(), qo_discover_edges(), qo_discover_sort_limit_join_nodes(), qo_discover_sort_limit_nodes(), qo_examine_correlated_index(), qo_examine_nl_join(), qo_find_index_seg_terms(), qo_generate_join_index_scan(), qo_is_pk_fk_full_join(), qo_optimize_helper(), qo_search_partition_join(), qo_term_clear(), qo_term_dump(), qo_term_fprint(), qo_term_string(), and qo_top_plan_new().
#define QO_TERM_CLEAR_FLAG | ( | t, | |
f | |||
) | QO_TERM_FLAG(t) &= (int) ~(f) |
Definition at line 751 of file query_graph.h.
Referenced by qo_analyze_term(), qo_classify_outerjoin_terms(), and qo_discover_edges().
#define QO_TERM_COPY_PT_EXPR 8 /* pt_expr is copyed ? */ |
Definition at line 742 of file query_graph.h.
Referenced by qo_term_free().
#define QO_TERM_ENV | ( | t | ) | (t)->env |
Definition at line 715 of file query_graph.h.
Referenced by qo_analyze_term(), qo_term_clear(), qo_term_dump(), qo_term_free(), and qo_term_string().
#define QO_TERM_EQCLASS | ( | t | ) | (t)->eqclass |
Definition at line 729 of file query_graph.h.
Referenced by qo_assign_eq_classes(), qo_examine_merge_join(), and qo_term_clear().
#define QO_TERM_EQUAL_OP 1 /* is equal op ? */ |
Definition at line 739 of file query_graph.h.
Referenced by qo_analyze_term(), qo_find_index_seg_terms(), qo_generate_join_index_scan(), qo_index_scan_new(), qo_is_equi_join_term(), and qo_is_pk_fk_full_join().
#define QO_TERM_FLAG | ( | t | ) | (t)->flag |
Definition at line 734 of file query_graph.h.
Referenced by qo_add_dep_term(), qo_add_dummy_join_term(), qo_add_term(), and qo_term_clear().
#define QO_TERM_HEAD | ( | t | ) | (t)->head |
Definition at line 721 of file query_graph.h.
Referenced by planner_visit_node(), qo_add_dep_term(), qo_add_dummy_join_term(), qo_analyze_term(), qo_classify_outerjoin_terms(), qo_discover_edges(), qo_discover_sort_limit_join_nodes(), qo_examine_merge_join(), qo_optimize_helper(), qo_term_clear(), qo_term_dump(), qo_term_fprint(), and qo_term_string().
#define QO_TERM_IDX | ( | t | ) | (t)->idx |
Definition at line 723 of file query_graph.h.
Referenced by check_subquery_pre(), gen_outer(), qo_add_dep_term(), qo_add_dummy_join_term(), qo_add_term(), qo_discover_indexes(), qo_eqclass_fprint_wrt(), qo_find_index_seg_terms(), qo_follow_new(), qo_generate_join_index_scan(), qo_is_pk_fk_full_join(), qo_node_add_sarg(), qo_term_clear(), and qo_term_fprint().
Definition at line 732 of file query_graph.h.
Referenced by qo_is_pk_fk_full_join(), qo_search_partition_join(), qo_term_clear(), and qo_term_dump().
#define QO_TERM_IS_FLAGED | ( | t, | |
f | |||
) | (QO_TERM_FLAG(t) & (int) (f)) |
Definition at line 749 of file query_graph.h.
Referenced by planner_visit_node(), qo_analyze_term(), qo_assign_eq_classes(), qo_check_terms_for_multiple_range_opt(), qo_classify_outerjoin_terms(), qo_find_index_seg_terms(), qo_generate_index_scan(), qo_generate_join_index_scan(), qo_get_multi_col_range_segs(), qo_get_xasl_index_info(), qo_index_scan_new(), qo_is_equi_join_term(), qo_is_pk_fk_full_join(), qo_term_dump(), and qo_term_free().
#define QO_TERM_JOIN_TYPE | ( | t | ) | (t)->join_type |
Definition at line 733 of file query_graph.h.
Referenced by planner_visit_node(), qo_add_dep_term(), qo_add_dummy_join_term(), qo_add_term(), qo_analyze_term(), qo_classify_outerjoin_terms(), qo_discover_edges(), qo_discover_sort_limit_join_nodes(), qo_is_pk_fk_full_join(), qo_term_clear(), and qo_term_dump().
#define QO_TERM_LOCATION | ( | t | ) | (t)->location |
Definition at line 725 of file query_graph.h.
Referenced by planner_visit_node(), qo_add_dep_term(), qo_add_dummy_join_term(), qo_add_term(), qo_analyze_term(), qo_classify_outerjoin_terms(), qo_optimize_helper(), qo_term_clear(), and qo_term_dump().
#define QO_TERM_MERGEABLE_EDGE 16 /* suitable as a m-join edge ? */ |
Definition at line 743 of file query_graph.h.
Referenced by planner_visit_node(), qo_analyze_term(), qo_assign_eq_classes(), qo_classify_outerjoin_terms(), qo_discover_edges(), and qo_term_dump().
#define QO_TERM_MULTI_COL_CNT | ( | t | ) | (t)->multi_col_cnt |
Definition at line 736 of file query_graph.h.
Referenced by qo_add_term(), qo_analyze_term(), and qo_term_clear().
#define QO_TERM_MULTI_COL_SEGS | ( | t | ) | (t)->multi_col_segs |
Definition at line 735 of file query_graph.h.
Referenced by qo_add_term(), qo_analyze_term(), qo_term_clear(), and qo_term_free().
#define QO_TERM_MULTI_COLL_CONST 128 /* multi column && have constant value, (a,1) in .. */ |
Definition at line 746 of file query_graph.h.
Referenced by qo_analyze_term(), and qo_get_xasl_index_info().
#define QO_TERM_MULTI_COLL_PRED 64 /* multi column && in OP, (a,b) in .. */ |
Definition at line 745 of file query_graph.h.
Referenced by qo_analyze_term(), qo_generate_index_scan(), qo_generate_join_index_scan(), qo_get_multi_col_range_segs(), and qo_get_xasl_index_info().
#define QO_TERM_NODES | ( | t | ) | (t)->nodes |
Definition at line 717 of file query_graph.h.
Referenced by planner_visit_node(), qo_add_dep_term(), qo_add_dummy_join_term(), qo_add_term(), qo_analyze_term(), qo_classify_outerjoin_terms(), qo_combine_partitions(), qo_discover_edges(), qo_discover_indexes(), qo_discover_partitions(), qo_discover_sort_limit_join_nodes(), qo_examine_merge_join(), qo_is_pk_fk_full_join(), qo_search_partition_join(), qo_term_clear(), and qo_term_free().
#define QO_TERM_NOMINAL_SEG | ( | t | ) | (t)->nominal_seg |
Definition at line 730 of file query_graph.h.
Referenced by qo_analyze_term(), qo_assign_eq_classes(), and qo_term_clear().
#define QO_TERM_NON_IDX_SARG_COLL 32 /* not suitable for key range/filter */ |
Definition at line 744 of file query_graph.h.
Referenced by qo_analyze_term(), qo_check_terms_for_multiple_range_opt(), and qo_index_scan_new().
#define QO_TERM_OID_SEG | ( | t | ) | (t)->oid_seg |
Definition at line 728 of file query_graph.h.
Referenced by qo_analyze_term(), and qo_term_clear().
#define QO_TERM_OR_PRED 256 /* or predicate. e.g.) a=1 or b=2 */ |
Definition at line 747 of file query_graph.h.
Referenced by qo_analyze_term(), and qo_classify_outerjoin_terms().
#define QO_TERM_PT_EXPR | ( | t | ) | (t)->pt_expr |
Definition at line 724 of file query_graph.h.
Referenced by gen_outer(), get_term_rank(), get_term_subqueries(), make_pred_from_bitset(), qo_add_dep_term(), qo_add_dummy_join_term(), qo_add_term(), qo_analyze_term(), qo_check_seg_belongs_to_range_term(), qo_check_terms_for_multiple_range_opt(), qo_discover_edges(), qo_find_index_seg_terms(), qo_find_index_terms(), qo_get_xasl_index_info(), qo_has_is_not_null_term(), qo_is_equi_join_term(), qo_plan_compute_iscan_sort_list(), qo_term_clear(), qo_term_dump(), qo_term_free(), qo_term_string(), qo_validate_index_attr_notnull(), and qo_validate_index_term_notnull().
#define QO_TERM_RANGELIST 2 /* is RANGE (r1, r2, ...) ? */ |
Definition at line 740 of file query_graph.h.
Referenced by qo_analyze_term(), qo_find_index_seg_terms(), qo_generate_join_index_scan(), and qo_is_equi_join_term().
#define QO_TERM_RANK | ( | t | ) | (t)->rank |
Definition at line 720 of file query_graph.h.
Referenced by get_term_rank(), make_pred_from_bitset(), qo_add_dep_term(), qo_add_dummy_join_term(), qo_add_term(), qo_term_clear(), and qo_term_dump().
#define QO_TERM_SEG | ( | t | ) | (t)->seg |
Definition at line 727 of file query_graph.h.
Referenced by qo_analyze_term(), qo_term_clear(), qo_term_dump(), and qo_term_fprint().
#define QO_TERM_SEGS | ( | t | ) | (t)->segments |
Definition at line 718 of file query_graph.h.
Referenced by gen_outer(), make_mergelist_proc(), qo_add_dep_term(), qo_analyze_term(), qo_assign_eq_classes(), qo_check_seg_belongs_to_range_term(), qo_compute_projected_segs(), qo_find_index_seg_terms(), qo_find_index_terms(), qo_get_multi_col_range_segs(), qo_has_is_not_null_term(), qo_index_scan_new(), qo_is_coverage_index(), qo_iscan_cost(), qo_term_clear(), qo_term_free(), and qo_validate_index_term_notnull().
#define QO_TERM_SELECTIVITY | ( | t | ) | (t)->selectivity |
Definition at line 719 of file query_graph.h.
Referenced by make_pred_from_bitset(), planner_visit_node(), qo_add_dep_term(), qo_add_dummy_join_term(), qo_add_term(), qo_analyze_term(), qo_discover_edges(), qo_iscan_cost(), qo_node_add_sarg(), qo_plan_cmp(), qo_term_clear(), and qo_term_dump().
#define QO_TERM_SET_FLAG | ( | t, | |
f | |||
) | QO_TERM_FLAG(t) |= (int) (f) |
Definition at line 750 of file query_graph.h.
Referenced by qo_analyze_term().
#define QO_TERM_SINGLE_PRED 4 /* is single_pred ? */ |
Definition at line 741 of file query_graph.h.
Referenced by qo_analyze_term(), and qo_is_equi_join_term().
#define QO_TERM_SUBQUERIES | ( | t | ) | (t)->subqueries |
Definition at line 726 of file query_graph.h.
Referenced by check_subquery_pre(), gen_outer(), get_term_rank(), is_after_join_term(), is_normal_access_term(), is_normal_if_term(), is_totally_after_join_term(), qo_index_scan_new(), qo_term_clear(), and qo_term_free().
#define QO_TERM_TAIL | ( | t | ) | (t)->tail |
Definition at line 722 of file query_graph.h.
Referenced by get_term_subqueries(), make_fetch_proc(), planner_visit_node(), qo_add_dep_term(), qo_add_dummy_join_term(), qo_analyze_term(), qo_classify_outerjoin_terms(), qo_discover_edges(), qo_discover_sort_limit_join_nodes(), qo_examine_merge_join(), qo_follow_cost(), qo_follow_new(), qo_optimize_helper(), qo_term_clear(), qo_term_dump(), qo_term_fprint(), and qo_term_string().
#define QO_UI_FORCE | ( | ui, | |
n | |||
) | ((ui)->index[(n)].force) |
Definition at line 261 of file query_graph.h.
Referenced by add_using_index(), and qo_find_node_indexes().
#define QO_UI_INDEX | ( | ui, | |
n | |||
) | ((ui)->index[(n)].name) |
Definition at line 260 of file query_graph.h.
Referenced by add_using_index(), and qo_find_node_indexes().
#define QO_UI_KEYLIMIT | ( | ui, | |
n | |||
) | ((ui)->index[(n)].key_limit) |
Definition at line 262 of file query_graph.h.
Referenced by add_using_index(), and qo_find_node_indexes().
#define QO_UI_N | ( | ui | ) | ((ui)->n) |
Definition at line 259 of file query_graph.h.
Referenced by add_using_index(), and qo_find_node_indexes().
#define QO_UNORDERED ((QO_EQCLASS*)NULL) |
Definition at line 553 of file query_graph.h.
Referenced by planner_nodeset_join_cost(), planner_permutate(), qo_assign_eq_classes(), qo_check_new_best_plan_on_info(), qo_check_plan_on_info(), qo_eqclass_fprint_wrt(), qo_examine_correlated_index(), qo_examine_follow(), qo_examine_merge_join(), qo_examine_nl_join(), qo_find_best_plan_on_info(), qo_follow_new(), qo_generate_sort_limit_plan(), qo_join_new(), qo_plan_order_by(), qo_scan_new(), qo_search_partition_join(), qo_search_planner(), qo_sort_cost(), qo_sort_info(), qo_sort_new(), qo_term_clear(), qo_top_plan_new(), and qo_worst_new().
typedef struct qo_class_info_entry QO_CLASS_INFO_ENTRY |
Definition at line 42 of file query_graph.h.
enum QO_SORT_LIMIT_USE |
Enumerator | |
---|---|
QO_SL_INVALID | |
QO_SL_USE | |
QO_SL_POSSIBLE |
Definition at line 835 of file query_graph.h.
enum QO_TERMCLASS |
Enumerator | |
---|---|
QO_TC_PATH | |
QO_TC_JOIN | |
QO_TC_SARG | |
QO_TC_OTHER | |
QO_TC_DEP_LINK | |
QO_TC_DEP_JOIN | |
QO_TC_DURING_JOIN | |
QO_TC_AFTER_JOIN | |
QO_TC_TOTALLY_AFTER_JOIN | |
QO_TC_DUMMY_JOIN |
Definition at line 562 of file query_graph.h.
void qo_check_coll_optimization | ( | QO_INDEX_ENTRY * | ent, |
COLL_OPT * | collation_opt | ||
) |
Definition at line 9254 of file query_graph.c.
References coll_opt::allow_index_opt, assert, sm_class_constraint::attributes, qo_index_entry::class_, classobj_find_class_index(), qo_index_entry::constraints, lang_get_collation(), sm_class_constraint::name, NULL, lang_collation::options, qo_class_info_entry::smclass, TP_DOMAIN_COLLATION, TP_DOMAIN_TYPE, and TP_TYPE_HAS_COLLATION.
Referenced by pt_to_index_info().
bool qo_check_type_index_covering | ( | QO_INDEX_ENTRY * | ent | ) |
Definition at line 9302 of file query_graph.c.
References sm_class_constraint::attributes, qo_index_entry::class_, classobj_find_class_index(), qo_index_entry::constraints, sm_class_constraint::name, NULL, qo_class_info_entry::smclass, TP_DOMAIN_TYPE, and TP_TYPE_NOT_SUPPORT_COVERING.
Referenced by pt_to_index_info().
void qo_env_free | ( | QO_ENV * | ) |
Definition at line 5808 of file query_graph.c.
References bitset_delset(), qo_env::eqclasses, qo_env::fake_terms, qo_env::final_segs, free_and_init, i, qo_env::neqclasses, qo_env::Nnodes, qo_env::nodes, qo_env::npartitions, qo_env::Nsegs, qo_env::nsubqueries, qo_env::Nterms, qo_env::partitions, qo_env::planner, pr_clear_value(), QO_ENV_EQCLASS, QO_ENV_LIMIT_VALUE, QO_ENV_NODE, QO_ENV_PARTITION, QO_ENV_SEG, QO_ENV_SORT_LIMIT_NODES, QO_ENV_TERM, qo_eqclass_free(), qo_node_free(), qo_partition_free(), qo_planner_free(), qo_seg_free(), qo_subquery_free(), qo_term_free(), qo_env::segs, qo_env::subqueries, and qo_env::terms.
Referenced by qo_env_init(), qo_optimize_helper(), qo_optimize_query(), and qo_plan_discard().
void qo_eqclass_fprint_wrt | ( | QO_EQCLASS * | , |
BITSET * | , | ||
FILE * | |||
) |
Definition at line 8740 of file query_graph.c.
References bitset_is_empty(), QO_EQCLASS_SEGS, QO_EQCLASS_TERM, qo_eqclass_wrt(), qo_seg_fprint(), QO_TERM_IDX, and QO_UNORDERED.
Referenced by qo_sort_fprint(), and qo_sort_info().
bool qo_is_filter_index | ( | QO_INDEX_ENTRY * | ) |
Definition at line 9228 of file query_graph.c.
References qo_index_entry::constraints, sm_class_constraint::filter_predicate, and qo_index_entry::force.
Referenced by pt_to_index_info(), qo_get_xasl_index_info(), qo_index_scan_new(), qo_is_index_iss_scan(), qo_is_index_mro_scan(), and qo_plan_multi_range_opt().
bool qo_is_prefix_index | ( | QO_INDEX_ENTRY * | ) |
Definition at line 9203 of file query_graph.c.
References sm_class_constraint::attrs_prefix_length, qo_index_entry::class_, classobj_find_class_index(), qo_index_entry::constraints, sm_class_constraint::name, and qo_class_info_entry::smclass.
Referenced by pt_to_class_spec_list(), pt_to_index_info(), qo_index_scan_new(), qo_is_index_covering_scan(), qo_is_index_loose_scan(), qo_plan_compute_iscan_sort_list(), and qo_search_planner().
void qo_node_fprint | ( | QO_NODE * | , |
FILE * | |||
) |
Definition at line 8162 of file query_graph.c.
References QO_NODE_IDX, and QO_NODE_NAME.
Referenced by qo_scan_fprint(), qo_term_dump(), and qo_term_fprint().
void qo_print_stats | ( | FILE * | ) |
Definition at line 9166 of file query_graph.c.
References qo_info_stats(), and qo_plans_stats().
Referenced by qo_plan_discard().
void qo_seg_fprint | ( | QO_SEGMENT * | , |
FILE * | |||
) |
Definition at line 8361 of file query_graph.c.
References QO_NODE_IDX, QO_SEG_HEAD, and QO_SEG_NAME.
Referenced by qo_env_dump(), qo_eqclass_dump(), qo_eqclass_fprint_wrt(), qo_plan_print_projected_segs(), qo_subquery_dump(), and qo_term_dump().
int qo_seg_width | ( | QO_SEGMENT * | seg | ) |
Definition at line 8313 of file query_graph.c.
References DB_TYPE_VARBIT, DB_TYPE_VARCHAR, DB_TYPE_VARNCHAR, NULL, pt_node_to_db_domain(), QO_ENV_PARSER, QO_SEG_ENV, QO_SEG_PT_NODE, tp_domain_cache(), tp_domain_disk_size(), and TP_DOMAIN_TYPE.
Referenced by qo_compute_projected_size().
void qo_term_fprint | ( | QO_TERM * | , |
FILE * | |||
) |
Definition at line 8792 of file query_graph.c.
References bitset_print(), QO_NODE_DEP_SET, qo_node_fprint(), QO_SEG_NAME, QO_TC_DEP_JOIN, QO_TC_DEP_LINK, QO_TC_PATH, QO_TERM_CLASS, QO_TERM_HEAD, QO_TERM_IDX, QO_TERM_SEG, and QO_TERM_TAIL.
Referenced by qo_eqclass_dump(), qo_follow_fprint(), and qo_termset_fprint().
Definition at line 8845 of file query_graph.c.
References bitset_iterate(), bitset_next_member(), QO_ENV_TERM, and qo_term_fprint().
Referenced by qo_join_fprint(), qo_plan_print_outer_join_terms(), qo_plan_print_sarged_terms(), and qo_scan_fprint().
double QO_INFINITY |
Definition at line 160 of file query_graph.c.
Referenced by qo_env_init(), qo_follow_cost(), qo_mjoin_cost(), qo_nljoin_cost(), qo_search_planner(), qo_sort_cost(), and qo_worst_cost().