CUBRID Engine
latest
|
Go to the source code of this file.
Typedefs | |
typedef enum PT_FETCH_AS | PT_FETCH_AS |
typedef enum pt_updatability | PT_UPDATABILITY |
Enumerations | |
enum | PT_FETCH_AS { PT_NORMAL_SELECT, PT_INVERTED_ASSIGNMENTS, PT_PARTIAL_SELECT } |
enum | pt_updatability { PT_NOT_UPDATABLE = 0x0, PT_PARTIALLY_UPDATABLE = 0x1, PT_UPDATABLE = 0x3 } |
typedef enum PT_FETCH_AS PT_FETCH_AS |
typedef enum pt_updatability PT_UPDATABILITY |
Definition at line 43 of file view_transform.h.
enum PT_FETCH_AS |
Enumerator | |
---|---|
PT_NORMAL_SELECT | |
PT_INVERTED_ASSIGNMENTS | |
PT_PARTIAL_SELECT |
Definition at line 32 of file view_transform.h.
enum pt_updatability |
Enumerator | |
---|---|
PT_NOT_UPDATABLE | |
PT_PARTIALLY_UPDATABLE | |
PT_UPDATABLE |
Definition at line 36 of file view_transform.h.
PT_NODE* mq_bump_correlation_level | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | node, | ||
int | increment, | ||
int | match | ||
) |
Definition at line 518 of file view_transform.c.
References mq_bump_core_info::increment, mq_bump_core_info::match_level, mq_bump_corr_post(), mq_bump_corr_pre(), and parser_walk_tree().
Referenced by mq_bump_corr_pre(), mq_bump_order_dep_corr_lvl_pre(), mq_rewrite_aggregate_as_derived(), mq_rewrite_query_as_derived(), and mq_union_bump_correlation().
PT_NODE* mq_clear_ids | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | node, | ||
PT_NODE * | spec | ||
) |
Definition at line 6894 of file view_transform.c.
References pt_spec_info::id, parser_node::info, mq_clear_all_ids(), NULL, parser_walk_tree(), pt_continue_walk(), and pt_statement_info::spec.
Referenced by compile_partition_expression(), and pt_check_order_by().
int mq_evaluate_check_option | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | expr, | ||
DB_OBJECT * | object, | ||
PT_NODE * | view_class | ||
) |
Definition at line 10946 of file view_transform.c.
References db_get_class_name(), db_get_int(), db_make_null(), db_value_is_null(), er_errid(), error(), parser_node::info, mq_evaluate_expression(), MSGCAT_RUNTIME_CHECK_OPTION_EXCEPT, MSGCAT_SET_PARSER_RUNTIME, pt_statement_info::name, parser_node::next, NO_ERROR, NULL, PT_ERRORmf, PT_EXECUTION, pt_report_to_ersys(), pt_name_info::spec_id, and pt_name_info::virt_object.
Referenced by do_insert_template(), insert_subquery_results(), and update_object_tuple().
int mq_evaluate_expression | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | expr, | ||
DB_VALUE * | value, | ||
DB_OBJECT * | object, | ||
UINTPTR | spec_id | ||
) |
Definition at line 10341 of file view_transform.c.
References parser_node::column_number, ER_PT_SEMANTIC, error(), set_names_info::id, parser_node::line_number, mq_set_names_dbobject(), MSGCAT_RUNTIME_NO_EXPR_TO_EVALUATE, MSGCAT_SET_PARSER_RUNTIME, NO_ERROR, NULL, set_names_info::object, parser_walk_tree(), pt_continue_walk(), PT_ERRORm, pt_evaluate_tree(), pt_has_error, pt_report_to_ersys(), and PT_SEMANTIC.
Referenced by mq_evaluate_check_option(), mq_get_attribute(), and mq_get_expression().
int mq_evaluate_expression_having_serial | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | expr, | ||
DB_VALUE * | values, | ||
int | values_count, | ||
DB_OBJECT * | object, | ||
UINTPTR | spec_id | ||
) |
Definition at line 10387 of file view_transform.c.
References parser_node::column_number, ER_PT_SEMANTIC, error(), set_names_info::id, parser_node::line_number, mq_set_names_dbobject(), MSGCAT_RUNTIME_NO_EXPR_TO_EVALUATE, MSGCAT_SET_PARSER_RUNTIME, NO_ERROR, NULL, set_names_info::object, parser_walk_tree(), pt_continue_walk(), PT_ERRORm, pt_evaluate_tree_having_serial(), pt_has_error, pt_report_to_ersys(), and PT_SEMANTIC.
Referenced by update_object_by_oid().
Definition at line 10689 of file view_transform.c.
References pt_name_info::db_object, parser_node::info, mq_fetch_one_real_class_get_cache(), pt_statement_info::name, and NULL.
Referenced by make_template(), and ws_vmop().
int mq_get_attribute | ( | DB_OBJECT * | vclass, |
const char * | attr_name, | ||
DB_OBJECT * | base_class, | ||
DB_VALUE * | virtual_value, | ||
DB_OBJECT * | base_instance | ||
) |
Definition at line 10433 of file view_transform.c.
References assert, AU_DISABLE, AU_ENABLE, parser_context::au_save, DB_AUTH_SELECT, pt_name_info::db_object, er_errid(), ER_PT_SEMANTIC, error(), parser_node::info, mq_evaluate_expression(), mq_fetch_expression_for_real_class_update(), pt_statement_info::name, NO_ERROR, NULL, pt_name_info::original, parser_create_parser(), parser_free_parser(), parser_init_node(), pt_has_error, PT_NAME, PT_NORMAL_SELECT, pt_report_to_ersys(), and PT_SEMANTIC.
Referenced by obj_get_att().
Definition at line 10710 of file view_transform.c.
References assert, cubregex::count(), db_dget(), db_error_string(), db_get_attribute_descriptor(), db_get_class(), db_get_class_name(), er_errid(), ER_PT_SEMANTIC, err, error(), pt_select_info::from, pt_spec_info::id, parser_node::info, pt_select_info::list, mq_evaluate_expression(), parser_node::next, NO_ERROR, NULL, parser, parser_alloc(), parser_create_parser(), parser_free_parser(), parser_parse_string(), parser_parse_string_with_escapes(), pt_append_string(), pt_compile(), pt_has_error, PT_NAME, pt_report_to_ersys(), PT_SEMANTIC, pt_query_info::q, pt_statement_info::query, pt_query_info::select, pt_statement_info::spec, and strlen.
Referenced by db_get_expression().
PT_NODE* mq_get_references | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | statement, | ||
PT_NODE * | spec | ||
) |
Definition at line 7165 of file view_transform.c.
References mq_get_references_helper().
Referenced by meth_translate_spec(), mq_push_path(), mq_rewrite_vclass_spec_as_derived(), mq_translate_paths(), pt_get_pred_attrs(), pt_mvcc_flag_specs_assign_reev(), pt_mvcc_flag_specs_cond_reev(), and pt_mvcc_set_spec_assign_reev_extra_indexes().
PT_NODE* mq_get_references_helper | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | statement, | ||
PT_NODE * | spec, | ||
bool | get_spec_referenced_attr | ||
) |
Definition at line 7179 of file view_transform.c.
References parser_node::info, mq_reset_ids_and_references_helper(), NULL, pt_spec_info::referenced_attrs, and pt_statement_info::spec.
Referenced by mq_get_references(), pt_append_assignment_references(), pt_split_attrs(), and pt_to_index_attrs().
bool mq_is_outer_join_spec | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | spec | ||
) |
Definition at line 387 of file view_transform.c.
References assert, parser_node::info, pt_spec_info::join_type, parser_node::next, parser_node::node_type, NULL, PT_INTERNAL_ERROR, PT_JOIN_CROSS, PT_JOIN_FULL_OUTER, PT_JOIN_INNER, PT_JOIN_LEFT_OUTER, PT_JOIN_NATURAL, PT_JOIN_NONE, PT_JOIN_RIGHT_OUTER, PT_JOIN_UNION, PT_SPEC, and pt_statement_info::spec.
Referenced by mq_substitute_subquery_in_statement(), pt_to_constraint_pred(), and pt_to_upd_del_query().
Definition at line 10259 of file view_transform.c.
References mq_is_updatable_local(), and PT_PARTIAL_SELECT.
Referenced by db_is_updatable_object(), make_template(), mq_check_non_updatable_vclass_oid(), mq_set_virt_object(), pt_spec_to_oid_attr(), and vid_build_virtual_mop().
bool mq_is_updatable_att | ( | PARSER_CONTEXT * | parser, |
DB_OBJECT * | vmop, | ||
const char * | attr_name, | ||
DB_OBJECT * | rmop | ||
) |
Definition at line 10284 of file view_transform.c.
References pt_expr_info::arg1, pt_expr_info::arg2, DB_AUTH_SELECT, pt_name_info::db_object, pt_statement_info::expr, parser_node::info, mq_fetch_expression_for_real_class_update(), pt_statement_info::name, NULL, pt_name_info::original, parser_init_node(), PT_INVERTED_ASSIGNMENTS, and PT_NAME.
Referenced by mq_is_updatable_attribute().
bool mq_is_updatable_attribute | ( | DB_OBJECT * | vclass, |
const char * | attr_name, | ||
DB_OBJECT * | base_class | ||
) |
Definition at line 10314 of file view_transform.c.
References mq_is_updatable_att(), NULL, parser, parser_create_parser(), parser_free_parser(), and rc.
Referenced by db_is_updatable_attribute(), and populate_defaults().
Definition at line 10270 of file view_transform.c.
References mq_is_updatable_local(), and PT_NORMAL_SELECT.
Referenced by mq_check_non_updatable_vclass_oid().
PT_NODE* mq_make_derived_spec | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | node, | ||
PT_NODE * | subquery, | ||
int * | idx, | ||
PT_NODE ** | spec_ptr, | ||
PT_NODE ** | attr_list_ptr | ||
) |
Definition at line 8243 of file view_transform.c.
References pt_spec_info::as_attr_list, parser_node::data_type, pt_spec_info::derived_table, pt_spec_info::derived_table_type, parser_node::flag, pt_select_info::from, pt_spec_info::id, parser_node::info, parser_node::is_hidden_column, pt_name_info::meta_class, mq_generate_name(), mq_regenerate_if_ambiguous(), mq_reset_ids_in_statement(), pt_statement_info::name, parser_node::next, NULL, pt_query_info::order_by, pt_name_info::original, parser_append_node(), parser_copy_tree(), parser_new_node(), pt_get_select_list(), PT_INTERNAL_ERROR, PT_IS_SUBQUERY, pt_name(), PT_NAME_GENERATED_DERIVED_SPEC, PT_NAME_INFO_SET_FLAG, PT_NORMAL, PT_SPEC, pt_try_remove_order_by(), pt_query_info::q, pt_statement_info::query, pt_spec_info::range_var, pt_name_info::resolved, pt_query_info::select, find_id_info::spec, pt_statement_info::spec, pt_name_info::spec_id, and parser_node::type_enum.
Referenced by qo_rewrite_subqueries().
PT_NODE* mq_oid | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | spec | ||
) |
Definition at line 10497 of file view_transform.c.
References AU_DISABLE, AU_ENABLE, parser_context::au_save, DB_AUTH_ALL, parser_context::error_msgs, pt_spec_info::flat_entity_list, parser_node::info, mq_fetch_expression_for_real_class_update(), mq_set_all_ids(), pt_statement_info::name, NULL, pt_name_info::original, parser_copy_tree(), parser_free_tree(), parser_init_node(), parser_walk_tree(), PT_NAME, PT_NORMAL_SELECT, pt_statement_info::spec, and pt_name_info::virt_object.
Referenced by pt_spec_to_oid_attr().
PT_NODE* mq_reset_ids | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | statement, | ||
PT_NODE * | spec | ||
) |
Definition at line 6795 of file view_transform.c.
References assert, pt_spec_info::derived_table_type, pt_spec_info::id, parser_node::info, mq_reset_all_ids(), pt_statement_info::name, parser_node::node_type, NULL, parser_walk_tree(), PT_IS_WHACKED_SPEC, PT_NAME, pt_spec_info::range_var, pt_statement_info::spec, and pt_name_info::spec_id.
Referenced by mq_fix_derived(), mq_reset_ids_and_references_helper(), mq_reset_paths(), mq_reset_spec_ids(), mq_resolve_insert_statement(), and mq_set_references().
PT_NODE* mq_reset_ids_in_methods | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | statement | ||
) |
Definition at line 7040 of file view_transform.c.
References mq_reset_spec_in_method_names(), NULL, and parser_walk_tree().
Referenced by mq_substitute_subquery_in_statement().
PT_NODE* mq_reset_ids_in_statement | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | statement | ||
) |
Definition at line 7023 of file view_transform.c.
References mq_reset_spec_ids(), NULL, and parser_walk_tree().
Referenced by db_execute_and_keep_statement_local(), mq_make_derived_spec(), mq_rewrite_query_as_derived(), mq_translate_select(), mq_translate_tree(), pt_exec_trigger_stmt(), and qo_rewrite_oid_equality().
PT_NODE* mq_reset_paths | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | statement, | ||
PT_NODE * | root_spec | ||
) |
Definition at line 7273 of file view_transform.c.
References parser_node::info, mq_is_referenced(), mq_reset_ids(), mq_reset_paths(), parser_node::next, NULL, parser_append_node(), parser_free_tree(), pt_spec_info::path_entities, and pt_statement_info::spec.
Referenced by meth_translate_spec(), mq_class_lambda(), mq_fix_derived(), mq_push_arg2(), mq_reset_paths(), mq_reset_select_spec_node(), and mq_set_references().
PT_NODE* mq_rewrite_aggregate_as_derived | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | agg_sel | ||
) |
Definition at line 3664 of file view_transform.c.
References pt_spec_info::as_attr_list, parser_node::cannot_prepare, pt_query_info::correlation_level, parser_node::data_type, pt_agg_rewrite_info::depth, pt_agg_rewrite_info::derived_select, pt_spec_info::derived_table, pt_spec_info::derived_table_type, parser_node::flag, pt_select_info::flavor, pt_select_info::from, pt_agg_rewrite_info::from, pt_select_info::group_by, pt_select_info::having, pt_select_info::hint, pt_spec_info::id, pt_select_info::index_ls, pt_select_info::index_ss, parser_node::info, pt_query_info::is_subquery, pt_select_info::list, pt_name_info::meta_class, mq_bump_correlation_level(), mq_generate_name(), mq_rewrite_agg_names(), mq_rewrite_agg_names_post(), pt_statement_info::name, pt_agg_rewrite_info::new_from, parser_node::next, NULL, pt_select_info::ordered, pt_name_info::original, parser_append_node(), parser_copy_tree(), parser_new_node(), parser_walk_tree(), PT_HINT_NONE, PT_INTERNAL_ERROR, PT_IS_SUBQUERY, pt_name(), PT_NORMAL, pt_pointer_stack_pop(), pt_pointer_stack_push(), pt_resolve_star(), PT_SELECT, PT_SELECT_INFO_CLEAR_FLAG, PT_SELECT_INFO_HAS_AGG, PT_SELECT_INFO_SET_FLAG, PT_SPEC, PT_USER_SELECT, pt_query_info::q, pt_statement_info::query, pt_spec_info::range_var, pt_name_info::resolved, pt_query_info::select, pt_agg_rewrite_info::select_stack, find_id_info::spec, pt_statement_info::spec, pt_name_info::spec_id, parser_node::type_enum, pt_select_info::use_idx, pt_select_info::use_merge, pt_select_info::use_nl, pt_select_info::using_index, and pt_select_info::where.
Referenced by mq_translate_local(), mq_translate_select(), and pt_check_order_by().
PT_NODE* mq_rewrite_query_as_derived | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | query | ||
) |
Definition at line 3516 of file view_transform.c.
References pt_query_info::correlation_level, parser_node::flag, pt_select_info::from, i, pt_spec_info::id, pt_query_info::id, parser_node::info, parser_node::is_hidden_column, pt_query_info::is_subquery, pt_select_info::list, mq_bump_correlation_level(), mq_generate_name(), mq_reset_ids_in_statement(), pt_statement_info::name, parser_node::next, NULL, pt_query_info::order_by, pt_name_info::original, parser_append_node(), parser_copy_tree(), parser_free_node(), parser_new_node(), pt_get_select_list(), PT_INTERNAL_ERROR, PT_IS_SUBQUERY, pt_name(), PT_NAME, PT_NORMAL, PT_SELECT, PT_SHARED, PT_SPEC, pt_query_info::q, pt_statement_info::query, parser_node::recompile, pt_query_info::select, find_id_info::spec, pt_statement_info::spec, and pt_name_info::spec_id.
Referenced by pt_fold_union(), qo_optimize_queries(), qo_rewrite_hidden_col_as_derived(), and qo_rewrite_subqueries().
PT_NODE* mq_set_references | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | statement, | ||
PT_NODE * | spec | ||
) |
Definition at line 7347 of file view_transform.c.
References pt_spec_info::derived_table_type, parser_node::info, mq_reset_ids(), mq_reset_paths(), mq_set_references_local(), PT_IS_WHACKED_SPEC, and pt_statement_info::spec.
Referenced by mq_reset_spec_ids(), pt_query_set_reference(), and qo_analyze_path_join().
PT_NODE* mq_translate | ( | PARSER_CONTEXT * | parser, |
PT_NODE *volatile | node | ||
) |
Definition at line 6562 of file view_transform.c.
References mq_translate_helper(), NULL, PT_CLEAR_JMP_ENV, and PT_SET_JMP_ENV.
Referenced by db_compile_statement_local(), do_execute_merge(), do_merge(), do_prepare_delete(), do_prepare_merge(), do_prepare_update(), execute_create_select_query(), get_select_list_to_update(), pt_compile_trigger_stmt(), pt_evaluate_tree_internal(), pt_set_table_to_db(), pt_to_delete_xasl(), pt_to_merge_insert_xasl(), pt_to_merge_update_xasl(), pt_to_update_xasl(), and select_delete_list().
PT_UPDATABILITY mq_updatable | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | statement | ||
) |
Definition at line 1184 of file view_transform.c.
References max, MAX_STACK_OBJECTS, and mq_updatable_local().
Referenced by db_compile_statement_local(), and mq_virtual_queries().
int mq_update_attribute | ( | DB_OBJECT * | vclass, |
const char * | attr_name, | ||
DB_OBJECT * | base_class, | ||
DB_VALUE * | virtual_value, | ||
DB_VALUE * | base_value, | ||
const char ** | base_name, | ||
int | db_auth | ||
) |
Definition at line 10546 of file view_transform.c.
References pt_expr_info::arg1, pt_expr_info::arg2, assert, pt_value_info::data_value, db_make_null(), pt_name_info::db_object, pt_value_info::db_value, pt_value_info::db_value_is_initialized, er_errid(), ER_GENERIC_ERROR, ER_PT_SEMANTIC, error(), parser_node::etc, pt_statement_info::expr, parser_node::info, mq_fetch_expression_for_real_class_update(), pt_statement_info::name, NO_ERROR, NULL, pt_name_info::original, parser_create_parser(), parser_free_parser(), parser_free_tree(), parser_init_node(), pt_dbval_to_value(), pt_evaluate_tree(), pt_has_error, PT_INTERNAL_ERROR, PT_INVERTED_ASSIGNMENTS, PT_NAME, pt_report_to_ersys(), PT_SEMANTIC, pt_data_value::set, and pt_statement_info::value.
Referenced by obj_set_att(), obt_assign(), obt_assign_obt(), and populate_defaults().