CUBRID Engine
latest
|
#include "config.h"
#include "authenticate.h"
#include "porting.h"
#include "error_manager.h"
#include "parser.h"
#include "parser_message.h"
#include "view_transform.h"
#include "dbtype.h"
Go to the source code of this file.
Classes | |
struct | meth_lambda |
struct | meth_stmt_info |
struct | meth_corr_info |
struct | meth_info |
struct | meth_info1 |
struct | meth_info2 |
struct | meth_info3 |
struct | meth_info4 |
struct | meth_info5 |
struct | meth_info6 |
struct | meth_info7 |
Typedefs | |
typedef struct meth_lambda | METH_LAMBDA |
typedef struct meth_stmt_info | METH_STMT_INFO |
typedef struct meth_corr_info | METH_CORR_INFO |
typedef struct meth_info | METH_INFO |
typedef struct meth_info1 | METH_INFO1 |
typedef struct meth_info2 | METH_INFO2 |
typedef struct meth_info3 | METH_INFO3 |
typedef struct meth_info4 | METH_INFO4 |
typedef struct meth_info5 | METH_INFO5 |
typedef struct meth_info6 | METH_INFO6 |
typedef struct meth_info7 | METH_INFO7 |
Variables | |
static int | meth_table_number = 0 |
static int | meth_attr_number = 0 |
typedef struct meth_corr_info METH_CORR_INFO |
Definition at line 50 of file method_transform.c.
Definition at line 58 of file method_transform.c.
typedef struct meth_info1 METH_INFO1 |
Definition at line 67 of file method_transform.c.
typedef struct meth_info2 METH_INFO2 |
Definition at line 74 of file method_transform.c.
typedef struct meth_info3 METH_INFO3 |
Definition at line 81 of file method_transform.c.
typedef struct meth_info4 METH_INFO4 |
Definition at line 88 of file method_transform.c.
typedef struct meth_info5 METH_INFO5 |
Definition at line 96 of file method_transform.c.
typedef struct meth_info6 METH_INFO6 |
Definition at line 103 of file method_transform.c.
typedef struct meth_info7 METH_INFO7 |
Definition at line 110 of file method_transform.c.
typedef struct meth_lambda METH_LAMBDA |
Definition at line 35 of file method_transform.c.
typedef struct meth_stmt_info METH_STMT_INFO |
Definition at line 43 of file method_transform.c.
|
static |
Definition at line 2239 of file method_transform.c.
References pt_expr_info::arg1, pt_expr_info::arg2, pt_statement_info::expr, parser_node::info, NULL, pt_expr_info::op, parser_new_node(), PT_AND, PT_EXPR, PT_INTERNAL_ERROR, PT_TYPE_LOGICAL, and parser_node::type_enum.
Referenced by meth_collapse_nodes(), meth_grab_conj(), and meth_push_conjuncts().
|
static |
Definition at line 1770 of file method_transform.c.
References meth_corr_info::corr_threshold, parser_node::node_type, and PT_IS_QUERY_NODE_TYPE.
Referenced by meth_bump_correlation_level().
|
static |
Definition at line 1688 of file method_transform.c.
References meth_info7::check_method_calls, meth_corr_info::corr_step, meth_corr_info::corr_threshold, pt_query_info::correlation_level, meth_info1::found, meth_info7::found, meth_info1::id, meth_info7::id, parser_node::info, meth_bump_correlation_level(), meth_find_outside_refs(), meth_match_entity(), parser_node::next, parser_node::node_type, NULL, parser_walk_leaves(), PT_CONTINUE_WALK, PT_IS_QUERY_NODE_TYPE, PT_LEAF_WALK, PT_STOP_WALK, pt_statement_info::query, and meth_corr_info::spec_id.
Referenced by meth_bump_correlation_level().
|
static |
Definition at line 1668 of file method_transform.c.
References meth_corr_info::corr_step, meth_corr_info::corr_threshold, meth_bump_corr_post(), meth_bump_corr_pre(), parser_walk_tree(), and meth_corr_info::spec_id.
Referenced by meth_bump_corr_pre(), meth_collapse_nodes(), and meth_translate_spec().
|
static |
Definition at line 1021 of file method_transform.c.
References pt_spec_info::as_attr_list, pt_spec_info::derived_table, pt_spec_info::derived_table_type, pt_select_info::flavor, pt_select_info::from, pt_spec_info::id, parser_node::info, pt_select_info::list, meth_add_conj(), meth_bump_correlation_level(), meth_replace_referenced_attrs(), parser_node::next, parser_node::node_type, NULL, parser_append_node(), pt_spec_info::path_entities, pt_do_cnf(), PT_IS_SUBQUERY, pt_length_of_list(), PT_MERGE_SELECT, PT_SELECT, pt_query_info::q, pt_statement_info::query, pt_query_info::select, pt_statement_info::spec, and pt_select_info::where.
Referenced by meth_translate_helper().
|
static |
Definition at line 2390 of file method_transform.c.
References meth_find_hierarchical_op(), parser_node::next, NULL, parser_append_node(), parser_copy_tree(), and parser_walk_tree().
Referenced by meth_translate_spec().
|
static |
Definition at line 452 of file method_transform.c.
References pt_dot_info::arg1, pt_dot_info::arg2, pt_method_call_info::call_or_expr, pt_spec_info::derived_table, pt_spec_info::derived_table_type, pt_statement_info::dot, meth_info::entities_nesting_depth, meth_info3::entity, meth_info::entity_for_method, meth_info3::id, parser_node::info, pt_name_info::meta_class, meth_find_entity(), meth_find_last_entity(), meth_find_last_entity_post(), meth_is_method(), meth_info::method, pt_statement_info::method_call, pt_spec_info::method_list, pt_method_call_info::method_name, meth_info2::methods_to_translate, pt_statement_info::name, meth_info::nesting_depth, parser_node::node_type, NULL, parser_append_node(), parser_copy_tree(), parser_free_tree(), parser_walk_leaves(), parser_walk_tree(), PT_CONTINUE_WALK, PT_DOT_, PT_IS_CSELECT, PT_LIST_WALK, PT_METHOD_CALL, PT_PARAMETER, PT_SPEC, meth_info2::root, pt_statement_info::spec, and pt_name_info::spec_id.
Referenced by meth_translate_helper().
|
static |
Definition at line 1903 of file method_transform.c.
References meth_info3::entity, meth_info3::id, pt_spec_info::id, parser_node::info, parser_node::node_type, PT_SPEC, and pt_statement_info::spec.
Referenced by meth_create_method_list().
|
static |
Definition at line 2361 of file method_transform.c.
References pt_method_call_info::arg_list, parser_node::info, meth_find_hierarchical_op(), pt_statement_info::method_call, parser_node::next, parser_node::node_type, NULL, parser_walk_tree(), and PT_METHOD_CALL.
Referenced by meth_translate_spec().
|
static |
Definition at line 2332 of file method_transform.c.
References pt_statement_info::expr, parser_node::info, parser_node::node_type, pt_expr_info::op, PT_EXPR, PT_REQUIRES_HIERARCHICAL_QUERY, and PT_STOP_WALK.
Referenced by meth_copy_hierarchical_expr_to_list(), meth_find_hierarchical_in_method_list(), and meth_replace_hierarchical_exprs().
|
static |
Definition at line 1412 of file method_transform.c.
References meth_info7::check_method_calls, pt_spec_info::derived_table, pt_spec_info::derived_table_type, meth_info::entities_nesting_depth, meth_info::entity_for_method, pt_select_info::flavor, meth_info7::found, meth_info7::id, pt_spec_info::id, parser_node::info, meth_match_entity(), meth_info::method, pt_statement_info::method_call, pt_method_call_info::method_id, meth_info::nesting_depth, parser_node::node_type, NULL, parser_walk_leaves(), PT_CONTINUE_WALK, PT_IS_SUBQUERY, PT_LIST_WALK, PT_MERGE_SELECT, PT_METHOD_CALL, PT_SELECT, PT_SPEC, pt_query_info::q, pt_statement_info::query, pt_query_info::select, and pt_statement_info::spec.
Referenced by meth_create_method_list().
|
static |
Definition at line 1475 of file method_transform.c.
References meth_info::nesting_depth, parser_node::node_type, and PT_SELECT.
Referenced by meth_create_method_list().
|
static |
Definition at line 1794 of file method_transform.c.
References pt_select_info::flavor, parser_node::info, parser_node::node_type, PT_MERGE_SELECT, PT_SELECT, pt_query_info::q, pt_statement_info::query, and pt_query_info::select.
Referenced by meth_translate().
|
static |
Definition at line 1930 of file method_transform.c.
References meth_info1::found, meth_info1::id, parser_node::info, pt_statement_info::method_call, pt_method_call_info::method_id, parser_node::node_type, PT_CONTINUE_WALK, PT_LIST_WALK, PT_METHOD_CALL, and PT_SELECT.
Referenced by meth_grab_cnf_conj(), meth_grab_conj(), meth_push_conjuncts(), and meth_replace_call().
|
static |
Definition at line 1544 of file method_transform.c.
References pt_dot_info::arg1, pt_query_info::correlation_level, pt_statement_info::dot, pt_statement_info::expr, meth_info1::found, meth_info4::found, pt_select_info::from, meth_info1::id, meth_info4::id, parser_node::info, pt_name_info::meta_class, meth_find_outside_refs_subquery(), pt_statement_info::name, parser_node::node_type, NULL, pt_expr_info::op, parser_walk_leaves(), PT_CONTINUE_WALK, PT_DATA_TYPE, PT_DOT_, PT_EXPR, PT_INST_NUM, PT_LIST_WALK, PT_META_ATTR, PT_META_CLASS, PT_METHOD, PT_NAME, PT_PARAMETER, PT_ROWNUM, PT_SELECT, PT_STOP_WALK, PT_VALUE, pt_query_info::q, pt_statement_info::query, pt_query_info::select, pt_name_info::spec_id, and meth_info4::spec_list.
Referenced by meth_bump_corr_pre(), meth_grab_cnf_conj(), meth_grab_conj(), meth_push_conjuncts(), and meth_translate_spec().
|
static |
Definition at line 1961 of file method_transform.c.
References pt_dot_info::arg1, pt_statement_info::dot, meth_info4::found, meth_info4::id, parser_node::info, pt_name_info::meta_class, pt_statement_info::name, parser_node::node_type, PT_CONTINUE_WALK, PT_DATA_TYPE, PT_DOT_, pt_find_entity(), PT_LIST_WALK, PT_META_ATTR, PT_META_CLASS, PT_NAME, PT_PARAMETER, PT_SELECT, PT_STOP_WALK, PT_VALUE, pt_name_info::spec_id, and meth_info4::spec_list.
Referenced by meth_find_outside_refs(), and meth_translate_spec().
|
static |
Definition at line 1149 of file method_transform.c.
References parser_node::data_type, parser_node::info, pt_name_info::meta_class, meth_attr_number, mq_generate_name(), pt_statement_info::name, parser_node::next, NULL, pt_name_info::original, parser_append_node(), parser_copy_tree(), parser_new_node(), PT_INTERNAL_ERROR, PT_NAME, PT_NORMAL, pt_name_info::resolved, pt_name_info::spec_id, and parser_node::type_enum.
Referenced by meth_translate_spec().
|
static |
Definition at line 1075 of file method_transform.c.
References pt_method_call_info::arg_list, parser_node::info, pt_statement_info::method_call, pt_statement_info::name, parser_node::next, parser_node::node_type, NULL, pt_method_call_info::on_call_target, parser_append_node(), parser_copy_tree(), PT_INTERNAL_ERROR, pt_length_of_list(), PT_METHOD_CALL, PT_NAME, and pt_name_info::spec_id.
Referenced by meth_translate_spec().
|
static |
Definition at line 2182 of file method_transform.c.
References meth_info1::found, meth_info1::id, meth_find_method(), meth_find_outside_refs(), meth_info5::new_where, parser_node::next, NULL, parser_append_node(), parser_walk_tree(), and meth_info5::spec_id.
Referenced by meth_push_conjuncts().
|
static |
Definition at line 2099 of file method_transform.c.
References pt_expr_info::arg1, pt_expr_info::arg2, pt_value_info::data_value, pt_statement_info::expr, meth_info1::found, pt_data_value::i, meth_info1::id, parser_node::info, meth_add_conj(), meth_find_method(), meth_find_outside_refs(), meth_info5::new_where, parser_node::node_type, NULL, pt_expr_info::op, parser_new_node(), parser_walk_tree(), PT_AND, PT_CONTINUE_WALK, PT_EXPR, PT_INTERNAL_ERROR, PT_TYPE_LOGICAL, PT_VALUE, meth_info5::spec_id, parser_node::spec_ident, parser_node::type_enum, and pt_statement_info::value.
Referenced by meth_push_conjuncts().
|
static |
Definition at line 182 of file method_transform.c.
References parser_node::node_type, PT_CONTINUE_WALK, PT_METHOD_CALL, and PT_STOP_WALK.
Referenced by pt_statement_have_methods().
|
static |
Definition at line 1816 of file method_transform.c.
References pt_method_call_info::call_or_expr, pt_select_info::flavor, parser_node::info, pt_statement_info::method_call, parser_node::node_type, PT_CONTINUE_WALK, PT_LIST_WALK, PT_MERGE_SELECT, PT_METHOD_CALL, PT_PARAMETER, PT_SELECT, pt_query_info::q, pt_statement_info::query, and pt_query_info::select.
Referenced by meth_create_method_list().
|
static |
Definition at line 1122 of file method_transform.c.
References pt_spec_info::id, parser_node::info, pt_name_info::meta_class, meth_table_number, mq_generate_name(), pt_statement_info::name, NULL, pt_name_info::original, parser_new_node(), PT_CLASS, PT_INTERNAL_ERROR, PT_NAME, pt_statement_info::spec, and pt_name_info::spec_id.
Referenced by meth_translate_spec().
|
static |
Definition at line 1497 of file method_transform.c.
References pt_dot_info::arg1, meth_info7::check_method_calls, pt_statement_info::dot, meth_info7::found, meth_info7::id, parser_node::info, pt_statement_info::name, parser_node::node_type, PT_CONTINUE_WALK, PT_DATA_TYPE, PT_DOT_, PT_LIST_WALK, PT_METHOD_CALL, PT_NAME, and pt_name_info::spec_id.
Referenced by meth_bump_corr_pre(), meth_find_last_entity(), and meth_refs_to_scope().
|
static |
Definition at line 1846 of file method_transform.c.
References pt_spec_info::flavor, parser_node::info, parser_node::next, NULL, parser_append_node(), parser_copy_tree(), PT_METHOD_ENTITY, and pt_statement_info::spec.
Referenced by meth_translate_spec().
|
static |
Definition at line 2432 of file method_transform.c.
References pt_select_info::after_cb_filter, pt_select_info::check_cycles, pt_select_info::connect_by, CONNECT_BY_CYCLES_ERROR, NULL, parser_copy_tree_list(), parser_free_tree(), pt_select_info::single_table_opt, and pt_select_info::start_with.
Referenced by meth_translate_spec().
|
static |
Definition at line 1875 of file method_transform.c.
References pt_spec_info::flavor, parser_node::info, parser_node::next, NULL, parser_append_node(), parser_copy_tree(), PT_METHOD_ENTITY, and pt_statement_info::spec.
Referenced by meth_translate_spec().
|
static |
Definition at line 2029 of file method_transform.c.
References semantic_chk_info::donot_fold, meth_info1::found, meth_info1::id, meth_add_conj(), meth_find_method(), meth_find_outside_refs(), meth_grab_cnf_conj(), meth_grab_conj(), meth_info5::new_where, NULL, parser_walk_tree(), PT_AND, PT_EXPR, pt_semantic_type(), pt_where_type(), meth_info5::spec_id, and semantic_chk_info::top_node.
Referenced by meth_translate_spec().
|
static |
Definition at line 2301 of file method_transform.c.
References meth_info7::check_method_calls, meth_info7::found, meth_info7::id, pt_spec_info::id, parser_node::info, meth_match_entity(), parser_node::next, NULL, parser_walk_tree(), and pt_statement_info::spec.
Referenced by meth_translate_spec().
|
static |
Definition at line 1313 of file method_transform.c.
References meth_info1::found, meth_info1::id, pt_spec_info::id, parser_node::info, meth_find_method(), pt_statement_info::method_call, meth_lambda::method_id, pt_method_call_info::method_id, pt_method_call_info::method_name, pt_statement_info::name, meth_lambda::new_spec, parser_node::next, parser_node::node_type, NULL, parser_copy_tree(), parser_walk_leaves(), PT_INTERNAL_ERROR, PT_METHOD_CALL, meth_lambda::replacement, pt_statement_info::spec, and pt_name_info::spec_id.
Referenced by meth_replace_method_calls().
|
static |
Definition at line 2466 of file method_transform.c.
References i, meth_find_hierarchical_op(), parser_node::next, NULL, parser_copy_tree(), parser_free_tree(), and parser_walk_tree().
Referenced by meth_translate_spec().
|
static |
Definition at line 2280 of file method_transform.c.
References parser_node::info, pt_statement_info::method_call, pt_method_call_info::method_name, pt_statement_info::name, meth_info6::new_id, parser_node::node_type, meth_info6::old_id, PT_METHOD_CALL, and pt_name_info::spec_id.
Referenced by meth_translate_spec().
|
static |
Definition at line 1272 of file method_transform.c.
References parser_node::info, meth_replace_call(), pt_statement_info::method_call, meth_lambda::method_id, pt_method_call_info::method_id, meth_lambda::new_spec, parser_node::next, parser_node::node_type, NULL, parser_walk_tree(), PT_INTERNAL_ERROR, pt_length_of_list(), PT_METHOD_CALL, and meth_lambda::replacement.
Referenced by meth_translate_spec().
|
static |
Definition at line 1188 of file method_transform.c.
References pt_method_call_info::arg_list, parser_node::info, pt_statement_info::method_call, pt_statement_info::name, parser_node::next, parser_node::node_type, NULL, pt_method_call_info::on_call_target, parser_copy_tree(), PT_INTERNAL_ERROR, PT_METHOD_CALL, PT_NAME, and pt_name_info::spec_id.
Referenced by meth_translate_spec().
|
static |
Definition at line 1366 of file method_transform.c.
References parser_node::next, parser_node::node_type, NULL, PT_INTERNAL_ERROR, pt_lambda(), pt_length_of_list(), and PT_NAME.
Referenced by meth_collapse_nodes(), and meth_translate_spec().
PT_NODE* meth_translate | ( | PARSER_CONTEXT * | parser, |
PT_NODE *volatile | node | ||
) |
Definition at line 225 of file method_transform.c.
References meth_find_merge(), meth_translate_helper(), parser_node::next, NULL, parser_walk_tree(), PT_CLEAR_JMP_ENV, pt_do_cnf(), pt_has_error, and PT_SET_JMP_ENV.
Referenced by parser_generate_xasl().
|
static |
Definition at line 282 of file method_transform.c.
References pt_union_info::arg1, pt_union_info::arg2, pt_function_info::arg_list, pt_value_info::data_value, pt_spec_info::derived_table, pt_spec_info::derived_table_type, pt_select_info::from, pt_statement_info::function, parser_node::info, meth_collapse_nodes(), meth_create_method_list(), meth_translate_local(), meth_info2::methods_to_translate, parser_node::next, parser_node::node_type, NULL, parser_walk_tree(), PT_DIFFERENCE, PT_FUNCTION, pt_has_error, PT_INTERSECTION, pt_is_query, PT_IS_SET_EXPR, PT_IS_SUBQUERY, PT_SELECT, PT_UNION, PT_VALUE, pt_query_info::q, pt_statement_info::query, meth_info2::root, pt_query_info::select, pt_data_value::set, pt_statement_info::spec, pt_query_info::union_, and pt_statement_info::value.
Referenced by meth_translate().
|
static |
Definition at line 408 of file method_transform.c.
References parser_node::column_number, parser_node::line_number, meth_translate_select(), parser_node::node_type, NULL, pt_has_error, PT_SELECT, and PT_STOP_WALK.
Referenced by meth_translate_helper().
|
static |
Definition at line 546 of file method_transform.c.
References pt_select_info::from, parser_node::info, meth_translate_spec(), NULL, parser_walk_tree(), pt_has_error, pt_query_info::q, pt_statement_info::query, meth_stmt_info::root, pt_query_info::select, and meth_stmt_info::select_statement.
Referenced by meth_translate_local().
|
static |
Definition at line 580 of file method_transform.c.
References pt_method_call_info::arg_list, pt_spec_info::as_attr_list, pt_query_info::correlation_level, parser_node::data_type, db_make_int(), pt_spec_info::derived_table, pt_spec_info::derived_table_type, F_SEQUENCE, pt_select_info::flavor, meth_info1::found, meth_info4::found, pt_select_info::from, i, meth_info1::id, meth_info4::id, pt_spec_info::id, parser_node::info, pt_query_info::is_subquery, pt_spec_info::join_type, pt_select_info::list, pt_spec_info::location, pt_spec_info::meta_class, meth_bump_correlation_level(), meth_copy_hierarchical_expr_to_list(), meth_find_hierarchical_in_method_list(), meth_find_outside_refs(), meth_find_outside_refs_subquery(), meth_gen_as_attr_list(), meth_get_method_params(), meth_make_unique_range_var(), meth_method_path_entities(), meth_move_hierarchical_to_derived(), meth_non_method_path_entities(), meth_push_conjuncts(), meth_refs_to_scope(), meth_replace_hierarchical_exprs(), meth_replace_id_in_method_names(), meth_replace_method_calls(), meth_replace_method_params(), meth_replace_referenced_attrs(), pt_statement_info::method_call, pt_spec_info::method_list, mq_get_references(), mq_reset_paths(), MSGCAT_SEMANTIC_METH_CORR_SET_EXPR, MSGCAT_SET_PARSER_SEMANTIC, pt_statement_info::name, meth_info6::new_id, meth_lambda::new_spec, parser_node::next, parser_node::node_type, NULL, meth_info6::old_id, pt_method_call_info::on_call_target, pt_spec_info::on_cond, parser_append_node(), parser_copy_tree(), parser_copy_tree_list(), parser_free_tree(), parser_new_node(), parser_walk_leaves(), parser_walk_tree(), pt_spec_info::path_entities, PT_CLASS, pt_dbval_to_value(), PT_ERRORm, PT_FUNCTION, PT_INTERNAL_ERROR, PT_IS_CSELECT, PT_IS_SET_EXPR, PT_IS_SUBQUERY, PT_JOIN_NONE, pt_length_of_list(), PT_LIST_WALK, PT_MERGE_SELECT, PT_SELECT, PT_SPEC, PT_STOP_WALK, PT_TYPE_SEQUENCE, PT_USER_SELECT, pt_query_info::q, pt_statement_info::query, pt_spec_info::range_var, pt_spec_info::referenced_attrs, pt_name_info::resolved, meth_stmt_info::root, pt_query_info::select, meth_stmt_info::select_statement, pt_statement_info::spec, meth_info4::spec_list, parser_node::type_enum, and pt_select_info::where.
Referenced by meth_translate_select().
int pt_statement_have_methods | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | statement | ||
) |
Definition at line 204 of file method_transform.c.
References meth_have_methods(), NULL, and parser_walk_tree().
|
static |
Definition at line 119 of file method_transform.c.
Referenced by meth_gen_as_attr_list().
|
static |
Definition at line 118 of file method_transform.c.
Referenced by meth_make_unique_range_var().