CUBRID Engine
latest
|
#include <assert.h>
#include "parser.h"
#include "parser_message.h"
#include "parse_tree.h"
#include "optimizer.h"
#include "xasl_generation.h"
#include "virtual_object.h"
#include "system_parameter.h"
#include "semantic_check.h"
#include "execute_schema.h"
#include "view_transform.h"
#include "object_primitive.h"
#include "object_representation.h"
#include "dbtype.h"
Go to the source code of this file.
Classes | |
struct | spec_id_info |
struct | to_dot_info |
struct | pt_name_spec_info |
struct | qo_reset_location_info |
Macros | |
#define | DB_MAX_LITERAL_PRECISION 255 |
Typedefs | |
typedef struct spec_id_info | SPEC_ID_INFO |
typedef struct to_dot_info | TO_DOT_INFO |
typedef struct pt_name_spec_info | PT_NAME_SPEC_INFO |
typedef enum COMP_DBVALUE_WITH_OPTYPE_RESULT | COMP_DBVALUE_WITH_OPTYPE_RESULT |
typedef struct qo_reset_location_info | RESET_LOCATION_INFO |
Enumerations | |
enum | COMP_DBVALUE_WITH_OPTYPE_RESULT { CompResultLess = -2, CompResultLessAdj = -1, CompResultEqual = 0, CompResultGreaterAdj = 1, CompResultGreater = 2, CompResultError = 3 } |
enum | DNF_MERGE_RANGE_RESULT { DNF_RANGE_VALID = 0, DNF_RANGE_ALWAYS_FALSE = 1, DNF_RANGE_ALWAYS_TRUE = 2 } |
#define DB_MAX_LITERAL_PRECISION 255 |
Definition at line 43 of file query_rewrite.c.
Referenced by qo_reduce_equality_terms().
typedef struct pt_name_spec_info PT_NAME_SPEC_INFO |
Definition at line 60 of file query_rewrite.c.
typedef struct qo_reset_location_info RESET_LOCATION_INFO |
Definition at line 87 of file query_rewrite.c.
typedef struct spec_id_info SPEC_ID_INFO |
Definition at line 45 of file query_rewrite.c.
typedef struct to_dot_info TO_DOT_INFO |
Definition at line 53 of file query_rewrite.c.
Enumerator | |
---|---|
CompResultLess | |
CompResultLessAdj | |
CompResultEqual | |
CompResultGreaterAdj | |
CompResultGreater | |
CompResultError |
Definition at line 70 of file query_rewrite.c.
Enumerator | |
---|---|
DNF_RANGE_VALID | |
DNF_RANGE_ALWAYS_FALSE | |
DNF_RANGE_ALWAYS_TRUE |
Definition at line 80 of file query_rewrite.c.
PT_NODE* mq_optimize | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | statement | ||
) |
Definition at line 7850 of file query_rewrite.c.
References NULL, parser_walk_tree(), qo_optimize_queries(), and qo_optimize_queries_post().
Referenced by mq_translate_helper().
|
static |
Definition at line 3059 of file query_rewrite.c.
References pt_expr_info::arg1, pt_expr_info::arg2, assert, pt_statement_info::expr, parser_node::info, NULL, parser_free_tree(), PT_IS_EXPR_NODE_WITH_OPERATOR, and PT_LIKE_ESCAPE.
Referenced by qo_rewrite_one_like_term().
Definition at line 3044 of file query_rewrite.c.
References PT_IS_CHAR_STRING_TYPE, PT_IS_NATIONAL_CHAR_STRING_TYPE, PT_IS_VALUE_NODE, and parser_node::type_enum.
Referenced by qo_rewrite_like_terms(), and qo_rewrite_one_like_term().
|
static |
Definition at line 3405 of file query_rewrite.c.
References pt_expr_info::arg1, pt_expr_info::arg2, assert, parser_node::data_type, pt_statement_info::expr, parser_node::info, pt_expr_info::location, NULL, parser_copy_tree(), parser_free_tree(), prm_get_bool_value(), PRM_ID_NO_BACKSLASH_ESCAPES, PRM_ID_REQUIRE_LIKE_ESCAPE_CHARACTER, pt_expression_2(), PT_INTERNAL_ERROR, PT_IS_NULL_NODE, PT_LIKE_LOWER_BOUND, PT_LIKE_UPPER_BOUND, pt_make_string_value(), and parser_node::type_enum.
Referenced by qo_rewrite_like_for_index_scan().
|
static |
Definition at line 370 of file query_rewrite.c.
References pt_query_info::all_distinct, spec_id_info::appears, pt_dot_info::arg2, pt_spec_info::as_attr_list, pt_query_info::correlation_level, pt_spec_info::derived_table, pt_spec_info::derived_table_type, pt_statement_info::dot, pt_spec_info::entity_name, pt_spec_info::flat_entity_list, pt_select_info::from, spec_id_info::id, pt_spec_info::id, parser_node::info, pt_query_info::is_subquery, pt_select_info::list, pt_spec_info::meta_class, mq_regenerate_if_ambiguous(), mq_set_references(), pt_statement_info::name, parser_node::next, parser_node::node_type, NULL, pt_name_info::original, parser, parser_append_node(), parser_copy_tree(), parser_copy_tree_list(), parser_free_tree(), parser_new_node(), parser_walk_tree(), pt_spec_info::path_conjuncts, pt_spec_info::path_entities, PT_CONTINUE_WALK, PT_DISTINCT, PT_DOT_, PT_INTERNAL_ERROR, PT_IS_SUBQUERY, PT_NAME, PT_PATH_INNER, PT_PATH_OUTER_WEASEL, PT_SELECT, PT_SPEC, pt_query_info::q, qo_check_condition_yields_null(), qo_find_best_path_type(), qo_get_name_by_spec_id(), pt_statement_info::query, pt_spec_info::range_var, pt_spec_info::referenced_attrs, pt_name_info::resolved, pt_query_info::select, pt_statement_info::spec, pt_name_info::spec_id, and pt_select_info::where.
Referenced by qo_optimize_queries().
|
static |
Definition at line 332 of file query_rewrite.c.
References parser_node::node_type, PT_CONTINUE_WALK, PT_SPEC, and PT_STOP_WALK.
Referenced by qo_optimize_queries().
|
static |
Definition at line 5215 of file query_rewrite.c.
References pt_expr_info::arg1, pt_expr_info::arg2, cmp, CompResultError, CompResultGreater, CompResultGreaterAdj, pt_value_info::data_value, pt_statement_info::expr, pt_data_value::i, parser_node::info, pt_expr_info::location, pt_value_info::location, parser_node::next, parser_node::node_type, NULL, pt_expr_info::op, parser_node::or_next, parser_free_tree(), parser_new_node(), pt_between_to_comp_op(), pt_check_path_eq(), PT_EXPR, pt_get_first_arg_ignore_prior(), PT_INTERNAL_ERROR, pt_is_attr(), pt_is_const_not_hostvar, PT_IS_EXPR_WITH_PRIOR_ARG, pt_is_instnum, PT_RANGE, PT_TYPE_LOGICAL, PT_VALUE, pt_value_to_db(), qo_apply_range_intersection_helper(), qo_compare_dbvalue_with_optype(), parser_node::type_enum, and pt_statement_info::value.
Referenced by qo_optimize_queries().
|
static |
Definition at line 4845 of file query_rewrite.c.
References pt_expr_info::arg1, pt_expr_info::arg2, assert, CompResultEqual, CompResultError, CompResultGreater, CompResultGreaterAdj, CompResultLess, CompResultLessAdj, DB_IS_NULL, pt_statement_info::expr, parser_node::info, NULL, pt_expr_info::op, parser_node::or_next, parser_copy_tree(), parser_free_tree(), PT_BETWEEN_EQ_NA, PT_BETWEEN_INF_LE, PT_BETWEEN_INF_LT, pt_between_to_comp_op(), pt_comp_to_between_op(), PT_EQ, PT_EXPR_INFO_CLEAR_FLAG, PT_EXPR_INFO_EMPTY_RANGE, PT_EXPR_INFO_IS_FLAGED, PT_EXPR_INFO_SET_FLAG, PT_GT_INF, pt_is_const_not_hostvar, PT_LT_INF, PT_RANGE_INTERSECTION, pt_value_to_db(), and qo_compare_dbvalue_with_optype().
Referenced by qo_apply_range_intersection().
|
static |
Definition at line 6592 of file query_rewrite.c.
References assert, pt_select_info::connect_by, pt_name_info::db_object, pt_spec_info::entity_name, pt_select_info::from, parser_node::info, pt_select_info::list, pt_statement_info::name, parser_node::next, parser_node::node_type, NULL, pt_spec_info::only_all, OPTIMIZATION_ENABLED, PT_METHOD_CALL, PT_NAME, PT_ONLY, PT_SELECT, PT_SPEC, pt_query_info::q, qo_get_optimization_param(), QO_PARAM_LEVEL, pt_statement_info::query, pt_query_info::select, sm_is_partitioned_class(), pt_statement_info::spec, and pt_select_info::where.
Referenced by qo_optimize_queries().
|
static |
Definition at line 288 of file query_rewrite.c.
References semantic_chk_info::donot_fold, parser_context::error_msgs, NULL, parser_copy_tree_list(), parser_free_tree(), parser_walk_tree(), pt_false_search_condition(), pt_has_error, pt_semantic_type(), qo_replace_spec_name_with_null(), and semantic_chk_info::top_node.
Referenced by qo_analyze_path_join().
|
static |
Definition at line 3624 of file query_rewrite.c.
References NULL, PT_IS_DOT_NODE, PT_IS_NAME_NODE, PT_IS_QUERY, and PT_STOP_WALK.
Referenced by qo_rewrite_like_terms().
PT_NODE* qo_check_nullable_expr | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | node, | ||
void * | arg, | ||
int * | continue_walk | ||
) |
Definition at line 171 of file query_rewrite.c.
References pt_statement_info::expr, parser_node::info, parser_node::node_type, pt_expr_info::op, PT_CASE, PT_COALESCE, PT_CONCAT_WS, PT_DECODE, PT_EXPR, PT_IF, PT_IFNULL, PT_IS_NULL, PT_ISNULL, PT_NVL, and PT_NVL2.
Referenced by mq_copypush_sargable_terms_helper().
PT_NODE* qo_check_nullable_expr_with_spec | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | node, | ||
void * | arg, | ||
int * | continue_walk | ||
) |
Definition at line 210 of file query_rewrite.c.
References spec_id_info::appears, pt_statement_info::expr, parser_node::info, parser_node::node_type, NULL, spec_id_info::nullable, pt_expr_info::op, parser_walk_tree(), PT_CASE, PT_COALESCE, PT_CONCAT_WS, PT_DECODE, PT_EXPR, PT_IF, PT_IFNULL, PT_IS_NULL, PT_ISNULL, PT_NVL, PT_NVL2, PT_STOP_WALK, and qo_get_name_by_spec_id().
Referenced by qo_rewrite_outerjoin().
|
static |
Definition at line 1102 of file query_rewrite.c.
References pt_expr_info::arg1, pt_name_spec_info::c_name, pt_name_spec_info::c_name_num, CAST_POINTER_TO_NODE, pt_data_type_info::collation_id, pt_statement_info::data_type, parser_node::data_type, pt_statement_info::expr, parser_node::info, LANG_SYS_COLLATION, pt_name_info::location, pt_statement_info::name, parser_node::next, parser_node::node_type, NULL, pt_expr_info::op, parser_append_node(), PT_CAST, PT_CONTINUE_WALK, PT_CURRENT_VALUE, PT_DIFFERENCE, PT_DOT_, PT_EXPR, PT_EXPR_INFO_CAST_COLL_MODIFIER, PT_EXPR_INFO_IS_FLAGED, PT_GET_COLLATION_MODIFIER, pt_get_end_path_node(), PT_HAS_COLLATION, PT_INTERSECTION, PT_LIST_WALK, PT_NAME, pt_name_equal(), PT_NEXT_VALUE, pt_point(), PT_SELECT, PT_STOP_WALK, PT_UNION, pt_name_spec_info::query_serial_num, pt_name_spec_info::s_point_list, pt_name_info::spec_id, and parser_node::type_enum.
Referenced by qo_reduce_equality_terms().
|
static |
Definition at line 1226 of file query_rewrite.c.
References PT_CONTINUE_WALK, PT_STOP_WALK, and pt_name_spec_info::query_serial_num.
Referenced by qo_reduce_equality_terms().
|
static |
Definition at line 4144 of file query_rewrite.c.
References CompResultEqual, CompResultError, CompResultGreater, CompResultGreaterAdj, CompResultLess, CompResultLessAdj, DB_EQ, DB_GT, DB_LT, PT_EQ, PT_GE, PT_GT, PT_GT_INF, PT_LE, PT_LT, PT_LT_INF, rc, and tp_value_compare().
Referenced by qo_apply_range_intersection(), qo_apply_range_intersection_helper(), and qo_merge_range_helper().
|
static |
Definition at line 791 of file query_rewrite.c.
References pt_expr_info::arg1, pt_expr_info::arg2, pt_function_info::arg_list, parser_node::data_type, pt_statement_info::expr, F_SEQUENCE, pt_statement_info::function, pt_function_info::function_type, parser_node::info, pt_name_info::meta_class, pt_statement_info::name, parser_node::node_type, NULL, pt_expr_info::op, parser_copy_tree(), parser_copy_tree_list(), parser_new_node(), PT_EQ, PT_EXPR, PT_FUNCTION, PT_IS_CONST_INPUT_HOSTVAR, PT_IS_FUNCTION, PT_IS_IN, PT_IS_OID_NAME, PT_NAME, PT_OID_ATTR, PT_TYPE_SEQUENCE, qo_is_oid_const(), and parser_node::type_enum.
Referenced by qo_make_new_derived_tblspec().
|
static |
Definition at line 2234 of file query_rewrite.c.
References pt_expr_info::arg1, pt_expr_info::arg2, assert, pt_statement_info::expr, parser_node::info, parser_node::line_number, parser_node::next, parser_node::node_type, NULL, pt_expr_info::op, parser_node::or_next, parser_append_node(), parser_copy_tree(), parser_free_tree(), PT_AND, PT_BETWEEN, pt_converse_op(), PT_EXPR, PT_GE, pt_is_attr(), pt_is_const, pt_is_expr_node, PT_LE, pt_name_equal(), PT_OR, pt_point(), PT_PRIOR, and PT_UNARY_MINUS.
Referenced by qo_optimize_queries().
|
static |
Definition at line 607 of file query_rewrite.c.
References pt_dot_info::arg1, pt_dot_info::arg2, pt_spec_info::as_attr_list, pt_dot_info::coll_modifier, pt_name_info::coll_modifier, parser_node::data_type, pt_statement_info::dot, pt_spec_info::id, parser_node::info, pt_name_info::meta_class, pt_statement_info::name, to_dot_info::new_spec, parser_node::next, parser_node::node_type, NULL, to_dot_info::old_spec, pt_name_info::original, parser_copy_tree(), PT_CLASS, PT_DOT_, pt_init_node(), PT_LIST_WALK, pt_name(), PT_NAME, PT_NORMAL, PT_OID_ATTR, PT_SPEC, pt_spec_info::range_var, pt_name_info::resolved, pt_statement_info::spec, pt_name_info::spec_id, pt_dot_info::tag_click_counter, pt_name_info::tag_click_counter, and parser_node::type_enum.
Referenced by qo_rewrite_oid_equality().
|
static |
Definition at line 580 of file query_rewrite.c.
References pt_spec_info::id, parser_node::info, parser_node::node_type, to_dot_info::old_spec, PT_CONTINUE_WALK, PT_LIST_WALK, PT_SPEC, and pt_statement_info::spec.
Referenced by qo_rewrite_oid_equality().
|
static |
Definition at line 4703 of file query_rewrite.c.
References pt_expr_info::arg1, pt_expr_info::arg2, pt_function_info::arg_list, db_make_int(), DNF_RANGE_ALWAYS_FALSE, DNF_RANGE_ALWAYS_TRUE, pt_statement_info::expr, pt_statement_info::function, parser_node::info, parser_node::next, parser_node::node_type, NULL, pt_expr_info::op, parser_node::or_next, parser_free_tree(), PT_BETWEEN, pt_dbval_to_value(), PT_EQ, PT_EXPR, PT_GE, pt_get_first_arg_ignore_prior(), PT_GT, pt_is_attr(), pt_is_const, pt_is_function_index_expression(), PT_IS_IN, pt_is_instnum, pt_is_multi_col_term, PT_IS_NOT_NULL, PT_IS_SET_TYPE, PT_LE, PT_LT, PT_NE, PT_RANGE, qo_convert_to_range_helper(), and qo_merge_range_helper().
Referenced by qo_optimize_queries().
|
static |
Definition at line 3860 of file query_rewrite.c.
References pt_expr_info::arg1, pt_expr_info::arg2, assert, pt_statement_info::expr, parser_node::info, pt_expr_info::location, parser_node::next, parser_node::node_type, NULL, pt_expr_info::op, parser_node::or_next, parser_free_tree(), parser_new_node(), PT_BETWEEN, PT_BETWEEN_AND, PT_BETWEEN_EQ_NA, PT_BETWEEN_GE_INF, PT_BETWEEN_GE_LE, PT_BETWEEN_GT_INF, PT_BETWEEN_INF_LE, PT_BETWEEN_INF_LT, pt_check_path_eq(), PT_EQ, PT_EXPR, PT_GE, pt_get_first_arg_ignore_prior(), PT_GT, pt_is_attr(), PT_IS_COLLECTION_TYPE, PT_IS_EXPR_NODE, PT_IS_EXPR_WITH_PRIOR_ARG, PT_IS_IN, pt_is_instnum, PT_IS_QUERY_NODE_TYPE, PT_LE, PT_LT, PT_RANGE, PT_TYPE_LOGICAL, qo_set_value_to_range_list(), and parser_node::type_enum.
Referenced by qo_convert_to_range().
void qo_do_auto_parameterize | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | where | ||
) |
Definition at line 6494 of file query_rewrite.c.
References pt_expr_info::arg1, pt_expr_info::arg2, assert, pt_statement_info::expr, parser_node::info, parser_node::next, parser_node::node_type, pt_expr_info::op, parser_node::or_next, PT_ASSIGN, PT_BETWEEN, PT_EQ, PT_EXPR, PT_EXPR_INFO_DO_NOT_AUTOPARAM, PT_EXPR_INFO_IS_FLAGED, PT_GE, pt_get_first_arg_ignore_prior(), PT_GT, pt_is_attr(), PT_IS_COLLECTION_TYPE, pt_is_const_not_hostvar, pt_is_instnum, PT_IS_NULL_NODE, pt_is_orderbynum, PT_LE, PT_LIKE, PT_LT, PT_RANGE, pt_rewrite_to_auto_param(), and parser_node::type_enum.
Referenced by do_execute_update(), mq_auto_param_merge_clauses(), and qo_optimize_queries().
|
static |
Definition at line 7620 of file query_rewrite.c.
References pt_statement_info::delete_, pt_name_info::indx_key_limit, parser_node::info, pt_statement_info::name, parser_node::next, parser_node::node_type, NULL, PT_DELETE, pt_is_const_not_hostvar, PT_IS_NULL_NODE, pt_rewrite_to_auto_param(), PT_SELECT, PT_UPDATE, pt_query_info::q, pt_statement_info::query, pt_query_info::select, pt_statement_info::update, pt_delete_info::using_index, pt_select_info::using_index, and pt_update_info::using_index.
Referenced by qo_optimize_queries().
|
static |
Definition at line 7461 of file query_rewrite.c.
References pt_statement_info::delete_, parser_node::info, pt_delete_info::limit, pt_query_info::limit, pt_update_info::limit, parser_node::next, parser_node::node_type, NULL, PT_DELETE, PT_DIFFERENCE, PT_INTERSECTION, pt_is_const_not_hostvar, PT_IS_EXPR_NODE, PT_IS_NULL_NODE, pt_rewrite_to_auto_param(), PT_SELECT, PT_UNION, PT_UPDATE, pt_statement_info::query, and pt_statement_info::update.
Referenced by qo_optimize_queries().
|
static |
Definition at line 113 of file query_rewrite.c.
References parser_node::info, pt_spec_info::meta_class, parser_node::next, pt_spec_info::path_entities, PT_PATH_INNER, PT_PATH_OUTER, PT_PATH_OUTER_WEASEL, and pt_statement_info::spec.
Referenced by qo_analyze_path_join().
|
static |
Definition at line 3092 of file query_rewrite.c.
References assert, parser_node::data_type, pt_value_info::data_value, db_get_like_optimization_bounds(), db_get_string(), db_get_string_codeset(), db_get_string_collation(), db_get_string_size(), db_make_null(), db_string_put_cs_and_collation(), pt_value_info::db_value, db_value_clear(), pt_value_info::db_value_is_initialized, parser_node::info, NO_ERROR, NULL, parser_copy_tree(), parser_free_tree(), parser_new_node(), pt_append_bytes(), PT_HAS_COLLATION, PT_INTERNAL_ERROR, PT_NODE_PRINT_VALUE_TO_TEXT, PT_VALUE, pt_value_to_db(), pt_data_value::str, parser_node::type_enum, and pt_statement_info::value.
Referenced by qo_rewrite_one_like_term().
|
static |
Definition at line 2644 of file query_rewrite.c.
References pt_expr_info::arg1, pt_expr_info::arg2, db_make_int(), pt_statement_info::expr, parser_node::info, pt_expr_info::location, pt_value_info::location, parser_node::next, parser_node::node_type, NULL, pt_expr_info::op, parser_node::or_next, parser_free_tree(), pr_clear_value(), pt_check_path_eq(), pt_dbval_to_value(), PT_EXPR, pt_get_first_arg_ignore_prior(), pt_is_attr(), PT_IS_EXPR_WITH_PRIOR_ARG, PT_IS_NOT_NULL, PT_IS_NULL, PT_IS_NULL_NODE, PT_NULLSAFE_EQ, parser_node::type_enum, and pt_statement_info::value.
Referenced by qo_optimize_queries().
|
static |
Definition at line 149 of file query_rewrite.c.
References spec_id_info::appears, spec_id_info::id, parser_node::info, pt_statement_info::name, parser_node::node_type, PT_NAME, PT_STOP_WALK, and pt_name_info::spec_id.
Referenced by qo_analyze_path_join(), qo_check_nullable_expr_with_spec(), and qo_rewrite_outerjoin().
Definition at line 686 of file query_rewrite.c.
References pt_expr_info::arg1, pt_expr_info::arg2, pt_statement_info::expr, parser_node::info, pt_name_info::meta_class, pt_statement_info::name, parser_node::next, parser_node::node_type, NULL, pt_expr_info::op, parser_node::or_next, PT_EQ, PT_EXPR, PT_IS_IN, PT_NAME, and PT_OID_ATTR.
Referenced by qo_optimize_queries().
|
static |
Definition at line 1246 of file query_rewrite.c.
References pt_expr_info::arg1, pt_statement_info::expr, parser_node::info, parser_node::node_type, pt_expr_info::op, PT_CAST, PT_EXPR, and pt_is_attr().
Referenced by qo_reduce_equality_terms().
|
static |
Definition at line 716 of file query_rewrite.c.
References pt_function_info::arg_list, pt_query_info::correlation_level, F_MULTISET, F_SEQUENCE, F_SET, pt_statement_info::function, pt_function_info::function_type, parser_node::info, pt_name_info::meta_class, pt_statement_info::name, parser_node::next, parser_node::node_type, NULL, p, PT_DIFFERENCE, PT_FUNCTION, PT_HOST_VAR, PT_INTERSECTION, PT_NAME, PT_PARAMETER, PT_SELECT, PT_UNION, PT_VALUE, and pt_statement_info::query.
Referenced by qo_construct_new_set(), and qo_rewrite_oid_equality().
|
static |
Definition at line 6462 of file query_rewrite.c.
References parser_node::info, pt_name_info::meta_class, pt_statement_info::name, parser_node::node_type, NULL, pt_name_info::partition, pt_get_end_path_node(), PT_NAME, PT_NORMAL, and pt_name_info::spec_id.
|
static |
Definition at line 1265 of file query_rewrite.c.
References pt_expr_info::arg1, pt_statement_info::expr, parser_node::info, parser_node::node_type, pt_expr_info::op, PT_CAST, PT_EXPR, PT_IS_CONST_INPUT_HOSTVAR, and PT_TO_ENUMERATION_VALUE.
Referenced by qo_reduce_equality_terms().
|
static |
Definition at line 870 of file query_rewrite.c.
References pt_spec_info::as_attr_list, parser_node::data_type, pt_spec_info::derived_table, pt_spec_info::derived_table_type, pt_spec_info::id, parser_node::info, pt_name_info::meta_class, mq_generate_name(), pt_statement_info::name, parser_node::node_type, NULL, pt_spec_info::only_all, parser_copy_tree(), parser_free_node(), parser_new_node(), pt_spec_info::path_conjuncts, pt_spec_info::path_entities, PT_EQ, PT_EXPR, PT_IS_SET_EXPR, pt_name(), PT_NORMAL, PT_OID_ATTR, PT_ONLY, PT_SPEC, PT_TYPE_LOGICAL, PT_TYPE_OBJECT, qo_construct_new_set(), pt_spec_info::range_var, pt_statement_info::spec, pt_name_info::spec_id, and parser_node::type_enum.
Referenced by qo_rewrite_oid_equality().
|
static |
Definition at line 4280 of file query_rewrite.c.
References pt_expr_info::arg1, pt_expr_info::arg2, CompResultEqual, CompResultError, CompResultGreater, CompResultGreaterAdj, CompResultLess, CompResultLessAdj, DNF_RANGE_ALWAYS_FALSE, DNF_RANGE_ALWAYS_TRUE, DNF_RANGE_VALID, pt_statement_info::expr, parser_node::info, parser_node::next, NULL, pt_expr_info::op, parser_node::or_next, parser_copy_tree(), parser_free_tree(), pr_copy_value(), pr_free_value(), PT_BETWEEN_EQ_NA, PT_BETWEEN_GE_LE, PT_BETWEEN_INF_LE, PT_BETWEEN_INF_LT, pt_between_to_comp_op(), pt_comp_to_between_op(), PT_EQ, PT_EXPR_INFO_CLEAR_FLAG, PT_EXPR_INFO_EMPTY_RANGE, PT_GE, PT_GT_INF, pt_is_const_not_hostvar, PT_LE, PT_LT_INF, PT_RANGE_MERGE, pt_value_to_db(), qo_compare_dbvalue_with_optype(), and qo_range_optype_rank().
Referenced by qo_convert_to_range().
|
static |
Definition at line 6673 of file query_rewrite.c.
References parser_node::info, parser_node::next, parser_node::node_type, NULL, pt_spec_info::on_cond, PT_SPEC, and pt_statement_info::spec.
Referenced by qo_optimize_queries().
|
static |
Definition at line 6715 of file query_rewrite.c.
References pt_select_info::after_cb_filter, pt_expr_info::arg1, pt_union_info::arg1, pt_expr_info::arg2, pt_union_info::arg2, pt_function_info::arg_list, assert, assert_release, pt_update_info::assignment, pt_agg_find_info::base_count, parser_node::cannot_prepare, pt_select_info::connect_by, pt_merge_info::del_search_cond, pt_statement_info::delete_, pt_spec_info::derived_table, pt_spec_info::derived_table_type, pt_statement_info::expr, F_TABLE_MULTISET, F_TABLE_SEQUENCE, F_TABLE_SET, pt_query_info::flag, parser_node::flag, pt_select_info::from, pt_statement_info::function, pt_function_info::function_type, pt_select_info::group_by, pt_non_groupby_col_info::groupby, pt_non_groupby_col_info::has_non_groupby_col, pt_select_info::having, parser_node::info, pt_merge_info::insert, pt_query_info::is_subquery, pt_query_info::limit, pt_statement_info::merge, mq_rewrite_query_as_derived(), parser_node::next, NO_ERROR, parser_node::node_type, NULL, pt_expr_info::op, OPTIMIZATION_ENABLED, pt_query_info::order_by, pt_query_info::orderby_for, pt_update_info::orderby_for, pt_agg_find_info::out_of_context_count, p, parser_append_node(), parser_walk_tree(), prm_get_bool_value(), prm_get_integer_value(), PRM_ID_HOSTVAR_LATE_BINDING, PRM_ID_XASL_CACHE_MAX_ENTRIES, PT_ASSIGN, pt_cnf(), PT_DELETE, PT_DIFFERENCE, PT_EQ, PT_EQ_ALL, PT_EQ_SOME, PT_EXPR, pt_find_aggregate_functions_post(), pt_find_aggregate_functions_pre(), PT_FUNCTION, PT_GE_ALL, PT_GE_SOME, pt_get_subquery_of_insert_select(), PT_GT_ALL, PT_GT_SOME, pt_has_non_groupby_column_node(), PT_INSERT, PT_INST_NUM, PT_INTERSECTION, pt_is_const_not_hostvar, PT_IS_IN, PT_IS_NOT_IN, pt_is_pseudocolumn_node(), PT_IS_QUERY_NODE_TYPE, PT_IS_SELECT, PT_IS_SHOWSTMT, PT_IS_SUBQUERY, PT_LE_ALL, PT_LE_SOME, pt_limit_to_numbering_expr(), PT_LT_ALL, PT_LT_SOME, PT_MERGE, PT_NE, PT_NE_ALL, PT_NE_SOME, PT_NODE_MOVE_NUMBER_OUTERLINK, PT_NULLSAFE_EQ, pt_pointer_stack_pop(), pt_pointer_stack_push(), pt_rewrite_to_auto_param(), PT_SELECT, PT_SHOWSTMT, pt_split_join_preds(), PT_UNION, PT_UPDATE, pt_query_info::q, qo_analyze_path_join(), qo_analyze_path_join_pre(), qo_apply_range_intersection(), qo_can_generate_single_table_connect_by(), qo_converse_sarg_terms(), qo_convert_to_range(), qo_do_auto_parameterize(), qo_do_auto_parameterize_keylimit_clause(), qo_do_auto_parameterize_limit_clause(), qo_fold_is_and_not_null(), qo_get_next_oid_pred(), qo_get_optimization_param(), qo_move_on_clause_of_explicit_join_to_where_clause(), QO_PARAM_LEVEL, qo_reduce_comp_pair_terms(), qo_reduce_equality_terms(), qo_reduce_order_by(), qo_rewrite_hidden_col_as_derived(), qo_rewrite_index_hints(), qo_rewrite_innerjoin(), qo_rewrite_like_terms(), qo_rewrite_oid_equality(), qo_rewrite_outerjoin(), qo_rewrite_subqueries(), pt_statement_info::query, pt_query_info::rewrite_limit, pt_delete_info::search_cond, pt_update_info::search_cond, pt_merge_info::search_cond, pt_query_info::select, pt_agg_find_info::select_stack, pt_showstmt_info::show_args, pt_statement_info::showstmt, pt_select_info::single_table_opt, pt_query_info::single_tuple, pt_delete_info::spec, pt_update_info::spec, pt_statement_info::spec, pt_select_info::start_with, pt_agg_find_info::stop_on_subquery, pt_query_info::union_, pt_merge_info::update, pt_statement_info::update, pt_select_info::where, and parser_node::with_rollup.
Referenced by mq_optimize().
|
static |
Definition at line 7700 of file query_rewrite.c.
References assert, pt_statement_info::delete_, pt_statement_info::expr, pt_select_info::from, parser_node::info, pt_spec_info::join_type, pt_spec_info::location, pt_expr_info::location, pt_value_info::location, parser_node::next, parser_node::node_type, NULL, pt_spec_info::on_cond, parser_free_tree(), PT_DELETE, PT_ERRORf, PT_EXPR, PT_EXPR_INFO_COPYPUSH, PT_EXPR_INFO_IS_FLAGED, PT_JOIN_INNER, PT_JOIN_LEFT_OUTER, PT_JOIN_RIGHT_OUTER, PT_SELECT, pt_short_print(), PT_UPDATE, PT_VALUE, pt_query_info::q, pt_statement_info::query, pt_delete_info::search_cond, pt_update_info::search_cond, pt_query_info::select, pt_delete_info::spec, pt_update_info::spec, pt_statement_info::spec, pt_statement_info::update, pt_statement_info::value, and pt_select_info::where.
Referenced by mq_optimize().
|
static |
|
static |
Definition at line 2869 of file query_rewrite.c.
References pt_expr_info::arg1, pt_expr_info::arg2, cmp, pt_value_info::data_value, DB_EQ, DB_GT, db_value_compare(), pt_statement_info::expr, pt_data_value::i, parser_node::info, pt_expr_info::location, pt_value_info::location, parser_node::next, parser_node::node_type, NULL, pt_expr_info::op, parser_node::or_next, parser_free_tree(), parser_new_node(), PT_BETWEEN, PT_BETWEEN_AND, PT_BETWEEN_GE_LE, PT_BETWEEN_GE_LT, PT_BETWEEN_GT_LE, PT_BETWEEN_GT_LT, pt_comp_to_between_op(), PT_EXPR, PT_GE, PT_GT, PT_INTERNAL_ERROR, pt_is_attr(), pt_is_const_not_hostvar, PT_IS_EXPR_WITH_PRIOR_ARG, PT_LE, PT_LT, PT_REDUCE_COMP_PAIR_TERMS, PT_TYPE_LOGICAL, PT_VALUE, pt_value_to_db(), qo_search_comp_pair_term(), parser_node::type_enum, and pt_statement_info::value.
Referenced by qo_optimize_queries().
|
static |
Definition at line 1295 of file query_rewrite.c.
References pt_expr_info::arg1, pt_expr_info::arg2, pt_spec_info::as_attr_list, pt_name_spec_info::c_name, pt_name_spec_info::c_name_num, CAST_POINTER_TO_NODE, pt_statement_info::data_type, parser_node::data_type, db_make_null(), DB_MAX_LITERAL_PRECISION, pt_data_type_info::dec_precision, pt_statement_info::delete_, pt_spec_info::derived_table, pt_spec_info::derived_table_type, DOMAIN_COMPATIBLE, parser_node::etc, pt_statement_info::expr, pt_select_info::from, i, pt_spec_info::id, parser_node::info, pt_select_info::list, pt_name_info::location, MSGCAT_SEMANTIC_CANT_COERCE_TO, MSGCAT_SEMANTIC_OUT_OF_MEMORY, MSGCAT_SET_PARSER_SEMANTIC, pt_statement_info::name, parser_node::next, parser_node::node_type, NULL, pt_expr_info::op, parser_node::or_next, parser_append_node(), parser_copy_tree(), parser_copy_tree_list(), parser_free_tree(), parser_walk_tree(), pr_clear_value(), tp_domain::precision, pt_data_type_info::precision, PT_BETWEEN_EQ_NA, pt_dbval_to_value(), PT_DELETE, PT_EQ, PT_ERRORm, PT_ERRORmf2, PT_EXPR, PT_EXPR_INFO_DO_NOT_AUTOPARAM, PT_EXPR_INFO_SET_FLAG, PT_EXPR_INFO_TRANSITIVE, pt_get_end_path_node(), pt_get_select_list(), pt_is_attr(), PT_IS_CONST, PT_IS_CONST_NOT_HOSTVAR, pt_is_function_index_expression(), PT_IS_PARAMETERIZED_TYPE, PT_IS_SUBQUERY, pt_is_symmetric_op(), PT_IS_VALUE_QUERY, pt_lambda_with_arg(), pt_length_of_list(), pt_name_equal(), pt_node_to_db_domain(), PT_PRIOR, PT_RANGE, PT_SELECT, pt_short_print(), pt_show_type_enum(), PT_TYPE_ENUMERATION, PT_UPDATE, pt_value_to_db(), pt_wrap_with_cast_op(), pt_query_info::q, qo_collect_name_spec(), qo_collect_name_spec_post(), qo_is_cast_attr(), qo_is_reduceable_const(), pt_statement_info::query, pt_name_spec_info::query_serial_num, pt_name_spec_info::s_point_list, pt_query_info::select, pt_delete_info::spec, pt_update_info::spec, pt_statement_info::spec, pt_name_info::spec_id, tp_domain_cache(), TP_FLOATING_PRECISION_VALUE, tp_value_cast_force(), parser_node::type_enum, and pt_statement_info::update.
Referenced by qo_optimize_queries().
|
static |
Definition at line 1882 of file query_rewrite.c.
References pt_query_info::all_distinct, pt_function_info::all_or_distinct, ARG_FILE_LINE, pt_function_info::arg_list, pt_sort_spec_info::asc_or_desc, pt_select_info::connect_by, pt_value_info::data_value, ER_ERROR_SEVERITY, ER_GENERIC_ERROR, er_set(), error(), pt_sort_spec_info::expr, pt_statement_info::expr, pt_statement_info::function, pt_function_info::function_type, pt_select_info::group_by, pt_select_info::having, i, pt_data_value::i, parser_node::info, pt_select_info::list, MSGCAT_SEMANTIC_OUT_OF_MEMORY, MSGCAT_SEMANTIC_SORT_DIR_CONFLICT, MSGCAT_SET_PARSER_SEMANTIC, parser_node::next, NO_ERROR, parser_node::node_type, NULL, pt_expr_info::op, pt_query_info::order_by, pt_query_info::orderby_for, parser_append_node(), parser_free_tree(), parser_new_node(), parser_walk_tree(), pt_sort_spec_info::pos_descr, qfile_tuple_value_position::pos_no, PT_ALL, pt_check_orderbynum_post(), pt_check_orderbynum_pre(), PT_DISTINCT, PT_ERRORm, PT_ERRORmf, PT_EXPR, PT_EXPR_INFO_INSTNUM_C, PT_EXPR_INFO_ORDERBYNUM_C, PT_EXPR_INFO_SET_FLAG, pt_find_order_value_in_list(), PT_FUNCTION, pt_get_end_path_node(), PT_GROUPBY_NUM, PT_INST_NUM, pt_lambda_with_arg(), PT_NAME, pt_name_equal(), PT_NAME_INFO_CONSTANT, PT_NAME_INFO_IS_FLAGED, PT_ORDERBY_NUM, pt_remove_from_list(), PT_SELECT, pt_short_print(), pt_sort_spec_cover(), pt_to_null_ordering(), PT_TYPE_BIGINT, PT_TYPE_INTEGER, PT_VALUE, pt_value_to_db(), pt_query_info::q, qo_reduce_order_by_for(), pt_statement_info::query, pt_query_info::select, pt_statement_info::sort_spec, parser_node::type_enum, pt_statement_info::value, and pt_select_info::where.
Referenced by qo_optimize_queries().
|
static |
Definition at line 1798 of file query_rewrite.c.
References pt_function_info::all_or_distinct, ARG_FILE_LINE, pt_function_info::arg_list, ER_ERROR_SEVERITY, ER_GENERIC_ERROR, er_set(), error(), pt_statement_info::expr, pt_statement_info::function, pt_function_info::function_type, pt_select_info::having, parser_node::info, pt_select_info::list, MSGCAT_SEMANTIC_OUT_OF_MEMORY, MSGCAT_SET_PARSER_SEMANTIC, NO_ERROR, parser_node::node_type, NULL, pt_expr_info::op, pt_query_info::orderby_for, parser_append_node(), parser_free_tree(), parser_new_node(), PT_ALL, PT_ERRORm, PT_EXPR, PT_EXPR_INFO_ORDERBYNUM_C, PT_EXPR_INFO_SET_FLAG, PT_FUNCTION, PT_GROUPBY_NUM, pt_lambda_with_arg(), PT_ORDERBY_NUM, PT_SELECT, PT_TYPE_BIGINT, pt_query_info::q, pt_statement_info::query, pt_query_info::select, and parser_node::type_enum.
Referenced by qo_reduce_order_by().
|
static |
Definition at line 254 of file query_rewrite.c.
References pt_expr_info::arg1, pt_dot_info::arg2, pt_value_info::data_value, pt_statement_info::dot, pt_statement_info::expr, pt_spec_info::id, parser_node::info, pt_statement_info::name, parser_node::node_type, NULL, parser_free_tree(), PT_DOT_, PT_NAME, PT_TYPE_NULL, PT_VALUE, pt_data_value::set, pt_statement_info::spec, pt_name_info::spec_id, parser_node::type_enum, and pt_statement_info::value.
Referenced by qo_check_condition_yields_null().
|
static |
Definition at line 5579 of file query_rewrite.c.
References qo_reset_location_info::end, pt_statement_info::expr, parser_node::info, pt_expr_info::location, pt_name_info::location, pt_value_info::location, pt_statement_info::name, parser_node::node_type, PT_EXPR, PT_NAME, PT_VALUE, qo_reset_location_info::start, and pt_statement_info::value.
Referenced by qo_rewrite_innerjoin(), and qo_rewrite_outerjoin().
|
static |
Definition at line 5717 of file query_rewrite.c.
References pt_union_info::arg1, pt_union_info::arg2, pt_select_info::connect_by, pt_statement_info::expr, F_TABLE_SEQUENCE, parser_node::flag, pt_select_info::flavor, pt_statement_info::function, pt_function_info::function_type, parser_node::info, parser_node::is_hidden_column, pt_query_info::is_subquery, pt_select_info::list, mq_rewrite_query_as_derived(), parser_node::next, parser_node::node_type, NULL, pt_expr_info::op, pt_query_info::order_by, pt_query_info::orderby_for, parser_free_tree(), PT_DIFFERENCE, PT_EXPR, PT_FUNCTION, PT_INTERSECTION, PT_IS_SUBQUERY, PT_NODE_MOVE_NUMBER_OUTERLINK, PT_ORDERBY_NUM, PT_SELECT, PT_UNION, pt_query_info::q, pt_statement_info::query, pt_query_info::select, and pt_query_info::union_.
Referenced by qo_optimize_queries().
|
static |
Definition at line 5859 of file query_rewrite.c.
References assert, pt_statement_info::delete_, parser_node::etc, parser_node::info, intl_identifier_casecmp(), parser_node::next, parser_node::node_type, NULL, parser_free_node(), parser_free_tree(), PT_DELETE, PT_IDX_HINT_ALL_EXCEPT, PT_IDX_HINT_CLASS_NONE, PT_IDX_HINT_FORCE, PT_IDX_HINT_IGNORE, PT_IDX_HINT_NONE, PT_IDX_HINT_ORDER, PT_IDX_HINT_USE, PT_SELECT, PT_UPDATE, pt_query_info::q, pt_statement_info::query, pt_query_info::select, pt_statement_info::update, pt_delete_info::using_index, pt_select_info::using_index, and pt_update_info::using_index.
Referenced by qo_optimize_queries().
|
static |
Definition at line 5615 of file query_rewrite.c.
References pt_select_info::connect_by, pt_spec_info::derived_table, pt_spec_info::derived_table_type, qo_reset_location_info::end, qo_reset_location_info::found_outerjoin, pt_select_info::from, pt_select_info::hint, parser_node::info, pt_spec_info::join_type, pt_spec_info::location, parser_node::next, parser_node::node_type, NULL, parser_walk_tree(), PT_HINT_ORDERED, PT_IS_SUBQUERY, PT_JOIN_INNER, PT_JOIN_LEFT_OUTER, PT_JOIN_NONE, PT_JOIN_RIGHT_OUTER, PT_LIST_WALK, PT_SELECT, pt_query_info::q, qo_reset_location(), pt_statement_info::query, pt_query_info::select, pt_statement_info::spec, qo_reset_location_info::start, qo_reset_location_info::start_spec, and pt_select_info::where.
Referenced by qo_optimize_queries().
|
static |
Definition at line 3495 of file query_rewrite.c.
References pt_expr_info::arg1, pt_expr_info::arg2, er_clear(), er_errid(), pt_statement_info::expr, parser_node::info, pt_expr_info::location, parser_node::next, NO_ERROR, NULL, parser_copy_tree(), parser_copy_tree_list(), parser_free_tree(), PT_BETWEEN, PT_BETWEEN_GE_LT, pt_expression_1(), pt_expression_2(), pt_has_error, PT_INTERNAL_ERROR, pt_reset_error(), pt_semantic_type(), PT_TYPE_LOGICAL, qo_allocate_like_bound_for_index_scan(), and parser_node::type_enum.
Referenced by qo_rewrite_like_terms().
|
static |
Definition at line 3650 of file query_rewrite.c.
References pt_expr_info::arg1, pt_expr_info::arg2, assert, parser_node::expected_domain, pt_statement_info::expr, parser_node::info, parser_node::next, NULL, parser_node::or_next, parser_walk_tree(), pt_db_to_type_enum(), pt_get_first_arg_ignore_prior(), pt_is_ascii_string_value_node(), pt_is_attr(), PT_IS_EXPR_NODE_WITH_OPERATOR, pt_is_function_index_expr(), PT_IS_NATIONAL_CHAR_STRING_TYPE, PT_IS_NULL_NODE, pt_is_pseudo_const(), PT_LIKE, PT_LIKE_ESCAPE, PT_TYPE_MAYBE, PT_TYPE_NONE, qo_check_like_expression_pre(), qo_rewrite_like_for_index_scan(), qo_rewrite_one_like_term(), TP_DOMAIN_TYPE, and parser_node::type_enum.
Referenced by qo_optimize_queries().
|
static |
Definition at line 984 of file query_rewrite.c.
References pt_expr_info::arg1, pt_expr_info::arg2, pt_statement_info::expr, pt_select_info::from, pt_spec_info::id, parser_node::info, pt_spec_info::meta_class, pt_name_info::meta_class, mq_reset_ids_in_statement(), pt_statement_info::name, to_dot_info::new_spec, parser_node::next, parser_node::node_type, NULL, to_dot_info::old_spec, pt_expr_info::op, parser_walk_tree(), PT_EQ, PT_EXPR, PT_IS_IN, PT_META_CLASS, PT_NAME, PT_OID_ATTR, PT_SPEC, PT_TYPE_LOGICAL, pt_query_info::q, qo_convert_attref_to_dotexpr(), qo_convert_attref_to_dotexpr_pre(), qo_is_oid_const(), qo_make_new_derived_tblspec(), pt_statement_info::query, pt_query_info::select, pt_statement_info::spec, pt_name_info::spec_id, parser_node::type_enum, and pt_select_info::where.
Referenced by qo_optimize_queries().
|
static |
Definition at line 3178 of file query_rewrite.c.
References pt_expr_info::arg1, pt_expr_info::arg2, assert, parser_varchar::bytes, pt_value_info::data_value, db_compress_like_pattern(), db_get_info_for_like_optimization(), db_get_string(), db_get_string_codeset(), db_get_string_collation(), db_get_string_size(), db_make_null(), pt_value_info::db_value, db_value_clear(), DB_VALUE_DOMAIN_TYPE, ER_QSTR_INVALID_ESCAPE_SEQUENCE, pt_statement_info::expr, parser_node::info, intl_char_count(), lang_get_collation(), parser_varchar::length, LIKE_WILDCARD_MATCH_MANY, pt_expr_info::location, MSGCAT_SET_ERROR, NO_ERROR, NULL, pt_expr_info::op, parser_free_tree(), prm_get_bool_value(), PRM_ID_NO_BACKSLASH_ESCAPES, PRM_ID_REQUIRE_LIKE_ESCAPE_CHARACTER, pt_append_bytes(), PT_BETWEEN, PT_BETWEEN_GE_LT, PT_EQ, PT_ERRORm, pt_expression_2(), pt_free_escape_char(), PT_INTERNAL_ERROR, pt_is_ascii_string_value_node(), PT_IS_NOT_NULL, PT_IS_NULL_NODE, PT_NODE_PRINT_VALUE_TO_TEXT, PT_TYPE_LOGICAL, qo_find_like_rewrite_bound(), pt_data_value::str, TP_IS_CHAR_TYPE, parser_node::type_enum, and pt_statement_info::value.
Referenced by qo_rewrite_like_terms().
|
static |
Definition at line 5472 of file query_rewrite.c.
References spec_id_info::appears, pt_select_info::connect_by, pt_spec_info::derived_table, pt_spec_info::derived_table_type, qo_reset_location_info::end, pt_statement_info::expr, pt_select_info::from, spec_id_info::id, pt_spec_info::id, parser_node::info, pt_spec_info::join_type, pt_spec_info::location, pt_expr_info::location, parser_node::next, parser_node::node_type, NULL, spec_id_info::nullable, pt_expr_info::op, parser_node::or_next, parser_walk_tree(), PT_AND, PT_EXPR, PT_IS_NULL, PT_IS_SUBQUERY, PT_JOIN_INNER, PT_JOIN_LEFT_OUTER, PT_JOIN_NONE, PT_JOIN_RIGHT_OUTER, PT_LIST_WALK, PT_OR, PT_SELECT, pt_query_info::q, qo_check_nullable_expr_with_spec(), qo_get_name_by_spec_id(), qo_reset_location(), pt_statement_info::query, pt_query_info::select, pt_statement_info::spec, qo_reset_location_info::start, and pt_select_info::where.
Referenced by qo_optimize_queries().
|
static |
Definition at line 6176 of file query_rewrite.c.
References pt_function_info::all_or_distinct, pt_expr_info::arg1, pt_expr_info::arg2, pt_function_info::arg_list, assert, pt_query_info::correlation_level, parser_node::data_type, pt_value_info::data_value, pt_spec_info::derived_table, EXCLUDE_HIDDEN_COLUMNS, pt_statement_info::expr, pt_select_info::flavor, pt_statement_info::function, pt_function_info::function_type, parser_node::info, pt_query_info::is_subquery, pt_select_info::list, mq_make_derived_spec(), mq_rewrite_query_as_derived(), parser_node::next, parser_node::node_type, NULL, pt_expr_info::op, parser_node::or_next, pt_query_info::orderby_for, parser_append_node(), parser_copy_tree(), parser_free_tree(), parser_new_node(), parser_walk_tree(), PT_ALL, PT_DIFFERENCE, PT_EQ, PT_EQ_SOME, PT_EXPR, PT_FUNCTION, PT_GE, PT_GE_SOME, pt_get_select_list(), PT_GT, PT_GT_SOME, pt_has_aggregate(), pt_has_analytic(), PT_INTERNAL_ERROR, PT_INTERSECTION, pt_is_attr(), PT_IS_COLLECTION_TYPE, PT_IS_CONST, PT_IS_FUNCTION, pt_is_function_index_expression(), PT_IS_IN, PT_IS_SUBQUERY, PT_LE, PT_LE_SOME, pt_length_of_select_list(), PT_LIST_WALK, PT_LT, PT_LT_SOME, PT_MAX, PT_MIN, PT_NODE_MOVE_NUMBER_OUTERLINK, PT_SELECT, PT_SELECT_INFO_HAS_AGG, PT_SELECT_INFO_SET_FLAG, pt_select_list_to_one_col(), pt_type_enum_to_db(), PT_UNION, PT_USER_SELECT, pt_query_info::q, pt_statement_info::query, pt_query_info::select, pt_data_value::set, pt_statement_info::spec, tp_valid_indextype(), parser_node::type_enum, pt_statement_info::value, and pt_select_info::where.
Referenced by qo_optimize_queries().
|
static |
Definition at line 2771 of file query_rewrite.c.
References pt_expr_info::arg1, pt_expr_info::arg2, pt_statement_info::expr, parser_node::info, pt_expr_info::location, parser_node::next, parser_node::node_type, NULL, pt_expr_info::op, parser_node::or_next, pt_check_class_eq(), pt_check_path_eq(), PT_EXPR, PT_GE, pt_get_first_arg_ignore_prior(), PT_GT, pt_is_attr(), pt_is_const_expr_node(), pt_is_expr_node, PT_LE, PT_LT, PT_PRIOR, and PT_UNARY_MINUS.
Referenced by qo_reduce_comp_pair_terms().
|
static |
Definition at line 3796 of file query_rewrite.c.
References pt_expr_info::arg1, pt_expr_info::arg2, pt_function_info::arg_list, pt_value_info::data_value, error(), pt_statement_info::expr, pt_statement_info::function, parser_node::info, pt_expr_info::location, parser_node::next, parser_node::node_type, NULL, pt_expr_info::op, parser_node::or_next, parser_copy_tree(), parser_free_tree(), parser_new_node(), PT_BETWEEN_EQ_NA, PT_EXPR, PT_FUNCTION, PT_IS_COLLECTION_TYPE, PT_NAME, PT_TYPE_LOGICAL, PT_VALUE, pt_data_value::set, parser_node::type_enum, and pt_statement_info::value.
Referenced by qo_convert_to_range_helper().