CUBRID Engine
latest
|
#include "config.h"
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <math.h>
#include <assert.h>
#include <values.h>
#include "parser.h"
#include "error_code.h"
#include "error_manager.h"
#include "object_primitive.h"
#include "object_representation.h"
#include "optimizer.h"
#include "query_graph.h"
#include "query_planner.h"
#include "schema_manager.h"
#include "statistics.h"
#include "system_parameter.h"
#include "environment_variable.h"
#include "xasl_generation.h"
#include "query_list.h"
#include "db.h"
#include "memory_alloc.h"
#include "util_func.h"
#include "locator_cl.h"
#include "object_domain.h"
#include "network_interface_cl.h"
#include "dbtype.h"
#include "xasl.h"
Go to the source code of this file.
Classes | |
struct | walk_info |
Macros | |
#define | SIZEOF_USING_INDEX(n) (sizeof(QO_USING_INDEX) + (((n)-1) * sizeof(QO_USING_INDEX_ENTRY))) |
#define | PREDICATE_TERM -2 |
#define | RANK_DEFAULT 0 /* default */ |
#define | RANK_NAME RANK_DEFAULT /* name -- use default */ |
#define | RANK_VALUE RANK_DEFAULT /* value -- use default */ |
#define | RANK_EXPR_LIGHT 1 /* Group 1 */ |
#define | RANK_EXPR_MEDIUM 2 /* Group 2 */ |
#define | RANK_EXPR_HEAVY 3 /* Group 3 */ |
#define | RANK_EXPR_FUNCTION 4 /* agg function, set */ |
#define | RANK_QUERY 8 /* subquery */ |
#define | LOG2_SIZEOF_POINTER 2 |
#define | SIZEOF_INDEX(n) (sizeof(QO_INDEX) + (((n)-1)* sizeof(QO_INDEX_ENTRY))) |
#define | SIZEOF_CLASS_INFO(n) (sizeof(QO_CLASS_INFO) + (((n)-1) * sizeof(QO_CLASS_INFO_ENTRY))) |
#define | SIZEOF_ATTR_CUM_STATS_PKEYS(n) ((n) * sizeof(int)) |
#define | NOMINAL_HEAP_SIZE(class) 200 /* pages */ |
#define | NOMINAL_OBJECT_SIZE(class) 64 /* bytes */ |
#define | SIZEOF_NODE_INDEX(n) (sizeof(QO_NODE_INDEX) + (((n)-1)* sizeof(QO_NODE_INDEX_ENTRY))) |
#define | EXCHANGE_BUILDER(type, e0, e1) do { type _tmp = e0; e0 = e1; e1 = _tmp; } while (0) |
#define | TERMCLASS_EXCHANGE(e0, e1) EXCHANGE_BUILDER(QO_TERMCLASS,e0,e1) |
#define | DOUBLE_EXCHANGE(e0, e1) EXCHANGE_BUILDER(double,e0,e1) |
#define | PT_NODE_EXCHANGE(e0, e1) EXCHANGE_BUILDER(PT_NODE *,e0,e1) |
#define | INT_EXCHANGE(e0, e1) EXCHANGE_BUILDER(int,e0,e1) |
#define | SEGMENTPTR_EXCHANGE(e0, e1) EXCHANGE_BUILDER(QO_SEGMENT *,e0,e1) |
#define | NODEPTR_EXCHANGE(e0, e1) EXCHANGE_BUILDER(QO_NODE *,e0,e1) |
#define | EQCLASSPTR_EXCHANGE(e0, e1) EXCHANGE_BUILDER(QO_EQCLASS *,e0,e1) |
#define | BOOL_EXCHANGE(e0, e1) EXCHANGE_BUILDER(bool,e0,e1) |
#define | JOIN_TYPE_EXCHANGE(e0, e1) EXCHANGE_BUILDER(JOIN_TYPE,e0,e1) |
#define | FLAG_EXCHANGE(e0, e1) EXCHANGE_BUILDER(int,e0,e1) |
#define | INT_PTR_EXCHANGE(e0, e1) EXCHANGE_BUILDER(int *,e0,e1) |
#define | BISET_EXCHANGE(s0, s1) |
#define | PUT_FLAG(cond, flag) |
#define | OPTIMIZATION_LIMIT 64 |
Typedefs | |
typedef struct walk_info | WALK_INFO |
Enumerations | |
enum | QO_BUILD_STATUS { QO_BUILD_ENTITY = 0x01, QO_BUILD_PATH = 0x02 } |
Variables | |
double | QO_INFINITY = 0.0 |
#define BISET_EXCHANGE | ( | s0, | |
s1 | |||
) |
Definition at line 128 of file query_graph.c.
Referenced by qo_exchange().
#define BOOL_EXCHANGE | ( | e0, | |
e1 | |||
) | EXCHANGE_BUILDER(bool,e0,e1) |
Definition at line 123 of file query_graph.c.
#define DOUBLE_EXCHANGE | ( | e0, | |
e1 | |||
) | EXCHANGE_BUILDER(double,e0,e1) |
Definition at line 117 of file query_graph.c.
Referenced by qo_exchange().
#define EQCLASSPTR_EXCHANGE | ( | e0, | |
e1 | |||
) | EXCHANGE_BUILDER(QO_EQCLASS *,e0,e1) |
Definition at line 122 of file query_graph.c.
Referenced by qo_exchange().
#define EXCHANGE_BUILDER | ( | type, | |
e0, | |||
e1 | |||
) | do { type _tmp = e0; e0 = e1; e1 = _tmp; } while (0) |
Definition at line 113 of file query_graph.c.
#define FLAG_EXCHANGE | ( | e0, | |
e1 | |||
) | EXCHANGE_BUILDER(int,e0,e1) |
Definition at line 125 of file query_graph.c.
Referenced by qo_exchange().
#define INT_EXCHANGE | ( | e0, | |
e1 | |||
) | EXCHANGE_BUILDER(int,e0,e1) |
Definition at line 119 of file query_graph.c.
Referenced by qo_exchange().
#define INT_PTR_EXCHANGE | ( | e0, | |
e1 | |||
) | EXCHANGE_BUILDER(int *,e0,e1) |
Definition at line 126 of file query_graph.c.
Referenced by qo_exchange().
#define JOIN_TYPE_EXCHANGE | ( | e0, | |
e1 | |||
) | EXCHANGE_BUILDER(JOIN_TYPE,e0,e1) |
Definition at line 124 of file query_graph.c.
Referenced by qo_exchange().
#define LOG2_SIZEOF_POINTER 2 |
Definition at line 85 of file query_graph.c.
Referenced by qo_discover_partitions().
#define NODEPTR_EXCHANGE | ( | e0, | |
e1 | |||
) | EXCHANGE_BUILDER(QO_NODE *,e0,e1) |
Definition at line 121 of file query_graph.c.
Referenced by qo_exchange().
#define NOMINAL_HEAP_SIZE | ( | class | ) | 200 /* pages */ |
Definition at line 106 of file query_graph.c.
Referenced by qo_estimate_statistics().
#define NOMINAL_OBJECT_SIZE | ( | class | ) | 64 /* bytes */ |
Definition at line 107 of file query_graph.c.
Referenced by qo_estimate_statistics().
#define OPTIMIZATION_LIMIT 64 |
Referenced by qo_validate().
#define PREDICATE_TERM -2 |
Definition at line 68 of file query_graph.c.
Referenced by qo_analyze_term(), and qo_optimize_helper().
#define PT_NODE_EXCHANGE | ( | e0, | |
e1 | |||
) | EXCHANGE_BUILDER(PT_NODE *,e0,e1) |
Definition at line 118 of file query_graph.c.
Referenced by qo_exchange().
#define PUT_FLAG | ( | cond, | |
flag | |||
) |
Definition at line 136 of file query_graph.c.
Referenced by qo_env_dump().
#define RANK_DEFAULT 0 /* default */ |
Definition at line 70 of file query_graph.c.
Referenced by get_operand_rank().
#define RANK_EXPR_FUNCTION 4 /* agg function, set */ |
Definition at line 76 of file query_graph.c.
Referenced by get_expr_fcode_rank(), and get_operand_rank().
#define RANK_EXPR_HEAVY 3 /* Group 3 */ |
Definition at line 75 of file query_graph.c.
Referenced by get_opcode_rank().
#define RANK_EXPR_LIGHT 1 /* Group 1 */ |
Definition at line 73 of file query_graph.c.
Referenced by get_expr_fcode_rank(), and get_opcode_rank().
#define RANK_EXPR_MEDIUM 2 /* Group 2 */ |
Definition at line 74 of file query_graph.c.
Referenced by get_expr_fcode_rank(), get_opcode_rank(), and get_operand_rank().
#define RANK_NAME RANK_DEFAULT /* name -- use default */ |
Definition at line 71 of file query_graph.c.
Referenced by get_operand_rank().
#define RANK_QUERY 8 /* subquery */ |
Definition at line 77 of file query_graph.c.
Referenced by get_term_rank().
#define RANK_VALUE RANK_DEFAULT /* value -- use default */ |
Definition at line 72 of file query_graph.c.
Referenced by get_operand_rank().
#define SEGMENTPTR_EXCHANGE | ( | e0, | |
e1 | |||
) | EXCHANGE_BUILDER(QO_SEGMENT *,e0,e1) |
Definition at line 120 of file query_graph.c.
Referenced by qo_exchange().
#define SIZEOF_ATTR_CUM_STATS_PKEYS | ( | n | ) | ((n) * sizeof(int)) |
Definition at line 103 of file query_graph.c.
Referenced by qo_get_attr_info(), qo_get_attr_info_func_index(), and qo_get_index_info().
#define SIZEOF_CLASS_INFO | ( | n | ) | (sizeof(QO_CLASS_INFO) + (((n)-1) * sizeof(QO_CLASS_INFO_ENTRY))) |
Definition at line 97 of file query_graph.c.
Referenced by qo_get_class_info().
#define SIZEOF_INDEX | ( | n | ) | (sizeof(QO_INDEX) + (((n)-1)* sizeof(QO_INDEX_ENTRY))) |
Definition at line 91 of file query_graph.c.
Referenced by qo_alloc_index().
#define SIZEOF_NODE_INDEX | ( | n | ) | (sizeof(QO_NODE_INDEX) + (((n)-1)* sizeof(QO_NODE_INDEX_ENTRY))) |
Definition at line 110 of file query_graph.c.
Referenced by qo_find_node_indexes().
#define SIZEOF_USING_INDEX | ( | n | ) | (sizeof(QO_USING_INDEX) + (((n)-1) * sizeof(QO_USING_INDEX_ENTRY))) |
Definition at line 64 of file query_graph.c.
Referenced by add_using_index().
#define TERMCLASS_EXCHANGE | ( | e0, | |
e1 | |||
) | EXCHANGE_BUILDER(QO_TERMCLASS,e0,e1) |
Definition at line 116 of file query_graph.c.
Referenced by qo_exchange().
Definition at line 153 of file query_graph.c.
enum QO_BUILD_STATUS |
Enumerator | |
---|---|
QO_BUILD_ENTITY | |
QO_BUILD_PATH |
Definition at line 147 of file query_graph.c.
Definition at line 4266 of file query_graph.c.
References add_hint_args(), bitset_add(), bitset_assign(), pt_select_info::hint, i, pt_spec_info::id, pt_select_info::index_ls, pt_select_info::index_ss, parser_node::info, pt_statement_info::name, parser_node::next, qo_env::nnodes, NULL, pt_select_info::ordered, PT_HINT_INDEX_LS, PT_HINT_INDEX_SS, PT_HINT_ORDERED, PT_HINT_USE_IDX, PT_HINT_USE_MERGE, PT_HINT_USE_NL, pt_query_info::q, QO_ENV_NODE, QO_NODE_ENTITY_SPEC, QO_NODE_HINT, QO_NODE_IDX, QO_NODE_OUTER_DEP_SET, pt_statement_info::query, pt_query_info::select, pt_statement_info::spec, pt_name_info::spec_id, pt_select_info::use_idx, pt_select_info::use_merge, and pt_select_info::use_nl.
Referenced by qo_optimize_helper().
|
static |
Definition at line 4222 of file query_graph.c.
References i, pt_spec_info::id, parser_node::info, pt_statement_info::name, parser_node::next, qo_env::nnodes, QO_ENV_NODE, QO_NODE_ENTITY_SPEC, QO_NODE_HINT, pt_statement_info::spec, and pt_name_info::spec_id.
Referenced by add_hint().
Definition at line 4001 of file query_graph.c.
References ARG_FILE_LINE, bitset_init(), BITSET_MOVE, ER_ERROR_SEVERITY, ER_OUT_OF_VIRTUAL_MEMORY, er_set(), free_and_init, i, qo_subquery::idx, qo_subquery::node, qo_subquery::nodes, qo_env::nsubqueries, NULL, qo_expr_segs(), qo_seg_nodes(), qo_subquery::segs, qo_env::subqueries, and qo_subquery::terms.
Referenced by get_local_subqueries_post().
Definition at line 4394 of file query_graph.c.
References ARG_FILE_LINE, cleanup(), ER_ERROR_SEVERITY, ER_OUT_OF_VIRTUAL_MEMORY, er_set(), parser_node::etc, i, pt_name_info::indx_key_limit, parser_node::info, intl_identifier_casecmp(), pt_statement_info::name, parser_node::next, qo_env::nnodes, NULL, pt_name_info::original, PT_IDX_HINT_CLASS_NONE, QO_ENV_NODE, QO_NODE_NAME, QO_NODE_USING_INDEX, QO_UI_FORCE, QO_UI_INDEX, QO_UI_KEYLIMIT, QO_UI_N, pt_name_info::resolved, and SIZEOF_USING_INDEX.
Referenced by qo_optimize_helper().
|
static |
Definition at line 1103 of file query_graph.c.
References pt_expr_info::arg1, pt_spec_info::derived_table, pt_spec_info::entity_name, pt_statement_info::expr, pt_spec_info::flat_entity_list, get_referenced_attrs(), i, pt_spec_info::id, parser_node::info, pt_spec_info::meta_class, pt_name_info::meta_class, pt_statement_info::name, parser_node::next, qo_env::nnodes, NULL, pt_name_info::original, parser, parser_new_node(), pt_spec_info::path_conjuncts, pt_spec_info::path_entities, PT_INTERNAL_ERROR, PT_IS_OID_NAME, PT_META_ATTR, PT_NAME, PT_OID_ATTR, PT_TYPE_MULTISET, PT_TYPE_SEQUENCE, PT_TYPE_SET, qo_add_node(), qo_add_term(), QO_ASSERT, QO_BUILD_ENTITY, QO_BUILD_PATH, QO_ENV_NODE, QO_ENV_PARSER, qo_insert_segment(), qo_join_segment(), QO_NODE_ENTITY_SPEC, QO_SEG_CLASS_ATTR, QO_SEG_SET_VALUED, QO_SEG_SHARED_ATTR, pt_name_info::resolved, pt_statement_info::spec, pt_name_info::spec_id, and parser_node::type_enum.
Referenced by build_query_graph(), and build_query_graph_post().
|
static |
Definition at line 938 of file query_graph.c.
References build_graph_for_entity(), walk_info::env, parser_node::node_type, PT_CONTINUE_WALK, PT_LIST_WALK, PT_SELECT, PT_SPEC, qo_env::pt_tree, and QO_BUILD_ENTITY.
Referenced by qo_optimize_helper().
|
static |
Definition at line 1006 of file query_graph.c.
References ARG_FILE_LINE, qo_node::class_name, pt_spec_info::entity_name, walk_info::env, ER_ERROR_SEVERITY, ER_OUT_OF_VIRTUAL_MEMORY, er_set(), sm_function_info::expr_str, sm_class_constraint::func_index_info, i, pt_spec_info::id, parser_node::info, intl_identifier_casecmp(), pt_statement_info::name, sm_class_constraint::next, qo_env::nnodes, parser_node::node_type, qo_env::nsegs, NULL, pt_name_info::original, qo_env::parser, parser_print_function_index_expr(), PT_CONTINUE_WALK, pt_is_function_index_expr(), pt_is_join_expr(), PT_NAME, PT_STOP_WALK, QO_ENV_NODE, QO_ENV_SEG, qo_insert_segment(), QO_NODE_ENTITY_SPEC, QO_SEG_FUNC_INDEX, QO_SEG_HEAD, QO_SEG_NAME, sm_class_constraints(), sm_find_class(), pt_statement_info::spec, strdup(), and strlen.
Referenced by qo_optimize_helper().
|
static |
Definition at line 978 of file query_graph.c.
References build_graph_for_entity(), walk_info::env, parser_node::node_type, PT_CONTINUE_WALK, PT_SPEC, and QO_BUILD_PATH.
Referenced by qo_optimize_helper().
|
static |
Definition at line 3506 of file query_graph.c.
References bitset_add(), pt_query_info::correlation_level, walk_info::env, i, parser_node::info, qo_subquery::node, parser_node::node_type, qo_env::nsubqueries, PT_CONTINUE_WALK, PT_DIFFERENCE, PT_INTERSECTION, PT_LIST_WALK, PT_SELECT, PT_UNION, QO_TERM_IDX, QO_TERM_SUBQUERIES, pt_statement_info::query, qo_env::subqueries, walk_info::term, and qo_subquery::terms.
Referenced by get_term_subqueries().
|
static |
Definition at line 4792 of file query_graph.c.
References parser_node::next, and p.
Referenced by qo_get_class_info().
Definition at line 2863 of file query_graph.c.
References pt_expr_info::arg1, pt_expr_info::arg2, pt_statement_info::expr, parser_node::info, NULL, pt_expr_info::op, parser_node::or_next, PT_BETWEEN_EQ_NA, PT_EQ, pt_is_query, and PT_RANGE.
Referenced by qo_analyze_term().
|
static |
Definition at line 3351 of file query_graph.c.
References assert, F_ELT, F_INSERT_SUBSTRING, F_JSON_ARRAY, F_JSON_ARRAY_APPEND, F_JSON_ARRAY_INSERT, F_JSON_CONTAINS, F_JSON_CONTAINS_PATH, F_JSON_DEPTH, F_JSON_EXTRACT, F_JSON_GET_ALL_PATHS, F_JSON_INSERT, F_JSON_KEYS, F_JSON_LENGTH, F_JSON_MERGE, F_JSON_MERGE_PATCH, F_JSON_OBJECT, F_JSON_PRETTY, F_JSON_QUOTE, F_JSON_REMOVE, F_JSON_REPLACE, F_JSON_SEARCH, F_JSON_SET, F_JSON_TYPE, F_JSON_UNQUOTE, F_JSON_VALID, F_REGEXP_COUNT, F_REGEXP_INSTR, F_REGEXP_LIKE, F_REGEXP_REPLACE, F_REGEXP_SUBSTR, RANK_EXPR_FUNCTION, RANK_EXPR_LIGHT, and RANK_EXPR_MEDIUM.
Referenced by get_operand_rank().
Definition at line 4149 of file query_graph.c.
References get_local_subqueries_post(), get_local_subqueries_pre(), get_term_subqueries(), i, parser_node::info, pt_select_info::list, parser_node::next, qo_env::nsubqueries, qo_env::nterms, NULL, parser, parser_walk_leaves(), pt_query_info::q, QO_ASSERT, QO_ENV_PARSER, QO_ENV_PT_TREE, QO_ENV_TERM, pt_statement_info::query, pt_query_info::select, and qo_env::subqueries.
Referenced by qo_optimize_helper().
|
static |
Definition at line 4112 of file query_graph.c.
References add_local_subquery(), pt_query_info::correlation_level, walk_info::env, parser_node::info, parser_node::node_type, PT_CONTINUE_WALK, PT_DIFFERENCE, PT_INTERSECTION, PT_SELECT, PT_UNION, and pt_statement_info::query.
Referenced by get_local_subqueries().
|
static |
Definition at line 4066 of file query_graph.c.
References bitset_delset(), bitset_init(), bitset_is_empty(), pt_query_info::correlation_level, walk_info::env, parser_node::info, parser_node::node_type, PT_CONTINUE_WALK, PT_DIFFERENCE, PT_INTERSECTION, PT_LIST_WALK, PT_SELECT, PT_UNION, qo_expr_segs(), and pt_statement_info::query.
Referenced by get_local_subqueries().
|
static |
Definition at line 3026 of file query_graph.c.
References assert, PT_ABS, PT_ACOS, PT_ADD_MONTHS, PT_ADDDATE, PT_ADDTIME, PT_AES_DECRYPT, PT_AES_ENCRYPT, PT_AND, PT_ASCII, PT_ASIN, PT_ASSIGN, PT_ATAN, PT_ATAN2, PT_BETWEEN, PT_BETWEEN_AND, PT_BETWEEN_EQ_NA, PT_BETWEEN_GE_INF, PT_BETWEEN_GE_LE, PT_BETWEEN_GE_LT, PT_BETWEEN_GT_INF, PT_BETWEEN_GT_LE, PT_BETWEEN_GT_LT, PT_BETWEEN_INF_LE, PT_BETWEEN_INF_LT, PT_BIN, PT_BIT_AND, PT_BIT_COUNT, PT_BIT_LENGTH, PT_BIT_NOT, PT_BIT_OR, PT_BIT_XOR, PT_BITSHIFT_LEFT, PT_BITSHIFT_RIGHT, PT_CASE, PT_CAST, PT_CEIL, PT_CHAR_LENGTH, PT_CHARSET, PT_CHR, PT_COALESCE, PT_COERCIBILITY, PT_COLLATION, PT_CONCAT, PT_CONCAT_WS, PT_CONNECT_BY_ISCYCLE, PT_CONNECT_BY_ISLEAF, PT_CONV, PT_CONV_TZ, PT_COS, PT_COT, PT_CRC32, PT_CURRENT_DATE, PT_CURRENT_DATETIME, PT_CURRENT_TIME, PT_CURRENT_TIMESTAMP, PT_CURRENT_USER, PT_CURRENT_VALUE, PT_DATABASE, PT_DATE_ADD, PT_DATE_FORMAT, PT_DATE_SUB, PT_DATEDIFF, PT_DATEF, PT_DAYF, PT_DAYOFMONTH, PT_DAYOFWEEK, PT_DAYOFYEAR, PT_DBTIMEZONE, PT_DECODE, PT_DECRYPT, PT_DEFAULTF, PT_DEFINE_VARIABLE, PT_DEGREES, PT_DISK_SIZE, PT_DIV, PT_DIVIDE, PT_DRAND, PT_DRANDOM, PT_ENCRYPT, PT_EQ, PT_EQ_ALL, PT_EQ_SOME, PT_EVALUATE_VARIABLE, PT_EXISTS, PT_EXP, PT_EXTRACT, PT_FIELD, PT_FINDINSET, PT_FLOOR, PT_FORMAT, PT_FROM_BASE64, PT_FROM_TZ, PT_FROM_UNIXTIME, PT_FROMDAYS, PT_FUNCTION_HOLDER, PT_GE, PT_GE_ALL, PT_GE_SOME, PT_GREATEST, PT_GT, PT_GT_ALL, PT_GT_INF, PT_GT_SOME, PT_HEX, PT_HOURF, PT_IF, PT_IFNULL, PT_INDEX_CARDINALITY, PT_INDEX_PREFIX, PT_INET_ATON, PT_INET_NTOA, PT_INST_NUM, PT_INSTR, PT_IS, PT_IS_IN, PT_IS_NOT, PT_IS_NOT_IN, PT_IS_NOT_NULL, PT_IS_NULL, PT_ISNULL, PT_LAST_DAY, PT_LAST_INSERT_ID, PT_LE, PT_LE_ALL, PT_LE_SOME, PT_LEAST, PT_LEFT, PT_LEVEL, PT_LIKE, PT_LIKE_ESCAPE, PT_LIKE_LOWER_BOUND, PT_LIKE_UPPER_BOUND, PT_LIST_DBS, PT_LN, PT_LOCAL_TRANSACTION_ID, PT_LOCATE, PT_LOG, PT_LOG10, PT_LOG2, PT_LOWER, PT_LPAD, PT_LT, PT_LT_ALL, PT_LT_INF, PT_LT_SOME, PT_LTRIM, PT_MAKEDATE, PT_MAKETIME, PT_MD5, PT_MID, PT_MINUS, PT_MINUTEF, PT_MOD, PT_MODULUS, PT_MONTHF, PT_MONTHS_BETWEEN, PT_NE, PT_NE_ALL, PT_NE_SOME, PT_NEW_TIME, PT_NEXT_VALUE, PT_NOT, PT_NOT_BETWEEN, PT_NOT_LIKE, PT_NOT_RLIKE, PT_NOT_RLIKE_BINARY, PT_NULLIF, PT_NULLSAFE_EQ, PT_NVL, PT_NVL2, PT_OCTET_LENGTH, PT_OID_OF_DUPLICATE_KEY, PT_OR, PT_ORDERBY_NUM, PT_PATH_EXPR_SET, PT_PI, PT_PLUS, PT_POSITION, PT_POWER, PT_QUARTERF, PT_RADIANS, PT_RAND, PT_RANDOM, PT_RANGE, PT_REPEAT, PT_REPLACE, PT_REVERSE, PT_RIGHT, PT_RLIKE, PT_RLIKE_BINARY, PT_ROUND, PT_ROW_COUNT, PT_ROWNUM, PT_RPAD, PT_RTRIM, PT_SCHEMA, PT_SCHEMA_DEF, PT_SECONDF, PT_SECTOTIME, PT_SESSIONTIMEZONE, PT_SETEQ, PT_SETNEQ, PT_SHA_ONE, PT_SHA_TWO, PT_SIGN, PT_SIN, PT_SLEEP, PT_SPACE, PT_SQRT, PT_STR_TO_DATE, PT_STRCAT, PT_STRCMP, PT_SUBDATE, PT_SUBSET, PT_SUBSETEQ, PT_SUBSTRING, PT_SUBSTRING_INDEX, PT_SUPERSET, PT_SUPERSETEQ, PT_SYS_DATE, PT_SYS_DATETIME, PT_SYS_GUID, PT_SYS_TIME, PT_SYS_TIMESTAMP, PT_TAN, PT_TIME_FORMAT, PT_TIMEDIFF, PT_TIMEF, PT_TIMES, PT_TIMESTAMP, PT_TIMETOSEC, PT_TO_BASE64, PT_TO_CHAR, PT_TO_DATE, PT_TO_DATETIME, PT_TO_DATETIME_TZ, PT_TO_ENUMERATION_VALUE, PT_TO_NUMBER, PT_TO_TIME, PT_TO_TIMESTAMP, PT_TO_TIMESTAMP_TZ, PT_TODAYS, PT_TRANSLATE, PT_TRIM, PT_TRUNC, PT_TYPEOF, PT_TZ_OFFSET, PT_UNARY_MINUS, PT_UNIX_TIMESTAMP, PT_UPPER, PT_USER, PT_UTC_DATE, PT_UTC_TIME, PT_UTC_TIMESTAMP, PT_VERSION, PT_WEEKDAY, PT_WEEKF, PT_XOR, PT_YEARF, RANK_EXPR_HEAVY, RANK_EXPR_LIGHT, and RANK_EXPR_MEDIUM.
Referenced by get_operand_rank(), and get_term_rank().
|
static |
Definition at line 3400 of file query_graph.c.
References pt_expr_info::arg1, assert, pt_statement_info::expr, get_expr_fcode_rank(), get_opcode_rank(), parser_node::info, parser_node::node_type, NULL, pt_expr_info::op, PT_EXPR, PT_FUNCTION, PT_FUNCTION_HOLDER, PT_NAME, PT_VALUE, RANK_DEFAULT, RANK_EXPR_FUNCTION, RANK_EXPR_MEDIUM, RANK_NAME, and RANK_VALUE.
Referenced by get_term_rank().
|
static |
Definition at line 4191 of file query_graph.c.
References get_term_rank(), i, qo_env::nterms, and QO_ENV_TERM.
Referenced by qo_optimize_helper().
Definition at line 4208 of file query_graph.c.
References pt_spec_info::as_attr_list, parser_node::info, PT_SPEC_IS_CTE, PT_SPEC_IS_DERIVED, pt_spec_info::referenced_attrs, and pt_statement_info::spec.
Referenced by build_graph_for_entity(), and graph_size_for_entity().
Definition at line 3458 of file query_graph.c.
References pt_expr_info::arg1, pt_expr_info::arg2, pt_expr_info::arg3, bitset_cardinality(), pt_statement_info::expr, get_opcode_rank(), get_operand_rank(), parser_node::info, parser_node::node_type, NULL, pt_expr_info::op, PT_EXPR, QO_IS_FAKE_TERM, QO_TERM_PT_EXPR, QO_TERM_RANK, QO_TERM_SUBQUERIES, and RANK_QUERY.
Referenced by get_rank().
Definition at line 2974 of file query_graph.c.
References check_subquery_pre(), walk_info::env, parser_node::next, NULL, parser_walk_tree(), pt_continue_walk(), QO_ENV_PARSER, QO_IS_DEP_TERM, QO_NODE_ENTITY_SPEC, QO_TERM_PT_EXPR, QO_TERM_TAIL, and walk_info::term.
Referenced by get_local_subqueries().
Definition at line 856 of file query_graph.c.
References pt_spec_info::flat_entity_list, sm_class_constraint::func_index_info, get_referenced_attrs(), parser_node::info, is_dependent_table(), pt_spec_info::join_type, pt_statement_info::name, sm_class_constraint::next, parser_node::next, qo_env::nnodes, qo_env::nsegs, qo_env::nterms, NULL, pt_name_info::original, pt_spec_info::path_conjuncts, pt_spec_info::path_entities, PT_JOIN_FULL_OUTER, PT_JOIN_INNER, PT_JOIN_LEFT_OUTER, PT_JOIN_RIGHT_OUTER, sm_class_constraints(), sm_find_class(), and pt_statement_info::spec.
Referenced by graph_size_select().
|
static |
Definition at line 815 of file query_graph.c.
References walk_info::env, graph_size_for_entity(), parser_node::node_type, PT_CONTINUE_WALK, PT_LIST_WALK, PT_SELECT, PT_SPEC, and qo_env::pt_tree.
Referenced by qo_validate().
|
static |
Definition at line 4819 of file query_graph.c.
References ARG_FILE_LINE, class_stats::attr_stats, db_is_class(), pt_name_info::db_object, ER_ERROR_SEVERITY, ER_OUT_OF_VIRTUAL_MEMORY, er_set(), class_stats::heap_num_pages, HFID_IS_NULL, parser_node::info, is_class(), qo_class_info_entry::mop, class_stats::n_attrs, qo_class_info_entry::name, pt_statement_info::name, parser_node::next, qo_class_info_entry::normal_class, NULL, qo_class_info_entry::oid, p, parser, qo_env::parser, PT_INTERNAL_ERROR, qo_estimate_statistics(), qo_class_info_entry::self_allocated, sm_get_ch_heap(), sm_get_ch_name(), sm_get_class_with_statistics(), qo_class_info_entry::smclass, qo_class_info_entry::stats, sm_class::stats, and WS_OID.
Referenced by qo_get_class_info().
Definition at line 2936 of file query_graph.c.
References pt_query_info::correlation_level, pt_spec_info::derived_table, pt_spec_info::derived_table_type, parser_node::info, NULL, PT_DERIVED_JSON_TABLE, PT_IS_CSELECT, PT_IS_SET_EXPR, PT_IS_SUBQUERY, pt_statement_info::query, and pt_statement_info::spec.
Referenced by graph_size_for_entity(), and qo_optimize_helper().
|
static |
Definition at line 6488 of file query_graph.c.
References i, qo_index_entry::nsegs, and qo_index_entry::seg_idxs.
Referenced by qo_find_matching_index().
|
static |
Definition at line 6581 of file query_graph.c.
References i, qo_class_info_entry::index, qo_class_info::info, qo_class_info::n, qo_index_entry::next, NULL, qo_find_matching_index(), and QO_INDEX_INDEX.
Referenced by qo_find_node_indexes().
Definition at line 3558 of file query_graph.c.
References pt_expr_info::arg1, pt_dot_info::arg2, pt_expr_info::arg2, pt_expr_info::arg3, pt_function_info::arg_list, pt_statement_info::dot, pt_statement_info::expr, pt_select_info::from, pt_statement_info::function, parser_node::info, pt_statement_info::name, parser_node::next, parser_node::node_type, NULL, pt_expr_info::op, qo_env::parser, PT_DOT_, PT_EXPR, pt_find_entity(), PT_FUNCTION_HOLDER, pt_function_index_skip_expr(), pt_is_function_index_expr(), PT_NAME, PT_PRIOR, qo_env::pt_tree, pt_query_info::q, pt_statement_info::query, pt_query_info::select, and pt_name_info::spec_id.
Referenced by qo_analyze_term().
Definition at line 1357 of file query_graph.c.
References pt_expr_info::arg1, pt_expr_info::arg2, pt_expr_info::arg3, pt_function_info::arg_list, pt_statement_info::expr, pt_statement_info::function, i, parser_node::info, pt_statement_info::name, parser_node::next, parser_node::node_type, NULL, pt_expr_info::op, qo_env::parser, PT_FUNCTION_HOLDER, pt_function_index_skip_expr(), pt_is_function_index_expr(), PT_NAME, QO_ASSERT, QO_ENV_NODE, QO_NODE_ENTITY_SPEC, and pt_name_info::spec_id.
Referenced by qo_index_cardinality(), qo_validate_index_attr_notnull(), and set_seg_node().
QO_SEGMENT* lookup_seg | ( | QO_NODE * | head, |
PT_NODE * | name, | ||
QO_ENV * | env | ||
) |
Definition at line 1558 of file query_graph.c.
References qo_node::class_name, i, intl_identifier_casecmp(), NULL, qo_env::parser, parser_print_function_index_expr(), pt_is_function_index_expr(), pt_name_equal(), QO_ENV_PARSER, QO_ENV_SEG, QO_SEG_FUNC_INDEX, QO_SEG_HEAD, QO_SEG_NAME, and QO_SEG_PT_NODE.
Referenced by qo_index_cardinality(), qo_join_segment(), qo_validate_index_attr_notnull(), and set_seg_node().
Definition at line 3655 of file query_graph.c.
References pt_expr_info::arg1, pt_expr_info::arg2, pt_expr_info::arg3, pt_function_info::arg_list, assert, pt_query_info::correlation_level, pt_statement_info::expr, F_MULTISET, F_SEQUENCE, F_SET, pt_statement_info::function, pt_function_info::function_type, parser_node::info, parser_node::next, parser_node::node_type, NULL, pt_expr_info::op, p, PT_ABS, PT_ACOS, PT_ADD_MONTHS, PT_ADDDATE, PT_ADDTIME, PT_AES_DECRYPT, PT_AES_ENCRYPT, PT_ASCII, PT_ASIN, PT_ATAN, PT_ATAN2, PT_BETWEEN_AND, PT_BETWEEN_EQ_NA, PT_BETWEEN_GE_INF, PT_BETWEEN_GE_LE, PT_BETWEEN_GE_LT, PT_BETWEEN_GT_INF, PT_BETWEEN_GT_LE, PT_BETWEEN_GT_LT, PT_BETWEEN_INF_LE, PT_BETWEEN_INF_LT, PT_BIN, PT_BIT_AND, PT_BIT_COUNT, PT_BIT_LENGTH, PT_BIT_NOT, PT_BIT_OR, PT_BIT_XOR, PT_BITSHIFT_LEFT, PT_BITSHIFT_RIGHT, PT_CASE, PT_CAST, PT_CEIL, PT_CHAR_LENGTH, PT_CHARSET, PT_CHR, PT_COALESCE, PT_COERCIBILITY, PT_COLLATION, PT_CONCAT, PT_CONCAT_WS, PT_CONV, PT_CONV_TZ, PT_COS, PT_COT, PT_CRC32, PT_CURRENT_DATE, PT_CURRENT_DATETIME, PT_CURRENT_TIME, PT_CURRENT_TIMESTAMP, PT_CURRENT_USER, PT_CURRENT_VALUE, PT_DATABASE, PT_DATE_ADD, PT_DATE_FORMAT, PT_DATE_SUB, PT_DATEDIFF, PT_DATEF, PT_DAYF, PT_DAYOFMONTH, PT_DAYOFWEEK, PT_DAYOFYEAR, PT_DBTIMEZONE, PT_DECODE, PT_DEFAULTF, PT_DEGREES, PT_DIFFERENCE, PT_DISK_SIZE, PT_DIV, PT_DIVIDE, PT_DOT_, PT_EVALUATE_VARIABLE, PT_EXP, PT_EXPR, PT_EXTRACT, PT_FIELD, PT_FINDINSET, PT_FLOOR, PT_FORMAT, PT_FROM_BASE64, PT_FROM_TZ, PT_FROM_UNIXTIME, PT_FROMDAYS, PT_FUNCTION, PT_FUNCTION_HOLDER, PT_GREATEST, PT_HEX, PT_HOST_VAR, PT_HOURF, PT_IF, PT_IFNULL, PT_INDEX_PREFIX, PT_INET_ATON, PT_INET_NTOA, PT_INSTR, PT_INTERSECTION, pt_is_pseudo_const(), PT_ISNULL, PT_LAST_DAY, PT_LAST_INSERT_ID, PT_LEAST, PT_LEFT, PT_LIKE_LOWER_BOUND, PT_LIKE_UPPER_BOUND, PT_LIST_DBS, PT_LN, PT_LOCAL_TRANSACTION_ID, PT_LOCATE, PT_LOG, PT_LOG10, PT_LOG2, PT_LOWER, PT_LPAD, PT_LTRIM, PT_MAKEDATE, PT_MAKETIME, PT_MD5, PT_MID, PT_MINUS, PT_MINUTEF, PT_MOD, PT_MODULUS, PT_MONTHF, PT_MONTHS_BETWEEN, PT_NAME, PT_NEW_TIME, PT_NEXT_VALUE, PT_NULLIF, PT_NVL, PT_NVL2, PT_OCTET_LENGTH, PT_OID_OF_DUPLICATE_KEY, PT_PI, PT_PLUS, PT_POSITION, PT_POWER, PT_PRIOR, PT_QPRIOR, PT_QUARTERF, PT_RADIANS, PT_REPEAT, PT_REPLACE, PT_REVERSE, PT_RIGHT, PT_ROUND, PT_ROW_COUNT, PT_RPAD, PT_RTRIM, PT_SCHEMA, PT_SCHEMA_DEF, PT_SECONDF, PT_SECTOTIME, PT_SELECT, PT_SHA_ONE, PT_SHA_TWO, PT_SIGN, PT_SIN, PT_SPACE, PT_SQRT, PT_STR_TO_DATE, PT_STRCAT, PT_STRCMP, PT_SUBDATE, PT_SUBSTRING, PT_SUBSTRING_INDEX, PT_SYS_DATE, PT_SYS_DATETIME, PT_SYS_TIME, PT_SYS_TIMESTAMP, PT_TAN, PT_TIME_FORMAT, PT_TIMEDIFF, PT_TIMEF, PT_TIMES, PT_TIMESTAMP, PT_TIMETOSEC, PT_TO_BASE64, PT_TO_CHAR, PT_TO_DATE, PT_TO_DATETIME, PT_TO_DATETIME_TZ, PT_TO_ENUMERATION_VALUE, PT_TO_NUMBER, PT_TO_TIME, PT_TO_TIMESTAMP, PT_TO_TIMESTAMP_TZ, PT_TODAYS, PT_TRANSLATE, PT_TRIM, PT_TRUNC, PT_TZ_OFFSET, PT_UNARY_MINUS, PT_UNION, PT_UNIX_TIMESTAMP, PT_UPPER, PT_USER, PT_UTC_DATE, PT_UTC_TIME, PT_UTC_TIMESTAMP, PT_VALUE, PT_VERSION, PT_WEEKDAY, PT_WEEKF, PT_YEARF, and pt_statement_info::query.
Referenced by pt_is_pseudo_const(), qo_analyze_term(), and qo_rewrite_like_terms().
Definition at line 5796 of file query_graph.c.
References qo_env::catch_, ER_FAILED_ASSERTION, er_set(), and ER_WARNING_SEVERITY.
|
static |
Definition at line 1774 of file query_graph.c.
References bitset_add(), bitset_assign(), bitset_first_member(), bitset_iterate(), bitset_next_member(), qo_env::fake_terms, JOIN_INNER, qo_env::Nterms, qo_env::nterms, NULL, QO_ASSERT, QO_ENV_NODE, QO_ENV_TERM, QO_NODE_DEP_SET, QO_NODE_IDX, QO_TC_DEP_JOIN, QO_TC_DEP_LINK, QO_TERM_CLASS, QO_TERM_FLAG, QO_TERM_HEAD, QO_TERM_IDX, QO_TERM_JOIN_TYPE, QO_TERM_LOCATION, QO_TERM_NODES, QO_TERM_PT_EXPR, QO_TERM_RANK, QO_TERM_SEGS, QO_TERM_SELECTIVITY, QO_TERM_TAIL, and walk_info::term.
Referenced by qo_optimize_helper().
|
static |
Definition at line 1851 of file query_graph.c.
References assert, bitset_add(), JOIN_INNER, JOIN_LEFT, JOIN_OUTER, JOIN_RIGHT, qo_env::nterms, qo_env::Nterms, NULL, PT_JOIN_FULL_OUTER, PT_JOIN_INNER, PT_JOIN_LEFT_OUTER, PT_JOIN_RIGHT_OUTER, QO_ADD_OUTER_DEP_SET, QO_ADD_RIGHT_DEP_SET, QO_ADD_RIGHT_TO_OUTER, QO_ASSERT, QO_ENV_TERM, QO_NODE_IDX, QO_NODE_LOCATION, QO_NODE_PT_JOIN_TYPE, QO_TC_DUMMY_JOIN, QO_TERM_CAN_USE_INDEX, QO_TERM_CLASS, QO_TERM_FLAG, QO_TERM_HEAD, QO_TERM_IDX, QO_TERM_JOIN_TYPE, QO_TERM_LOCATION, QO_TERM_NODES, QO_TERM_PT_EXPR, QO_TERM_RANK, QO_TERM_SELECTIVITY, QO_TERM_TAIL, and walk_info::term.
Referenced by qo_optimize_helper().
|
static |
Definition at line 1628 of file query_graph.c.
References pt_dot_info::arg2, pt_statement_info::dot, walk_info::env, qo_env::final_segs, parser_node::info, parser_node::node_type, PT_CONTINUE_WALK, PT_DOT_, PT_LIST_WALK, PT_NAME, and set_seg_node().
Referenced by qo_optimize_helper().
Definition at line 1239 of file query_graph.c.
References xasl_node::cardinality, pt_spec_info::derived_table, walk_info::env, class_stats::heap_num_objects, class_stats::heap_num_pages, i, if(), qo_class_info::info, parser_node::info, IO_PAGESIZE, pt_spec_info::meta_class, qo_class_info::n, pt_statement_info::name, qo_env::nnodes, qo_env::Nnodes, parser_node::node_type, NULL, pt_name_info::original, xasl_node::projected_size, PT_DIFFERENCE, PT_INTERSECTION, PT_JOIN_LEFT_OUTER, PT_JOIN_RIGHT_OUTER, PT_META_CLASS, PT_SELECT, PT_SPEC, PT_SPEC_IS_CTE, PT_SPEC_IS_DERIVED, PT_UNION, QO_ASSERT, QO_ENV_NODE, qo_get_class_info(), QO_GET_CLASS_STATS, QO_NODE_ENTITY_SPEC, QO_NODE_ENV, QO_NODE_IDX, QO_NODE_INFO, QO_NODE_NAME, QO_NODE_NCARD, QO_NODE_PT_JOIN_TYPE, QO_NODE_SARGABLE, QO_NODE_SORT_LIMIT_CANDIDATE, QO_NODE_TCARD, pt_statement_info::query, pt_spec_info::range_var, pt_statement_info::spec, and pt_query_info::xasl.
Referenced by build_graph_for_entity().
Definition at line 1656 of file query_graph.c.
References bitset_add(), pt_statement_info::expr, parser_node::info, pt_expr_info::location, pt_value_info::location, parser_node::next, NO_JOIN, parser_node::node_type, qo_env::nterms, qo_env::Nterms, NULL, PT_EXPR, pt_false_search_condition(), PT_JOIN_FULL_OUTER, PT_JOIN_INNER, PT_JOIN_LEFT_OUTER, PT_JOIN_RIGHT_OUTER, PT_VALUE, qo_analyze_term(), QO_ASSERT, QO_ENV_NODE, QO_ENV_PARSER, QO_ENV_TERM, QO_NODE_IDX, QO_NODE_PT_JOIN_TYPE, QO_TC_OTHER, QO_TC_SARG, QO_TERM_CLASS, QO_TERM_FLAG, QO_TERM_IDX, QO_TERM_JOIN_TYPE, QO_TERM_LOCATION, QO_TERM_MULTI_COL_CNT, QO_TERM_MULTI_COL_SEGS, QO_TERM_NODES, QO_TERM_PT_EXPR, QO_TERM_RANK, QO_TERM_SELECTIVITY, walk_info::term, and pt_statement_info::value.
Referenced by build_graph_for_entity(), and qo_optimize_helper().
Definition at line 4594 of file query_graph.c.
References qo_index_entry::all_unique_index_columns_are_equi_terms, ARG_FILE_LINE, bitset_init(), qo_index_entry::class_, qo_index_entry::col_num, qo_index_entry::constraints, qo_index_entry::cover_segments, ER_ERROR_SEVERITY, ER_OUT_OF_VIRTUAL_MEMORY, er_set(), qo_index_entry::first_sort_column, qo_index_entry::groupby_skip, i, qo_index_entry::ils_prefix_len, qo_index_entry::index_segs, qo_index_entry::is_iss_candidate, qo_index_entry::key_limit, qo_index_entry::key_type, qo_index::max, qo_index_entry::multi_col_range_segs, qo_index::n, qo_index_entry::next, qo_index_entry::nsegs, NULL, qo_index_entry::orderby_skip, QO_INDEX_INDEX, qo_index_entry::rangelist_seg_idx, qo_index_entry::rangelist_term_idx, qo_index_entry::seg_equal_terms, qo_index_entry::seg_idxs, qo_index_entry::seg_other_terms, SIZEOF_INDEX, qo_index_entry::statistics_attribute_name, qo_index_entry::terms, and qo_index_entry::use_descending.
Referenced by qo_find_node_indexes().
|
static |
Definition at line 1915 of file query_graph.c.
References pt_expr_info::arg1, pt_expr_info::arg2, assert, bitset_add(), bitset_assign(), bitset_cardinality(), bitset_delset(), bitset_first_member(), bitset_init(), bitset_intersects(), bitset_is_empty(), bitset_iterate(), BITSET_MEMBER, bitset_next_member(), bitset_union(), db_col_size(), db_get_collection, db_value_type_is_collection(), walk_info::env, qo_term::env, pt_statement_info::expr, expr_is_mergable(), i, qo_term::index_seg, parser_node::info, is_local_name(), JOIN_INNER, JOIN_LEFT, JOIN_OUTER, JOIN_RIGHT, qo_term::multi_col_segs, parser_node::next, NO_JOIN, parser_node::node_type, qo_env::nterms, NULL, pt_expr_info::op, parser_node::or_next, parser, qo_env::parser, parser_walk_tree(), PREDICATE_TERM, PT_AND, PT_BETWEEN, PT_BETWEEN_EQ_NA, pt_check_instnum_post(), pt_check_instnum_pre(), pt_converse_op(), PT_DIFFERENCE, PT_DOT_, PT_EQ, PT_EQ_ALL, PT_EQ_SOME, PT_EXISTS, PT_EXPR, PT_EXPR_INFO_IS_FLAGED, PT_EXPR_INFO_TRANSITIVE, PT_GE, PT_GE_ALL, PT_GE_SOME, PT_GT, PT_GT_ALL, PT_GT_SOME, pt_has_non_idx_sarg_coll_pre(), PT_INTERSECTION, PT_IS, pt_is_const, PT_IS_CONST, pt_is_function_index_expr(), pt_is_function_index_expression(), PT_IS_IN, pt_is_multi_col_term, PT_IS_NOT, PT_IS_NOT_IN, PT_IS_NOT_NULL, PT_IS_NULL, pt_is_pseudo_const(), pt_is_set_type, PT_JOIN_FULL_OUTER, PT_JOIN_INNER, PT_JOIN_LEFT_OUTER, PT_JOIN_RIGHT_OUTER, PT_LE, PT_LE_ALL, PT_LE_SOME, PT_LIKE, PT_LT, PT_LT_ALL, PT_LT_SOME, PT_NAME, PT_NE, PT_NE_ALL, PT_NE_SOME, PT_NOT, PT_NOT_BETWEEN, PT_NOT_LIKE, PT_NOT_RLIKE, PT_NOT_RLIKE_BINARY, PT_NULLSAFE_EQ, PT_OR, PT_PARAMETER, PT_PATH_INNER, PT_PATH_OUTER, PT_PATH_OUTER_WEASEL, PT_PRIOR, PT_RANGE, PT_RLIKE, PT_RLIKE_BINARY, PT_SELECT, PT_SETEQ, PT_SETNEQ, PT_SUBSET, PT_SUBSETEQ, PT_SUPERSET, PT_SUPERSETEQ, PT_TYPE_ENUMERATION, PT_UNION, PT_VALUE, PT_XOR, QO_ABORT, QO_ADD_OUTER_DEP_SET, QO_ADD_RIGHT_DEP_SET, QO_ADD_RIGHT_TO_OUTER, QO_ASSERT, QO_ENV_NODE, QO_ENV_PARSER, QO_ENV_SEG, QO_ENV_TERM, qo_equivalence(), qo_expr_segs(), qo_expr_selectivity(), qo_is_equi_join_term(), QO_NODE_DEP_SET, QO_NODE_IDX, QO_NODE_LOCATION, QO_NODE_NCARD, QO_NODE_OUTER_DEP_SET, QO_NODE_PT_JOIN_TYPE, QO_ON_COND_TERM, QO_SEG_FUNC_INDEX, QO_SEG_HEAD, qo_seg_nodes(), QO_TC_JOIN, QO_TC_OTHER, QO_TC_PATH, QO_TC_SARG, QO_TC_TOTALLY_AFTER_JOIN, QO_TERM_CAN_USE_INDEX, QO_TERM_CLASS, QO_TERM_CLEAR_FLAG, QO_TERM_ENV, QO_TERM_EQUAL_OP, QO_TERM_HEAD, QO_TERM_IS_FLAGED, QO_TERM_JOIN_TYPE, QO_TERM_LOCATION, QO_TERM_MERGEABLE_EDGE, QO_TERM_MULTI_COL_CNT, QO_TERM_MULTI_COL_SEGS, QO_TERM_MULTI_COLL_CONST, QO_TERM_MULTI_COLL_PRED, QO_TERM_NODES, QO_TERM_NOMINAL_SEG, QO_TERM_NON_IDX_SARG_COLL, QO_TERM_OID_SEG, QO_TERM_OR_PRED, QO_TERM_PT_EXPR, QO_TERM_RANGELIST, QO_TERM_SEG, QO_TERM_SEGS, QO_TERM_SELECTIVITY, QO_TERM_SET_FLAG, QO_TERM_SINGLE_PRED, QO_TERM_TAIL, and swap_node().
Referenced by qo_add_term().
|
static |
Definition at line 7840 of file query_graph.c.
References ARG_FILE_LINE, bitset_delset(), bitset_init(), BITSET_MEMBER, bitset_union(), ER_ERROR_SEVERITY, ER_OUT_OF_VIRTUAL_MEMORY, er_set(), free_and_init, i, qo_env::nedges, qo_env::nsegs, NULL, QO_ENV_SEG, QO_ENV_TERM, qo_eqclass_add(), qo_eqclass_new(), QO_EQCLASS_TERM, QO_SEG_EQ_ROOT, QO_SEG_EQCLASS, QO_SEG_IDX, QO_TERM_EQCLASS, QO_TERM_IS_FLAGED, QO_TERM_MERGEABLE_EDGE, QO_TERM_NOMINAL_SEG, QO_TERM_SEGS, QO_UNORDERED, and walk_info::term.
Referenced by qo_optimize_helper().
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().
|
static |
Definition at line 6099 of file query_graph.c.
References bitset_add(), bitset_assign(), BITSET_CLEAR, bitset_delset(), bitset_init(), bitset_intersects(), bitset_is_equivalent(), bitset_iterate(), BITSET_MEMBER, bitset_next_member(), bitset_remove(), i, qo_env::nnodes, NO_JOIN, qo_env::nterms, NULL, PT_JOIN_FULL_OUTER, PT_JOIN_INNER, PT_JOIN_LEFT_OUTER, PT_JOIN_NONE, PT_JOIN_RIGHT_OUTER, QO_ASSERT, QO_ENV_NODE, QO_ENV_TERM, QO_NODE_IDX, QO_NODE_IS_OUTER_JOIN, QO_NODE_LOCATION, QO_NODE_OUTER_DEP_SET, QO_NODE_PT_JOIN_TYPE, QO_ON_COND_TERM, QO_OUTER_JOIN_TERM, QO_TC_AFTER_JOIN, QO_TC_DURING_JOIN, QO_TC_JOIN, QO_TC_OTHER, QO_TC_SARG, QO_TERM_CLASS, QO_TERM_CLEAR_FLAG, QO_TERM_HEAD, QO_TERM_IS_FLAGED, QO_TERM_JOIN_TYPE, QO_TERM_LOCATION, QO_TERM_MERGEABLE_EDGE, QO_TERM_NODES, QO_TERM_OR_PRED, QO_TERM_TAIL, and walk_info::term.
Referenced by qo_optimize_helper().
Definition at line 5582 of file query_graph.c.
References db_monetary::amount, db_data::bigint, db_data::d, db_datetime::date, db_data::date, db_datetimetz::datetime, db_data::datetime, db_data::datetimetz, DB_TYPE_BIGINT, DB_TYPE_DATE, DB_TYPE_DATETIME, DB_TYPE_DATETIMELTZ, DB_TYPE_DATETIMETZ, DB_TYPE_DOUBLE, DB_TYPE_FLOAT, DB_TYPE_INTEGER, DB_TYPE_MONETARY, DB_TYPE_SHORT, DB_TYPE_TIME, DB_TYPE_TIMESTAMP, DB_TYPE_TIMESTAMPLTZ, DB_TYPE_TIMESTAMPTZ, db_data::f, db_data::i, db_data::money, db_data::sh, db_datetime::time, db_data::time, db_timestamptz::timestamp, db_data::timestamptz, and db_data::utime.
|
static |
Definition at line 5935 of file query_graph.c.
References bitset_cardinality(), BITSET_CLEAR, bitset_delset(), bitset_first_member(), bitset_init(), bitset_intersects(), bitset_is_equivalent(), bitset_iterate(), bitset_next_member(), bitset_union(), i, JOIN_INNER, qo_env::nedges, qo_env::nterms, NULL, PT_EXPR_INFO_IS_FLAGED, PT_EXPR_INFO_TRANSITIVE, QO_ASSERT, QO_ENV_NODE, QO_ENV_TERM, qo_exchange(), QO_IS_EDGE_TERM, qo_node_add_sarg(), QO_NODE_SARGABLE, QO_TC_DUMMY_JOIN, QO_TC_JOIN, QO_TC_SARG, QO_TERM_CLASS, QO_TERM_CLEAR_FLAG, QO_TERM_HEAD, QO_TERM_JOIN_TYPE, QO_TERM_MERGEABLE_EDGE, QO_TERM_NODES, QO_TERM_PT_EXPR, QO_TERM_SELECTIVITY, QO_TERM_TAIL, and walk_info::term.
Referenced by qo_optimize_helper().
|
static |
Definition at line 7530 of file query_graph.c.
References bitset_add(), bitset_iterate(), bitset_next_member(), qo_term::can_use_index, i, qo_term::index_seg, qo_node::info, qo_env::nnodes, qo_index_entry::nsegs, qo_env::nterms, NULL, PT_IS_SPEC_FLAG_SET, PT_SPEC_FLAG_PAGE_INFO_SCAN, PT_SPEC_FLAG_RECORD_INFO_SCAN, QO_ENV_NODE, QO_ENV_TERM, qo_find_node_indexes(), qo_get_index_info(), QO_NI_ENTRY, QO_NI_N, QO_NODE_ENTITY_SPEC, QO_NODE_INDEXES, QO_NODE_INFO_N, QO_SEG_IDX, QO_SEG_INDEX_TERMS, QO_TERM_IDX, QO_TERM_NODES, and qo_index_entry::seg_idxs.
Referenced by qo_optimize_helper().
|
static |
Definition at line 7645 of file query_graph.c.
References _WORDSIZE, ARG_FILE_LINE, bitset_add(), bitset_cardinality(), bitset_is_empty(), bitset_iterate(), bitset_next_member(), bitset_subset(), bitset_union(), ER_ERROR_SEVERITY, ER_OUT_OF_VIRTUAL_MEMORY, er_set(), free_and_init, LOG2_SIZEOF_POINTER, qo_env::nedges, qo_env::nnodes, qo_env::npartitions, NULL, p, QO_ABORT, QO_ENV_NODE, QO_ENV_PARTITION, QO_ENV_TERM, QO_JOIN_INFO_SIZE, QO_NODE_DEP_SET, QO_NODE_PARTITION, QO_NODE_REL_IDX, QO_PARTITION_DEPENDENCIES, QO_PARTITION_EDGES, qo_partition_init(), QO_PARTITION_M_OFFSET, QO_PARTITION_NODES, QO_TERM_NODES, and walk_info::term.
Referenced by qo_optimize_helper().
|
static |
Definition at line 9347 of file query_graph.c.
References bitset_add(), bitset_difference(), bitset_init(), bitset_iterate(), BITSET_MEMBER, bitset_next_member(), bitset_union(), i, JOIN_LEFT, JOIN_RIGHT, qo_env::nedges, QO_ENV_NODE, QO_ENV_TERM, qo_is_pk_fk_full_join(), QO_NODE_IDX, QO_TC_JOIN, QO_TC_PATH, QO_TERM_CLASS, QO_TERM_HEAD, QO_TERM_JOIN_TYPE, QO_TERM_NODES, QO_TERM_TAIL, and walk_info::term.
Referenced by qo_discover_sort_limit_nodes().
|
static |
Definition at line 8493 of file query_graph.c.
References pt_query_info::all_distinct, assert_release, bitset_cardinality(), bitset_delset(), bitset_difference(), bitset_first_member(), bitset_init(), bitset_iterate(), bitset_next_member(), bitset_union(), pt_select_info::connect_by, db_get_bigint(), DB_IS_NULL, pt_select_info::group_by, pt_select_info::hint, i, parser_node::info, parser_node::next, qo_env::Nnodes, NO_ERROR, parser_node::node_type, qo_env::npartitions, qo_env::nterms, NULL, pt_query_info::order_by, pt_sort_spec_info::pos_descr, qfile_tuple_value_position::pos_no, prm_get_integer_value(), PRM_ID_SORT_LIMIT_MAX_COUNT, PT_ALL, pt_get_query_limit_value(), pt_get_select_list(), pt_has_aggregate(), pt_has_analytic(), PT_HINT_NO_SORT_LIMIT, PT_IS_SELECT, PT_SORT_SPEC, pt_query_info::q, qo_discover_sort_limit_join_nodes(), QO_ENV_LIMIT_VALUE, QO_ENV_NODE, QO_ENV_PARSER, QO_ENV_PARTITION, QO_ENV_PT_TREE, QO_ENV_SORT_LIMIT_NODES, qo_expr_segs(), QO_NODE_SORT_LIMIT_CANDIDATE, QO_PARTITION_NODES, qo_seg_nodes(), QO_SL_INVALID, QO_SL_POSSIBLE, QO_SL_USE, QO_TC_AFTER_JOIN, QO_TC_OTHER, QO_TERM_CLASS, pt_statement_info::query, pt_query_info::select, qo_env::sort_limit_nodes, pt_statement_info::sort_spec, qo_env::terms, and qo_env::use_sort_limit.
Referenced by qo_optimize_helper().
|
static |
Definition at line 7961 of file query_graph.c.
References BITSET_MEMBER, qo_env::final_segs, i, parser_node::info, pt_query_info::is_subquery, qo_env::nedges, qo_env::neqclasses, qo_env::nnodes, parser_node::node_type, qo_env::npartitions, qo_env::nsegs, qo_env::nsubqueries, qo_env::nterms, NULL, PT_IS_CTE_NON_REC_SUBQUERY, PT_IS_CTE_REC_SUBQUERY, PT_SELECT, qo_env::pt_tree, PUT_FLAG, QO_ENV_EQCLASS, QO_ENV_NODE, QO_ENV_PARTITION, QO_ENV_SEG, QO_ENV_TERM, qo_eqclass_dump(), qo_node_dump(), qo_partition_dump(), qo_seg_fprint(), qo_subquery_dump(), qo_term_dump(), pt_statement_info::query, and qo_env::subqueries.
Referenced by qo_optimize_helper().
void qo_env_free | ( | QO_ENV * | 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().
|
static |
Definition at line 629 of file query_graph.c.
References ARG_FILE_LINE, walk_info::env, qo_env::eqclasses, ER_ERROR_SEVERITY, ER_OUT_OF_VIRTUAL_MEMORY, er_set(), error(), i, qo_env::Neqclasses, qo_env::neqclasses, qo_env::Nnodes, qo_env::nnodes, qo_env::nodes, qo_env::nsegs, qo_env::Nsegs, qo_env::nterms, qo_env::Nterms, NULL, qo_env::partitions, qo_env_free(), qo_env_new(), QO_INFINITY, qo_node_clear(), qo_seg_clear(), qo_term_clear(), qo_validate(), qo_env::segs, qo_env::terms, and UTIL_infinity.
Referenced by qo_optimize_query().
|
static |
Definition at line 5710 of file query_graph.c.
References ARG_FILE_LINE, assert, qo_env::bail_out, bitset_init(), db_make_null(), pt_spec_info::derived_table_type, qo_env::dump_enable, walk_info::env, qo_env::eqclasses, ER_ERROR_SEVERITY, ER_OUT_OF_VIRTUAL_MEMORY, er_set(), qo_env::fake_terms, qo_env::final_plan, qo_env::final_segs, parser_node::flag, pt_select_info::from, parser_node::info, parser_node::is_system_generated_stmt, qo_env::multi_range_opt_candidate, qo_env::nedges, qo_env::neqclasses, qo_env::nnodes, parser_node::node_type, qo_env::nodes, qo_env::npartitions, qo_env::nsegs, qo_env::nsubqueries, qo_env::nterms, NULL, p, parser, qo_env::parser, qo_env::partitions, qo_env::plan_dump_enabled, qo_env::planner, prm_get_bool_value(), PRM_ID_QO_DUMP, PT_IS_SHOWSTMT, PT_SELECT, PT_SELECT_FULL_INFO_COLS_SCHEMA, PT_SELECT_INFO_COLS_SCHEMA, PT_SELECT_INFO_IS_FLAGED, qo_env::pt_tree, pt_query_info::q, QO_ENV_LIMIT_VALUE, QO_ENV_SORT_LIMIT_NODES, pt_statement_info::query, qo_env::segs, pt_query_info::select, pt_statement_info::spec, qo_env::subqueries, qo_env::terms, and qo_env::tmp_bitset.
Referenced by qo_env_init().
|
static |
Definition at line 8408 of file query_graph.c.
References bitset_add(), QO_EQCLASS_IDX, QO_EQCLASS_SEGS, QO_NODE_EQCLASSES, QO_SEG_EQCLASS, QO_SEG_HEAD, and QO_SEG_IDX.
Referenced by qo_assign_eq_classes().
|
static |
Definition at line 8422 of file query_graph.c.
References bitset_iterate(), bitset_next_member(), QO_ENV_SEG, QO_EQCLASS_ENV, QO_EQCLASS_SEGS, QO_EQCLASS_TERM, qo_seg_fprint(), and qo_term_fprint().
Referenced by qo_env_dump().
void qo_eqclass_fprint_wrt | ( | QO_EQCLASS * | eqclass, |
BITSET * | nodeset, | ||
FILE * | f | ||
) |
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().
|
static |
Definition at line 8396 of file query_graph.c.
References bitset_delset(), and QO_EQCLASS_SEGS.
Referenced by qo_env_free().
|
static |
Definition at line 8372 of file query_graph.c.
References bitset_init(), walk_info::env, qo_env::neqclasses, qo_env::Neqclasses, NULL, QO_ASSERT, QO_ENV_EQCLASS, QO_EQCLASS_ENV, QO_EQCLASS_IDX, QO_EQCLASS_SEGS, and QO_EQCLASS_TERM.
Referenced by qo_assign_eq_classes().
|
static |
Definition at line 8712 of file query_graph.c.
References bitset_iterate(), BITSET_MEMBER, bitset_next_member(), qo_eqclass::env, NULL, QO_ASSERT, QO_ENV_SEG, QO_EQCLASS_ENV, QO_EQCLASS_SEGS, QO_NODE_IDX, and QO_SEG_HEAD.
Referenced by qo_eqclass_fprint_wrt().
|
static |
Definition at line 8687 of file query_graph.c.
References QO_SEG_EQ_ROOT.
Referenced by qo_analyze_term().
|
static |
Definition at line 5687 of file query_graph.c.
References DB_PAGESIZE, class_stats::heap_num_objects, class_stats::heap_num_pages, NOMINAL_HEAP_SIZE, and NOMINAL_OBJECT_SIZE.
Referenced by grok_classes().
Definition at line 5897 of file query_graph.c.
References BISET_EXCHANGE, qo_term::can_use_index, DOUBLE_EXCHANGE, qo_term::eqclass, EQCLASSPTR_EXCHANGE, qo_term::flag, FLAG_EXCHANGE, qo_term::head, qo_term::index_seg, INT_EXCHANGE, INT_PTR_EXCHANGE, qo_term::join_type, JOIN_TYPE_EXCHANGE, qo_term::location, qo_term::multi_col_cnt, qo_term::multi_col_segs, NODEPTR_EXCHANGE, qo_term::nodes, qo_term::nominal_seg, qo_term::oid_seg, qo_term::pt_expr, PT_NODE_EXCHANGE, qo_term::rank, qo_term::seg, SEGMENTPTR_EXCHANGE, qo_term::segments, qo_term::selectivity, qo_term::subqueries, qo_term::tail, qo_term::term_class, and TERMCLASS_EXCHANGE.
Referenced by qo_discover_edges().
Definition at line 2734 of file query_graph.c.
References ARG_FILE_LINE, ER_FAILED_ASSERTION, er_set(), ER_WARNING_SEVERITY, parser_node::next, NULL, qo_env::parser, parser_walk_tree(), pt_continue_walk(), QO_ENV_TMP_BITSET, and set_seg_expr().
Referenced by add_local_subquery(), gen_outer(), get_local_subqueries_pre(), qo_analyze_term(), qo_discover_sort_limit_nodes(), qo_optimize_helper(), qo_search_isnull_key_expr(), and qo_validate_index_attr_notnull().
|
static |
Definition at line 6416 of file query_graph.c.
References bitset_add(), BITSET_MEMBER, qo_term::can_use_index, qo_env::nterms, QO_ENV_TERM, QO_TC_SARG, QO_TERM_CLASS, QO_TERM_EQUAL_OP, QO_TERM_IDX, QO_TERM_IS_FLAGED, QO_TERM_PT_EXPR, QO_TERM_RANGELIST, QO_TERM_SEGS, qo_index_entry::rangelist_seg_idx, qo_index_entry::rangelist_term_idx, qo_index_entry::seg_equal_terms, qo_index_entry::seg_idxs, and qo_index_entry::seg_other_terms.
Referenced by qo_find_node_indexes().
|
static |
Definition at line 6636 of file query_graph.c.
References sm_class_constraint::attributes, bitset_add(), bitset_assign(), bitset_delset(), bitset_init(), bitset_iterate(), bitset_next_member(), bitset_remove(), sm_function_info::col_id, sm_function_info::expr_str, sm_class_constraint::func_index_info, sm_attribute::header, i, intl_identifier_casecmp(), sm_component::name, QO_ENV_SEG, QO_NODE_SEGS, QO_SEG_FUNC_INDEX, and QO_SEG_NAME.
Referenced by qo_find_node_indexes().
|
static |
Definition at line 6370 of file query_graph.c.
References assert, bitset_add(), BITSET_CLEAR, bitset_intersects(), bitset_union(), qo_index_entry::index_segs, qo_env::nterms, NULL, QO_ENV_TERM, QO_TERM_PT_EXPR, QO_TERM_SEGS, and qo_index_entry::terms.
Referenced by qo_find_node_indexes().
|
static |
Definition at line 6533 of file query_graph.c.
References i, is_equivalent_indexes(), qo_index::n, NULL, and QO_INDEX_INDEX.
Referenced by is_index_compatible().
Definition at line 7125 of file query_graph.c.
References ARG_FILE_LINE, assert, sm_function_info::attr_index_start, sm_class_constraint::attributes, bitset_delset(), bitset_init(), qo_index_entry::class_, sm_function_info::col_id, qo_index_entry::col_num, qo_index_entry::constraints, qo_index_entry::cover_segments, ER_ERROR_SEVERITY, ER_OUT_OF_VIRTUAL_MEMORY, er_set(), sm_class_constraint::filter_predicate, qo_index_entry::force, free_and_init, sm_class_constraint::func_index_info, sm_attribute::header, i, qo_index_entry::ils_prefix_len, qo_class_info_entry::index, qo_class_info::info, intl_identifier_casecmp(), qo_index_entry::is_func_index, is_index_compatible(), qo_index_entry::is_iss_candidate, qo_index_entry::key_limit, qo_index_entry::key_type, qo_class_info_entry::mop, qo_class_info::n, qo_index::n, sm_component::name, sm_class_constraint::name, NELEMENTS, qo_index_entry::next, sm_class_constraint::next, qo_index_entry::nsegs, NULL, PT_IDX_HINT_ALL_EXCEPT, PT_IDX_HINT_FORCE, PT_IDX_HINT_IGNORE, PT_IDX_HINT_USE, PT_SPEC_SPECIAL_INDEX_SCAN, qo_alloc_index(), qo_find_index_seg_terms(), qo_find_index_segs(), qo_find_index_terms(), qo_get_ils_prefix_length(), QO_INDEX_INDEX, qo_is_coverage_index(), qo_is_iss_index(), qo_is_non_mvcc_class_with_index(), qo_is_usable_index(), QO_NI_ENTRY, QO_NI_N, QO_NODE_ENTITY_SPEC, QO_NODE_INDEXES, QO_NODE_INFO, QO_NODE_USING_INDEX, QO_UI_FORCE, QO_UI_INDEX, QO_UI_KEYLIMIT, QO_UI_N, qo_index_entry::rangelist_seg_idx, qo_index_entry::seg_equal_terms, qo_index_entry::seg_idxs, qo_index_entry::seg_other_terms, SIZEOF_NODE_INDEX, sm_class_constraints(), qo_index_entry::statistics_attribute_name, and strlen.
Referenced by qo_discover_indexes().
|
static |
Definition at line 5308 of file query_graph.c.
References qo_attr_info::cum_stats, free_and_init, and QO_ATTR_CUM_STATS::pkeys.
Referenced by qo_get_attr_info(), qo_get_attr_info_func_index(), and qo_seg_free().
|
static |
Definition at line 4753 of file query_graph.c.
References free_and_init, i, qo_class_info_entry::index, qo_class_info::info, qo_class_info_entry::mop, qo_class_info::n, qo_class_info_entry::name, NULL, qo_free_index(), qo_class_info_entry::self_allocated, qo_class_info_entry::smclass, and qo_class_info_entry::stats.
Referenced by qo_node_free().
Definition at line 4651 of file query_graph.c.
References bitset_delset(), qo_index_entry::constraints, free_and_init, i, qo_index_entry::index_segs, qo_index::max, qo_index_entry::multi_col_range_segs, qo_index_entry::nsegs, NULL, QO_INDEX_INDEX, qo_index_entry::seg_equal_terms, qo_index_entry::seg_idxs, qo_index_entry::seg_other_terms, qo_index_entry::statistics_attribute_name, and qo_index_entry::terms.
Referenced by qo_free_class_info().
|
static |
Definition at line 5548 of file query_graph.c.
References free_and_init, i, QO_ATTR_CUM_STATS::pkeys, QO_NI_ENTRY, and QO_NI_N.
Referenced by qo_node_free().
|
static |
Definition at line 5049 of file query_graph.c.
References ARG_FILE_LINE, assert, class_stats::attr_stats, attr_stats::bt_stats, btree_stats::btid, BTID_IS_EQUAL, BTREE_STATS_PKEYS_NUM, sm_class::constraints, qo_attr_info::cum_stats, ER_ERROR_SEVERITY, ER_OUT_OF_VIRTUAL_MEMORY, er_set(), free_and_init, btree_stats::has_function, btree_stats::height, QO_ATTR_CUM_STATS::height, i, attr_stats::id, sm_class_constraint::index_btid, sm_class_constraint::index_status, QO_ATTR_CUM_STATS::is_indexed, btree_stats::key_type, QO_ATTR_CUM_STATS::key_type, btree_stats::keys, QO_ATTR_CUM_STATS::keys, btree_stats::leafs, QO_ATTR_CUM_STATS::leafs, qo_class_info_entry::mop, class_stats::n_attrs, attr_stats::n_btstats, sm_class_constraint::next, NULL, btree_stats::pages, QO_ATTR_CUM_STATS::pages, btree_stats::pkeys, QO_ATTR_CUM_STATS::pkeys, btree_stats::pkeys_size, QO_ATTR_CUM_STATS::pkeys_size, PT_ALL, PT_RESERVED, pt_Reserved_name_table, QO_ASSERT, qo_free_attr_info(), QO_GET_CLASS_STATS, QO_NODE_ENTITY_SPEC, QO_NODE_INFO, QO_NODE_INFO_N, QO_SEG_HEAD, QO_SEG_NAME, QO_SEG_PT_NODE, SIZEOF_ATTR_CUM_STATS_PKEYS, sm_att_id(), sm_att_type_id(), sm_class_constraints(), SM_IS_CONSTRAINT_UNIQUE_FAMILY, sm_is_index_visible(), SM_NORMAL_INDEX, qo_class_info_entry::smclass, attr_stats::type, QO_ATTR_CUM_STATS::type, sm_class_constraint::type, pt_reserved_name::type, and QO_ATTR_CUM_STATS::valid_limits.
Referenced by qo_insert_segment().
|
static |
Definition at line 4892 of file query_graph.c.
References ARG_FILE_LINE, assert, class_stats::attr_stats, sm_class_constraint::attributes, attr_stats::bt_stats, btree_stats::btid, BTID_IS_EQUAL, BTREE_STATS_PKEYS_NUM, sm_function_info::col_id, sm_class::constraints, qo_attr_info::cum_stats, ER_ERROR_SEVERITY, ER_OUT_OF_VIRTUAL_MEMORY, er_set(), sm_function_info::expr_str, free_and_init, sm_class_constraint::func_index_info, btree_stats::has_function, btree_stats::height, QO_ATTR_CUM_STATS::height, i, attr_stats::id, sm_attribute::id, sm_class_constraint::index_btid, sm_class_constraint::index_status, intl_identifier_casecmp(), QO_ATTR_CUM_STATS::is_indexed, btree_stats::key_type, QO_ATTR_CUM_STATS::key_type, btree_stats::keys, QO_ATTR_CUM_STATS::keys, btree_stats::leafs, QO_ATTR_CUM_STATS::leafs, class_stats::n_attrs, attr_stats::n_btstats, sm_class_constraint::next, NULL, btree_stats::pages, QO_ATTR_CUM_STATS::pages, btree_stats::pkeys, QO_ATTR_CUM_STATS::pkeys, btree_stats::pkeys_size, QO_ATTR_CUM_STATS::pkeys_size, pt_type_enum_to_db(), QO_ASSERT, qo_free_attr_info(), QO_GET_CLASS_STATS, QO_NODE_INFO, QO_NODE_INFO_N, QO_SEG_HEAD, QO_SEG_PT_NODE, SIZEOF_ATTR_CUM_STATS_PKEYS, SM_NORMAL_INDEX, qo_class_info_entry::smclass, QO_ATTR_CUM_STATS::type, and QO_ATTR_CUM_STATS::valid_limits.
Referenced by qo_insert_segment().
|
static |
Definition at line 4708 of file query_graph.c.
References ARG_FILE_LINE, count_classes(), ER_ERROR_SEVERITY, ER_OUT_OF_VIRTUAL_MEMORY, er_set(), grok_classes(), i, qo_class_info_entry::index, qo_class_info::info, qo_class_info_entry::mop, qo_class_info::n, qo_class_info_entry::name, NULL, qo_class_info_entry::oid, OID_SET_NULL, QO_ASSERT, QO_NODE_ENTITY_SPEC, qo_class_info_entry::self_allocated, SIZEOF_CLASS_INFO, qo_class_info_entry::smclass, and qo_class_info_entry::stats.
Referenced by qo_add_node().
|
static |
Definition at line 6866 of file query_graph.c.
References pt_query_info::all_distinct, assert, bitset_cardinality(), qo_index_entry::col_num, qo_index_entry::cover_segments, pt_select_info::hint, i, parser_node::info, parser_node::node_type, qo_index_entry::nsegs, NULL, qo_env::parser, PT_DISTINCT, PT_HINT_INDEX_LS, PT_HINT_INDEX_SS, PT_HINT_NO_INDEX_LS, PT_HINT_NO_INDEX_SS, pt_is_single_tuple(), PT_SELECT, PT_SELECT_INFO_DISABLE_LOOSE_SCAN, PT_SELECT_INFO_HAS_AGG, PT_SELECT_INFO_IS_FLAGED, qo_env::pt_tree, pt_query_info::q, QO_ASSERT, QO_ENTRY_MULTI_COL, QO_NODE_HINT, pt_statement_info::query, qo_index_entry::seg_idxs, pt_query_info::select, and qo_index_entry::terms.
Referenced by qo_find_node_indexes().
Definition at line 5330 of file query_graph.c.
References ARG_FILE_LINE, assert, class_stats::attr_stats, attr_stats::bt_stats, btree_stats::btid, BTID_IS_EQUAL, BTREE_STATS_PKEYS_NUM, ER_ERROR_SEVERITY, ER_OUT_OF_VIRTUAL_MEMORY, er_set(), free_and_init, btree_stats::has_function, btree_stats::height, QO_ATTR_CUM_STATS::height, i, attr_stats::id, QO_ATTR_CUM_STATS::is_indexed, btree_stats::key_type, QO_ATTR_CUM_STATS::key_type, btree_stats::keys, QO_ATTR_CUM_STATS::keys, btree_stats::leafs, QO_ATTR_CUM_STATS::leafs, qo_class_info_entry::mop, class_stats::n_attrs, attr_stats::n_btstats, qo_index_entry::next, NULL, btree_stats::pages, QO_ATTR_CUM_STATS::pages, btree_stats::pkeys, QO_ATTR_CUM_STATS::pkeys, btree_stats::pkeys_size, QO_ATTR_CUM_STATS::pkeys_size, PT_ALL, QO_ASSERT, QO_ENV_SEG, QO_GET_CLASS_STATS, QO_NI_ENTRY, QO_NI_N, QO_NODE_ENTITY_SPEC, QO_NODE_INDEXES, QO_NODE_INFO, QO_SEG_HEAD, QO_SEG_NAME, SIZEOF_ATTR_CUM_STATS_PKEYS, sm_att_id(), SM_IS_CONSTRAINT_UNIQUE_FAMILY, attr_stats::type, QO_ATTR_CUM_STATS::type, and QO_ATTR_CUM_STATS::valid_limits.
Referenced by qo_discover_indexes().
void qo_get_optimization_param | ( | void * | retval, |
QO_PARAM | param, | ||
... | |||
) |
Definition at line 269 of file query_graph.c.
References prm_get_integer_value(), PRM_ID_OPTIMIZATION_LEVEL, QO_PARAM_COST, QO_PARAM_LEVEL, and qo_plan_get_cost_fn().
Referenced by csql_get_sys_param(), csql_set_plan_dump(), do_find_unique_constraint_violations(), do_get_optimization_param(), do_insert_template(), pt_make_connect_by_proc(), pt_plan_query(), pt_plan_schema(), pt_plan_single_table_hq_iterations(), pt_print_select(), qo_can_generate_single_table_connect_by(), qo_need_skip_execution(), qo_optimize_helper(), qo_optimize_queries(), qo_optimize_query(), qo_plan_dump(), and qo_to_xasl().
|
static |
Definition at line 1476 of file query_graph.c.
References bitset_add(), parser_node::info, pt_statement_info::name, parser_node::node_type, qo_env::nsegs, qo_env::Nsegs, NULL, pt_name_info::original, pt_append_string(), PT_IS_CLASSOID_NAME, PT_IS_OID_NAME, PT_NAME, QO_ASSERT, QO_ENV_PARSER, QO_ENV_SEG, qo_get_attr_info(), qo_get_attr_info_func_index(), QO_NODE_OID_SEG, QO_NODE_SEGS, QO_SEG_HEAD, QO_SEG_IDX, QO_SEG_INFO, QO_SEG_NAME, QO_SEG_PT_NODE, and QO_SEG_TAIL.
Referenced by build_graph_for_entity(), and build_query_graph_function_index().
|
static |
Definition at line 6736 of file query_graph.c.
References BITSET_MEMBER, qo_index_entry::class_, qo_index_entry::col_num, i, qo_class_info::info, parser_node::info, qo_class_info_entry::mop, qo_class_info::n, pt_statement_info::name, parser_node::node_type, qo_class_info_entry::normal_class, qo_index_entry::nsegs, qo_env::nsegs, qo_env::nterms, NULL, PT_DOT_, PT_HINT_NO_COVERING_IDX, PT_NAME, PT_SELECT, QO_ASSERT, QO_ENV_PT_TREE, QO_ENV_SEG, QO_ENV_TERM, QO_NODE_INFO, QO_SEG_FUNC_INDEX, QO_SEG_HEAD, QO_SEG_IDX, QO_SEG_IS_OID_SEG, QO_SEG_PT_NODE, QO_TERM_SEGS, pt_name_info::resolved, and qo_index_entry::seg_idxs.
Referenced by qo_find_node_indexes().
Definition at line 2897 of file query_graph.c.
References pt_expr_info::arg1, pt_expr_info::arg2, assert, pt_statement_info::expr, parser_node::info, NULL, pt_expr_info::op, parser_node::or_next, PT_BETWEEN_EQ_NA, pt_is_attr(), PT_RANGE, QO_TERM_EQUAL_OP, QO_TERM_IS_FLAGED, QO_TERM_PT_EXPR, QO_TERM_RANGELIST, and QO_TERM_SINGLE_PRED.
Referenced by qo_analyze_term().
bool qo_is_filter_index | ( | QO_INDEX_ENTRY * | ent | ) |
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().
|
static |
Definition at line 6978 of file query_graph.c.
References assert, bitset_cardinality(), pt_select_info::connect_by, qo_index_entry::constraints, sm_class_constraint::filter_predicate, pt_select_info::hint, i, parser_node::info, parser_node::node_type, qo_index_entry::nsegs, NULL, PT_HINT_INDEX_SS, PT_HINT_NO_INDEX_SS, PT_SELECT, qo_env::pt_tree, pt_query_info::q, QO_ASSERT, QO_ENTRY_MULTI_COL, QO_ENV_SEG, QO_NODE_HINT, QO_SEG_FUNC_INDEX, pt_statement_info::query, qo_index_entry::seg_equal_terms, qo_index_entry::seg_idxs, qo_index_entry::seg_other_terms, and pt_query_info::select.
Referenced by qo_find_node_indexes().
|
static |
Definition at line 9598 of file query_graph.c.
References qo_class_info_entry::oid, OID_CACHE_HA_APPLY_INFO_CLASS_ID, OID_CACHE_SERIAL_CLASS_ID, and oid_check_cached_class_oid().
Referenced by qo_find_node_indexes().
Definition at line 9419 of file query_graph.c.
References assert, BITSET_MEMBER, BTID_IS_EQUAL, qo_term::can_use_index, qo_index_entry::constraints, i, sm_class_constraint::index_btid, JOIN_INNER, qo_index_entry::nsegs, qo_env::nterms, NULL, QO_ENV_TERM, QO_NI_ENTRY, QO_NI_N, QO_NODE_IDX, QO_NODE_INDEXES, QO_SEG_HEAD, QO_SEG_IDX, QO_TC_DUMMY_JOIN, QO_TC_JOIN, QO_TERM_CLASS, QO_TERM_EQUAL_OP, QO_TERM_IDX, QO_TERM_INDEX_SEG, QO_TERM_IS_FLAGED, QO_TERM_JOIN_TYPE, QO_TERM_NODES, qo_index_entry::seg_idxs, SM_CONSTRAINT_FOREIGN_KEY, SM_CONSTRAINT_PRIMARY_KEY, walk_info::term, qo_index_entry::terms, and sm_class_constraint::type.
Referenced by qo_discover_sort_limit_join_nodes().
bool qo_is_prefix_index | ( | QO_INDEX_ENTRY * | ent | ) |
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().
|
static |
Definition at line 7089 of file query_graph.c.
References sm_class_constraint::filter_predicate, sm_class_constraint::index_status, NULL, QO_NODE_USING_INDEX, SM_IS_CONSTRAINT_INDEX_FAMILY, SM_NORMAL_INDEX, and sm_class_constraint::type.
Referenced by qo_find_node_indexes().
|
static |
Definition at line 1537 of file query_graph.c.
References lookup_seg(), NULL, QO_ASSERT, and QO_SEG_TAIL.
Referenced by build_graph_for_entity().
bool qo_need_skip_execution | ( | void | ) |
Definition at line 297 of file query_graph.c.
References qo_get_optimization_param(), and QO_PARAM_LEVEL.
Referenced by do_execute_insert(), do_execute_statement(), do_insert_template(), do_merge(), do_statement(), execute_query(), prepare_and_execute_query(), prepare_query(), and pt_plan_query().
Definition at line 8142 of file query_graph.c.
References bitset_add(), QO_NODE_NCARD, QO_NODE_SARGS, QO_NODE_SELECTIVITY, QO_TERM_IDX, and QO_TERM_SELECTIVITY.
Referenced by qo_discover_edges().
|
static |
Definition at line 8081 of file query_graph.c.
References bitset_init(), walk_info::env, NULL, PT_HINT_NONE, QO_ENV_NODE, QO_NODE_DEP_SET, QO_NODE_ENTITY_SPEC, QO_NODE_ENV, QO_NODE_EQCLASSES, QO_NODE_HINT, QO_NODE_IDX, QO_NODE_INDEXES, QO_NODE_INFO, QO_NODE_NAME, QO_NODE_NCARD, QO_NODE_OID_SEG, QO_NODE_OUTER_DEP_SET, QO_NODE_PARTITION, QO_NODE_RIGHT_DEP_SET, QO_NODE_SARGS, QO_NODE_SEGS, QO_NODE_SELECTIVITY, QO_NODE_SUBQUERIES, QO_NODE_TCARD, and QO_NODE_USING_INDEX.
Referenced by qo_env_init().
|
static |
Definition at line 8178 of file query_graph.c.
References parser_node::alias_print, bitset_is_empty(), bitset_print(), i, parser_node::info, pt_spec_info::location, pt_spec_info::meta_class, PT_META_CLASS, QO_NODE_DEP_SET, QO_NODE_ENTITY_SPEC, QO_NODE_INFO, QO_NODE_INFO_N, QO_NODE_NAME, QO_NODE_NCARD, QO_NODE_OUTER_DEP_SET, QO_NODE_RIGHT_DEP_SET, QO_NODE_SARGS, QO_NODE_TCARD, pt_spec_info::range_var, and pt_statement_info::spec.
Referenced by qo_env_dump().
void qo_node_fprint | ( | QO_NODE * | node, |
FILE * | f | ||
) |
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().
|
static |
Definition at line 8115 of file query_graph.c.
References bitset_delset(), free_and_init, qo_free_class_info(), qo_free_node_index_info(), QO_NODE_DEP_SET, QO_NODE_ENV, QO_NODE_EQCLASSES, QO_NODE_INDEXES, QO_NODE_INFO, QO_NODE_OUTER_DEP_SET, QO_NODE_RIGHT_DEP_SET, QO_NODE_SARGS, QO_NODE_SEGS, QO_NODE_SUBQUERIES, and QO_NODE_USING_INDEX.
Referenced by qo_env_free().
Definition at line 429 of file query_graph.c.
References add_hint(), add_using_index(), pt_select_info::after_cb_filter, bitset_add(), BITSET_CLEAR, bitset_delset(), bitset_init(), bitset_is_empty(), BITSET_MEMBER, build_query_graph(), build_query_graph_function_index(), build_query_graph_post(), pt_select_info::connect_by, pt_spec_info::derived_table, DETAILED_DUMP, walk_info::env, pt_select_info::from, get_local_subqueries(), get_rank(), pt_select_info::group_by, pt_select_info::having, parser_node::info, is_dependent_table(), pt_select_info::list, parser_node::next, qo_env::nnodes, parser_node::node_type, NULL, pt_spec_info::on_cond, parser, parser_walk_tree(), PLAN_DUMP_ENABLED, qo_env::plan_dump_enabled, PREDICATE_TERM, pt_continue_walk(), PT_JOIN_CROSS, PT_JOIN_NONE, PT_SPEC, pt_query_info::q, qo_add_dep_term(), qo_add_dummy_join_term(), qo_add_final_segment(), qo_add_term(), QO_ASSERT, qo_assign_eq_classes(), qo_classify_outerjoin_terms(), qo_discover_edges(), qo_discover_indexes(), qo_discover_partitions(), qo_discover_sort_limit_nodes(), qo_env_dump(), qo_env_free(), QO_ENV_NODE, QO_ENV_PARSER, QO_ENV_PT_TREE, qo_expr_segs(), qo_get_optimization_param(), QO_NODE_ENTITY_SPEC, QO_NODE_IDX, QO_NODE_LOCATION, QO_NODE_PT_JOIN_TYPE, QO_ON_COND_TERM, QO_PARAM_LEVEL, qo_planner_search(), qo_seg_nodes(), QO_TC_JOIN, QO_TERM_CLASS, QO_TERM_HEAD, QO_TERM_LOCATION, QO_TERM_TAIL, pt_statement_info::query, query_Plan_dump_fp, pt_query_info::select, pt_select_info::single_table_opt, pt_statement_info::spec, pt_select_info::start_with, walk_info::term, pt_select_info::using_index, and pt_select_info::where.
Referenced by qo_optimize_query().
QO_PLAN* qo_optimize_query | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | tree | ||
) |
Definition at line 358 of file query_graph.c.
References ARG_FILE_LINE, qo_env::catch_, walk_info::env, ER_ERROR_SEVERITY, ER_FAILED_ASSERTION, er_set(), parser_node::node_type, NULL, OPTIMIZATION_ENABLED, PT_SELECT, qo_env_free(), qo_env_init(), qo_get_optimization_param(), qo_optimize_helper(), and QO_PARAM_LEVEL.
Referenced by pt_plan_query(), and pt_plan_single_table_hq_iterations().
|
static |
Definition at line 9149 of file query_graph.c.
References bitset_print(), QO_PARTITION_DEPENDENCIES, QO_PARTITION_EDGES, and QO_PARTITION_NODES.
Referenced by qo_env_dump().
|
static |
Definition at line 9122 of file query_graph.c.
References bitset_delset(), NULL, QO_PARTITION_DEPENDENCIES, QO_PARTITION_EDGES, QO_PARTITION_NODES, QO_PARTITION_PLAN, and qo_plan_del_ref.
Referenced by qo_env_free().
|
static |
Definition at line 9106 of file query_graph.c.
References bitset_init(), NULL, QO_PARTITION_DEPENDENCIES, QO_PARTITION_EDGES, QO_PARTITION_IDX, QO_PARTITION_M_OFFSET, QO_PARTITION_NODES, and QO_PARTITION_PLAN.
Referenced by qo_discover_partitions().
void qo_print_stats | ( | FILE * | f | ) |
Definition at line 9166 of file query_graph.c.
References qo_info_stats(), and qo_plans_stats().
Referenced by qo_plan_discard().
|
static |
Definition at line 8261 of file query_graph.c.
References bitset_init(), walk_info::env, NULL, QO_ENV_SEG, QO_SEG_CLASS_ATTR, QO_SEG_ENV, QO_SEG_EQ_ROOT, QO_SEG_EQCLASS, QO_SEG_FUNC_INDEX, QO_SEG_HEAD, QO_SEG_IDX, QO_SEG_INDEX_TERMS, QO_SEG_INFO, QO_SEG_NAME, QO_SEG_SET_VALUED, QO_SEG_SHARED_ATTR, and QO_SEG_TAIL.
Referenced by qo_env_init().
void qo_seg_fprint | ( | QO_SEGMENT * | seg, |
FILE * | f | ||
) |
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().
|
static |
Definition at line 8286 of file query_graph.c.
References bitset_delset(), free_and_init, NULL, qo_free_attr_info(), QO_SEG_ENV, QO_SEG_FUNC_INDEX, QO_SEG_INDEX_TERMS, QO_SEG_INFO, and QO_SEG_NAME.
Referenced by qo_env_free().
Definition at line 9185 of file query_graph.c.
References bitset_add(), BITSET_CLEAR, bitset_iterate(), bitset_next_member(), i, QO_ENV_SEG, QO_NODE_IDX, and QO_SEG_HEAD.
Referenced by add_local_subquery(), qo_analyze_term(), qo_discover_sort_limit_nodes(), and qo_optimize_helper().
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_set_optimization_param | ( | void * | retval, |
QO_PARAM | param, | ||
... | |||
) |
Definition at line 316 of file query_graph.c.
References prm_get_integer_value(), PRM_ID_OPTIMIZATION_LEVEL, prm_set_integer_value(), QO_PARAM_COST, QO_PARAM_LEVEL, and qo_plan_set_cost_fn().
Referenced by csql_set_plan_dump(), csql_set_sys_param(), and do_set_optimization_param().
|
static |
Definition at line 9047 of file query_graph.c.
References bitset_iterate(), bitset_next_member(), i, qo_subquery::node, qo_subquery::nodes, NULL, QO_ENV_SEG, qo_seg_fprint(), qo_subquery::segs, and qo_subquery::terms.
Referenced by qo_env_dump().
|
static |
Definition at line 9091 of file query_graph.c.
References bitset_delset(), qo_subquery::nodes, qo_subquery::segs, and qo_subquery::terms.
Referenced by qo_env_free().
|
static |
Definition at line 8451 of file query_graph.c.
References bitset_init(), walk_info::env, NO_JOIN, NULL, QO_ENV_TERM, QO_TC_OTHER, QO_TERM_CAN_USE_INDEX, QO_TERM_CLASS, QO_TERM_ENV, QO_TERM_EQCLASS, QO_TERM_FLAG, QO_TERM_HEAD, QO_TERM_IDX, QO_TERM_INDEX_SEG, QO_TERM_JOIN_TYPE, QO_TERM_LOCATION, QO_TERM_MULTI_COL_CNT, QO_TERM_MULTI_COL_SEGS, QO_TERM_NODES, QO_TERM_NOMINAL_SEG, QO_TERM_OID_SEG, QO_TERM_PT_EXPR, QO_TERM_RANK, QO_TERM_SEG, QO_TERM_SEGS, QO_TERM_SELECTIVITY, QO_TERM_SUBQUERIES, QO_TERM_TAIL, QO_UNORDERED, and walk_info::term.
Referenced by qo_env_init().
|
static |
Definition at line 8866 of file query_graph.c.
References assert_release, bitset_print(), i, parser_node::info, JOIN_INNER, JOIN_LEFT, JOIN_OUTER, JOIN_RIGHT, pt_value_info::location, parser_node::next, NO_JOIN, parser_node::node_type, NULL, parser, parser_print_tree(), parser_context::print_db_value, pt_print_node_value(), PT_VALUE, QO_ENV_PARSER, QO_NODE_DEP_SET, qo_node_fprint(), qo_seg_fprint(), QO_SEG_NAME, QO_TC_AFTER_JOIN, QO_TC_DEP_JOIN, QO_TC_DEP_LINK, QO_TC_DUMMY_JOIN, QO_TC_DURING_JOIN, QO_TC_JOIN, QO_TC_OTHER, QO_TC_PATH, QO_TC_SARG, QO_TC_TOTALLY_AFTER_JOIN, QO_TERM_CAN_USE_INDEX, QO_TERM_CLASS, QO_TERM_ENV, QO_TERM_HEAD, QO_TERM_INDEX_SEG, QO_TERM_IS_FLAGED, QO_TERM_JOIN_TYPE, QO_TERM_LOCATION, QO_TERM_MERGEABLE_EDGE, QO_TERM_PT_EXPR, QO_TERM_RANK, QO_TERM_SEG, QO_TERM_SELECTIVITY, QO_TERM_TAIL, and pt_statement_info::value.
Referenced by qo_env_dump().
void qo_term_fprint | ( | QO_TERM * | term, |
FILE * | f | ||
) |
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().
|
static |
Definition at line 8767 of file query_graph.c.
References bitset_delset(), free_and_init, parser_free_tree(), QO_ENV_PARSER, QO_TERM_COPY_PT_EXPR, QO_TERM_ENV, QO_TERM_IS_FLAGED, QO_TERM_MULTI_COL_SEGS, QO_TERM_NODES, QO_TERM_PT_EXPR, QO_TERM_SEGS, and QO_TERM_SUBQUERIES.
Referenced by qo_env_free().
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().
Definition at line 758 of file query_graph.c.
References qo_env::bail_out, pt_select_info::from, graph_size_select(), parser_node::info, parser_node::next, qo_env::nnodes, parser_node::node_type, qo_env::nterms, NULL, pt_spec_info::on_cond, OPTIMIZATION_LIMIT, qo_env::parser, parser_walk_tree(), pt_continue_walk(), PT_EXPR, PT_SPEC, PT_VALUE, pt_query_info::q, QO_ENV_PT_TREE, pt_statement_info::query, pt_query_info::select, pt_statement_info::spec, and pt_select_info::where.
Referenced by qo_env_init().
|
static |
Definition at line 2772 of file query_graph.c.
References pt_dot_info::arg2, bitset_cardinality(), count_bits(), pt_spec_info::derived_table, pt_statement_info::dot, walk_info::env, pt_json_table_info::expr, pt_statement_info::expr, parser_node::info, pt_statement_info::json_table_info, parser_node::node_type, NULL, pt_expr_info::op, parser_walk_tree(), PT_CONNECT_BY_ROOT, PT_CONTINUE_WALK, pt_continue_walk(), PT_DOT_, PT_EXPR, pt_is_function_index_expr(), PT_JSON_TABLE, PT_LIST_WALK, PT_NAME, PT_PRIOR, PT_SPEC, PT_STOP_WALK, PT_SYS_CONNECT_BY_PATH, QO_ENV_TMP_BITSET, set_seg_node(), and pt_statement_info::spec.
Referenced by qo_expr_segs().
Definition at line 2836 of file query_graph.c.
References bitset_add(), lookup_node(), lookup_seg(), NULL, and QO_SEG_IDX.
Referenced by qo_add_final_segment(), and set_seg_expr().
double QO_INFINITY = 0.0 |
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().