CUBRID Engine
latest
|
#include <assert.h>
#include "authenticate.h"
#include "view_transform.h"
#include "parser.h"
#include "parser_message.h"
#include "schema_manager.h"
#include "semantic_check.h"
#include "optimizer.h"
#include "execute_schema.h"
#include "dbi.h"
#include "object_accessor.h"
#include "object_primitive.h"
#include "locator_cl.h"
#include "virtual_object.h"
#include "dbtype.h"
Go to the source code of this file.
Classes | |
struct | find_id_info |
struct | mq_bump_core_info |
struct | PT_RESOLVE_METHOD_NAME_INFO |
struct | check_pushable_info |
struct | path_lambda_info |
struct | exists_info |
struct | pt_reset_select_spec_info |
struct | replace_name_info |
struct | spec_reset_info |
struct | extra_specs_frame |
struct | mq_lambda_arg |
struct | set_names_info |
Macros | |
#define | MAX_STACK_OBJECTS 500 |
#define | PT_PUSHABLE_TERM(p) ((p)->out.pushable && (p)->out.correlated_found == false) |
#define | MAX_CYCLE 300 |
#define | MQ_IS_OUTER_JOIN_SPEC(s) |
Typedefs | |
typedef struct find_id_info | FIND_ID_INFO |
typedef struct mq_bump_core_info | MQ_BUMP_CORR_INFO |
typedef struct check_pushable_info | CHECK_PUSHABLE_INFO |
typedef struct path_lambda_info | PATH_LAMBDA_INFO |
typedef struct exists_info | EXISTS_INFO |
typedef struct pt_reset_select_spec_info | PT_RESET_SELECT_SPEC_INFO |
typedef struct replace_name_info | REPLACE_NAME_INFO |
typedef struct spec_reset_info | SPEC_RESET_INFO |
typedef struct extra_specs_frame | PT_EXTRA_SPECS_FRAME |
typedef struct mq_lambda_arg | MQ_LAMBDA_ARG |
typedef struct set_names_info | SET_NAMES_INFO |
Enumerations | |
enum | FIND_ID_TYPE { FIND_ID_INLINE_VIEW = 0, FIND_ID_VCLASS } |
Variables | |
static unsigned int | top_cycle = 0 |
static DB_OBJECT * | cycle_buffer [MAX_CYCLE] |
#define MAX_CYCLE 300 |
Definition at line 48 of file view_transform.c.
Referenced by mq_check_cycle(), and mq_virtual_queries().
#define MAX_STACK_OBJECTS 500 |
Definition at line 43 of file view_transform.c.
Referenced by mq_conditionally_add_objects(), and mq_updatable().
#define MQ_IS_OUTER_JOIN_SPEC | ( | s | ) |
Definition at line 50 of file view_transform.c.
Definition at line 45 of file view_transform.c.
Referenced by mq_copypush_sargable_terms_helper().
typedef struct check_pushable_info CHECK_PUSHABLE_INFO |
typedef struct exists_info EXISTS_INFO |
Definition at line 121 of file view_transform.c.
typedef struct find_id_info FIND_ID_INFO |
typedef struct mq_bump_core_info MQ_BUMP_CORR_INFO |
typedef struct mq_lambda_arg MQ_LAMBDA_ARG |
Definition at line 159 of file view_transform.c.
typedef struct path_lambda_info PATH_LAMBDA_INFO |
Definition at line 112 of file view_transform.c.
typedef struct extra_specs_frame PT_EXTRA_SPECS_FRAME |
Definition at line 152 of file view_transform.c.
typedef struct pt_reset_select_spec_info PT_RESET_SELECT_SPEC_INFO |
Definition at line 129 of file view_transform.c.
typedef struct replace_name_info REPLACE_NAME_INFO |
Definition at line 136 of file view_transform.c.
typedef struct set_names_info SET_NAMES_INFO |
Definition at line 167 of file view_transform.c.
typedef struct spec_reset_info SPEC_RESET_INFO |
Definition at line 144 of file view_transform.c.
enum FIND_ID_TYPE |
Enumerator | |
---|---|
FIND_ID_INLINE_VIEW | |
FIND_ID_VCLASS |
Definition at line 59 of file view_transform.c.
Definition at line 10982 of file view_transform.c.
References DB_AUTH_ALTER, DB_AUTH_DELETE, DB_AUTH_EXECUTE, DB_AUTH_INDEX, DB_AUTH_INSERT, DB_AUTH_INSERT_UPDATE, DB_AUTH_INSERT_UPDATE_DELETE, DB_AUTH_NONE, DB_AUTH_REPLACE, DB_AUTH_SELECT, DB_AUTH_UPDATE, and DB_AUTH_UPDATE_DELETE.
Referenced by mq_check_authorization_path_entities(), mq_fetch_subqueries_for_update_local(), and mq_translate_tree().
|
static |
Definition at line 5374 of file view_transform.c.
References DB_AUTH_NONE, pt_select_info::from, parser_node::info, parser_node::node_type, NULL, pt_add_table_name_to_from_list(), PT_SELECT, PT_STOP_WALK, pt_query_info::q, pt_statement_info::query, and pt_query_info::select.
Referenced by mq_translate_subqueries().
|
static |
Definition at line 11762 of file view_transform.c.
References pt_merge_info::assignment, i, parser_node::info, pt_merge_info::insert, pt_node_list_info::list, pt_statement_info::merge, parser_node::next, pt_statement_info::node_list, NULL, p, pt_is_const_not_hostvar, PT_IS_NULL_NODE, pt_rewrite_to_auto_param(), qo_do_auto_parameterize(), pt_merge_info::update, and pt_merge_info::value_clauses.
Referenced by mq_translate_helper().
|
static |
Definition at line 494 of file view_transform.c.
References mq_bump_core_info::match_level, parser_node::node_type, and PT_IS_QUERY_NODE_TYPE.
Referenced by mq_bump_correlation_level().
|
static |
Definition at line 446 of file view_transform.c.
References pt_query_info::correlation_level, mq_bump_core_info::increment, parser_node::info, mq_bump_core_info::match_level, mq_bump_correlation_level(), parser_node::next, parser_node::node_type, PT_CONTINUE_WALK, PT_IS_QUERY_NODE_TYPE, PT_LEAF_WALK, PT_STOP_WALK, and pt_statement_info::query.
Referenced by mq_bump_correlation_level().
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().
|
static |
Definition at line 11717 of file view_transform.c.
References mq_bump_order_dep_corr_lvl_post(), mq_bump_order_dep_corr_lvl_pre(), NULL, and parser_walk_tree().
Referenced by mq_translate_helper().
|
static |
Definition at line 11676 of file view_transform.c.
References pt_expr_info::arg2, pt_statement_info::expr, parser_node::info, parser_node::next, NULL, parser_free_node(), and PT_IS_QUERY.
Referenced by mq_bump_order_dep_corr_lvl().
|
static |
Definition at line 11573 of file view_transform.c.
References pt_expr_info::arg1, pt_expr_info::arg2, assert, pt_query_info::correlation_level, pt_statement_info::expr, parser_node::info, mq_bump_correlation_level(), parser_node::next, NULL, parser_new_node(), PT_EXPR, PT_INTERNAL_ERROR, PT_IS_ORDER_DEPENDENT, PT_IS_QUERY, and pt_statement_info::query.
Referenced by mq_bump_order_dep_corr_lvl().
|
static |
Definition at line 2233 of file view_transform.c.
References assert, pt_spec_info::auth_bypass_mask, DB_AUTH_NONE, db_check_authorization(), db_get_class_name(), pt_name_info::db_object, error(), pt_spec_info::flat_entity_list, get_authorization_name(), parser_node::info, MSGCAT_RUNTIME_IS_NOT_AUTHORIZED_ON, MSGCAT_SET_PARSER_RUNTIME, pt_statement_info::name, parser_node::next, NO_ERROR, NULL, pt_spec_info::path_entities, PT_ERRORmf2, and pt_statement_info::spec.
Referenced by mq_translate_tree().
Definition at line 5712 of file view_transform.c.
References i, max, MAX_CYCLE, and top_cycle.
Referenced by mq_virtual_queries().
|
static |
Definition at line 3949 of file view_transform.c.
References assert, CASE_INSENSITIVE, pt_statement_info::delete_, parser_node::info, MSGCAT_SEMANTIC_DUPLICATE_CLASS_OR_ALIAS, MSGCAT_SET_PARSER_SEMANTIC, pt_statement_info::name, parser_node::next, parser_node::node_type, NULL, PT_DELETE, PT_ERRORmf, pt_str_compare(), pt_name_info::resolved, cubregex::search(), pt_name_info::spec_id, and pt_delete_info::target_classes.
Referenced by mq_translate_delete().
|
static |
Definition at line 4439 of file view_transform.c.
References pt_no_attr_and_meta_attr_updates(), and pt_no_double_updates().
Referenced by mq_translate_merge().
|
static |
Definition at line 6001 of file view_transform.c.
References pt_statement_info::data_type, parser_node::data_type, db_get_class_name(), parser_node::info, mq_is_updatable(), mq_is_updatable_strict(), MSGCAT_RUNTIME_NO_VID_FOR_NON_UPDATABLE_VIEW, MSGCAT_SET_PARSER_RUNTIME, parser_node::node_type, NULL, PT_ERRORmf, PT_FUNCTION, PT_STOP_WALK, PT_TYPE_OBJECT, parser_node::type_enum, and pt_data_type_info::virt_object.
Referenced by mq_translate_helper().
|
static |
Definition at line 4598 of file view_transform.c.
References assert, pt_spec_info::derived_table_type, pt_select_info::from, pt_select_info::having, parser_node::info, pt_query_info::is_view_spec, mq_copypush_sargable_terms(), mq_is_union_translation(), mq_rewrite_vclass_spec_as_derived(), parser_node::next, NO_ERROR, NULL, pt_query_info::oids_included, pt_cnf(), pt_has_aggregate(), PT_IS_SUBQUERY, PT_SELECT_FULL_INFO_COLS_SCHEMA, PT_SELECT_INFO_COLS_SCHEMA, PT_SELECT_INFO_IS_FLAGED, pt_query_info::q, pt_statement_info::query, pt_query_info::select, pt_statement_info::spec, and pt_select_info::where.
Referenced by mq_push_paths().
|
static |
Definition at line 2289 of file view_transform.c.
References parser_node::cannot_prepare, parser_node::flag, and parser_node::next.
Referenced by mq_translate_tree().
|
static |
Definition at line 3933 of file view_transform.c.
References pt_no_attr_and_meta_attr_updates(), and pt_no_double_updates().
Referenced by mq_translate_update().
|
static |
Definition at line 4909 of file view_transform.c.
References assert, ER_PT_SEMANTIC, parser_node::etc, parser_node::info, intl_identifier_casecmp(), MSGCAT_SEMANTIC_INDEX_HINT_CONFLICT, MSGCAT_SET_PARSER_SEMANTIC, pt_statement_info::name, parser_node::next, NO_ERROR, NULL, pt_name_info::original, parser_print_tree(), PT_ERRORmf2, 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_USE, and pt_name_info::resolved.
Referenced by mq_translate_local().
|
static |
Definition at line 6053 of file view_transform.c.
References assert, pt_spec_info::derived_table, pt_spec_info::flat_entity_list, pt_select_info::from, parser_node::info, MSGCAT_SEMANTIC_MULTIPLE_INSERT_TARGETS, MSGCAT_SET_PARSER_SEMANTIC, parser_node::next, parser_node::node_type, NULL, PT_ERRORm, PT_SELECT, PT_SPEC_IS_CTE, PT_SPEC_IS_DERIVED, pt_query_info::q, pt_statement_info::query, pt_query_info::select, find_id_info::spec, and pt_statement_info::spec.
Referenced by mq_rewrite_upd_del_top_level_specs().
PT_NODE * mq_class_lambda | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | statement, | ||
PT_NODE * | class_, | ||
PT_NODE * | corresponding_spec, | ||
PT_NODE * | class_where_part, | ||
PT_NODE * | class_check_part, | ||
PT_NODE * | class_group_by_part, | ||
PT_NODE * | class_having_part | ||
) |
Definition at line 8340 of file view_transform.c.
References parser_node::alias_print, pt_expr_info::arg1, pt_union_info::arg1, pt_expr_info::arg2, pt_union_info::arg2, assert, pt_update_info::assignment, pt_merge_info::assignment, pt_insert_info::attr_list, pt_merge_info::attr_list, pt_statement_info::check_option, pt_select_info::check_where, pt_update_info::check_where, pt_merge_info::check_where, pt_merge_info::class_where, pt_statement_info::delete_, pt_spec_info::derived_table_type, pt_spec_info::entity_name, pt_check_option_info::expr, pt_statement_info::expr, pt_spec_info::flag, pt_query_info::flag, pt_spec_info::flat_entity_list, pt_select_info::from, pt_select_info::group_by, pt_select_info::having, pt_spec_info::id, parser_node::info, pt_merge_info::insert, pt_statement_info::insert, pt_merge_info::into, pt_query_info::is_subquery, pt_spec_info::join_type, pt_node_list_info::list, pt_node_list_info::list_type, pt_spec_info::location, pt_statement_info::merge, mq_invert_insert_subquery(), mq_regenerate_if_ambiguous(), mq_rename_resolved(), mq_reset_paths(), mq_reset_spec_distr_subpath_post(), mq_reset_spec_distr_subpath_pre(), mq_translate_paths(), mq_translate_value(), MSGCAT_RUNTIME_ATTRS_GT_QSPEC_COLS, MSGCAT_RUNTIME_VASG_TGT_UNINVERTBL, MSGCAT_SET_PARSER_RUNTIME, pt_statement_info::name, parser_node::next, pt_statement_info::node_list, parser_node::node_type, NULL, spec_reset_info::old_next, pt_spec_info::on_cond, pt_name_info::original, pt_expr_info::paren_type, parser_append_node(), parser_copy_tree_list(), parser_free_tree(), parser_new_node(), parser_walk_tree(), pt_spec_info::path_entities, pt_append_string(), PT_CHECK_OPTION, PT_DELETE, PT_DERIVED_JSON_TABLE, PT_DIFFERENCE, PT_ERRORm, PT_ERRORmf, PT_EXPR, PT_INSERT, PT_INTERNAL_ERROR, PT_INTERSECTION, pt_invert(), PT_IS_DEFAULT_VALUE, PT_IS_N_COLUMN_UPDATE_EXPR, PT_IS_QUERY_NODE_TYPE, PT_IS_SUBQUERY, PT_IS_VALUE, PT_JOIN_NONE, PT_MERGE, PT_SELECT, PT_SELECT_INFO_FOR_UPDATE, PT_SELECT_INFO_IS_FLAGED, pt_short_print(), PT_SPEC_FLAG_FOR_UPDATE_CLAUSE, PT_UNION, PT_UPDATE, pt_query_info::q, pt_statement_info::query, pt_spec_info::range_var, pt_name_info::resolved, pt_delete_info::search_cond, pt_update_info::search_cond, pt_merge_info::search_cond, pt_query_info::select, find_id_info::spec, pt_delete_info::spec, pt_insert_info::spec, pt_update_info::spec, pt_statement_info::spec, pt_name_info::spec_id, pt_check_option_info::spec_id, spec_reset_info::statement, spec_reset_info::sub_paths, pt_query_info::union_, pt_merge_info::update, pt_statement_info::update, pt_insert_info::value_clauses, pt_merge_info::value_clauses, pt_query_info::vspec_as_derived, pt_insert_info::where, and pt_select_info::where.
Referenced by mq_substitute_select_in_statement(), and mq_translate_tree().
|
static |
Definition at line 2581 of file view_transform.c.
References pt_method_call_info::class_or_inst, pt_query_info::correlation_level, find_id_info::found, parser_node::info, pt_statement_info::method_call, parser_node::node_type, PT_CONTINUE_WALK, pt_is_aggregate_function(), PT_IS_CLASS_MTHD, pt_is_query, PT_LIST_WALK, PT_METHOD_CALL, PT_STOP_WALK, and pt_statement_info::query.
Referenced by mq_has_class_methods_corr_subqueries().
|
static |
Definition at line 9729 of file view_transform.c.
References pt_dot_info::arg2, pt_statement_info::dot, pt_spec_info::id, parser_node::info, pt_statement_info::name, parser_node::next, parser_node::node_type, NULL, parser_free_tree(), PT_DOT_, find_id_info::spec, pt_statement_info::spec, and pt_name_info::spec_id.
Referenced by mq_push_path().
|
static |
Definition at line 6834 of file view_transform.c.
References parser_node::info, pt_statement_info::name, parser_node::node_type, NULL, PT_CONTINUE_WALK, pt_is_query, PT_LIST_WALK, PT_NAME, and pt_name_info::spec_id.
Referenced by mq_clear_ids().
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().
|
static |
Definition at line 6868 of file view_transform.c.
References pt_spec_info::id, parser_node::info, pt_statement_info::name, parser_node::next, parser_node::node_type, NULL, PT_NAME, pt_statement_info::spec, and pt_name_info::spec_id.
Referenced by mq_resolve_insert_statement(), and mq_translate_insert().
|
static |
Definition at line 6682 of file view_transform.c.
References pt_spec_info::flat_entity_list, pt_spec_info::id, parser_node::info, pt_name_info::meta_class, pt_statement_info::name, parser_node::next, parser_node::node_type, NULL, pt_name_info::original, PT_CLASS, PT_CONTINUE_WALK, PT_LIST_WALK, PT_NAME, PT_SPEC, PT_VCLASS, pt_name_info::resolved, pt_statement_info::spec, and pt_name_info::spec_id.
Referenced by mq_rename_resolved().
Definition at line 553 of file view_transform.c.
References DB_AUTH_DELETE, DB_AUTH_INSERT, DB_AUTH_SELECT, DB_AUTH_UPDATE, db_check_authorization(), and NO_ERROR.
Referenced by mq_compute_query_authorization(), and mq_virtual_queries().
Definition at line 583 of file view_transform.c.
References pt_union_info::arg1, pt_union_info::arg2, DB_AUTH_ALL, DB_AUTH_SELECT, pt_name_info::db_object, pt_spec_info::flat_entity_list, pt_select_info::from, parser_node::info, mq_compute_authorization(), pt_statement_info::name, parser_node::next, parser_node::node_type, NULL, PT_DIFFERENCE, PT_INTERSECTION, PT_SELECT, PT_UNION, pt_query_info::q, pt_statement_info::query, pt_query_info::select, find_id_info::spec, pt_statement_info::spec, and pt_query_info::union_.
Referenced by mq_translate_subqueries().
|
static |
Definition at line 1012 of file view_transform.c.
References pt_name_info::db_object, i, parser_node::info, MAX_STACK_OBJECTS, pt_statement_info::name, parser_node::next, NULL, parser_alloc(), and PT_INTERNAL_ERROR.
Referenced by mq_updatable_local().
|
static |
Definition at line 11810 of file view_transform.c.
References assert, parser_node::node_type, NULL, pt_get_errors(), pt_get_next_error(), pt_record_error(), and PT_ZZ_ERROR_MSG.
Referenced by mq_fetch_attributes(), mq_fetch_subqueries(), and mq_fetch_subqueries_for_update_local().
|
static |
Definition at line 3296 of file view_transform.c.
References pt_spec_info::as_attr_list, find_id_info::attr_list, pt_select_info::connect_by, pt_spec_info::derived_table, pt_spec_info::derived_table_type, FIND_ID_INLINE_VIEW, pt_select_info::from, find_id_info::in, parser_node::info, mq_copypush_sargable_terms_helper(), parser_node::node_type, NULL, find_id_info::others_spec_list, PT_IS_QUERY, PT_IS_SUBQUERY, PT_SELECT, PT_SELECT_INFO_IS_FLAGED, PT_SELECT_INFO_IS_MERGE_QUERY, pt_query_info::q, pt_statement_info::query, find_id_info::query_list, pt_query_info::select, find_id_info::spec, pt_statement_info::spec, and find_id_info::type.
Referenced by mq_check_rewrite_select().
|
static |
Definition at line 3175 of file view_transform.c.
References find_id_info::correlated_found, pt_query_info::correlation_level, parser_node::info, pt_spec_info::join_type, parser_node::next, parser_node::node_type, NULL, find_id_info::out, parser_append_node(), parser_copy_tree(), parser_free_tree(), parser_walk_tree(), pt_check_copypush_subquery(), pt_copypush_terms(), PT_EXPR, PT_EXPR_INFO_CLEAR_FLAG, PT_EXPR_INFO_COPYPUSH, PT_EXPR_INFO_SET_FLAG, pt_has_analytic(), PT_IS_QUERY, PT_IS_VALUE_QUERY, PT_JOIN_FULL_OUTER, PT_JOIN_LEFT_OUTER, PT_JOIN_RIGHT_OUTER, PT_PUSHABLE_TERM, pt_sargable_term(), PT_SELECT_FULL_INFO_COLS_SCHEMA, PT_SELECT_INFO_COLS_SCHEMA, PT_SELECT_INFO_IS_FLAGED, pt_query_info::q, qo_check_nullable_expr(), pt_statement_info::query, pt_query_info::select, pt_statement_info::spec, find_id_info::type, and pt_select_info::where.
Referenced by mq_copypush_sargable_terms(), and mq_rewrite_vclass_spec_as_derived().
|
static |
Definition at line 9838 of file view_transform.c.
References pt_spec_info::as_attr_list, pt_spec_info::derived_table, pt_spec_info::derived_table_type, pt_spec_info::entity_name, pt_select_info::from, pt_spec_info::id, parser_node::info, pt_query_info::is_subquery, pt_select_info::list, mq_reset_ids_and_references(), mq_set_virt_object(), pt_statement_info::name, parser_node::next, NULL, parser_append_node(), parser_copy_tree(), parser_copy_tree_list(), parser_new_node(), parser_walk_tree(), pt_spec_info::path_conjuncts, pt_spec_info::path_entities, PT_INTERNAL_ERROR, PT_IS_SUBQUERY, PT_SELECT, PT_SPEC, pt_query_info::q, 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, and pt_name_info::spec_id.
Referenced by mq_push_paths_select().
int mq_evaluate_check_option | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | check_where, | ||
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().
PT_NODE * mq_fetch_attributes | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | class_ | ||
) |
Definition at line 10153 of file view_transform.c.
References view_cache_info::attrs, db_is_class(), pt_name_info::db_object, parser_context::error_msgs, parser_node::info, mq_copy_view_error_msgs(), pt_statement_info::name, NULL, sm_virtual_queries(), and parser_context::view_cache.
Referenced by mq_fetch_expression_for_real_class_update(), mq_rewrite_vclass_spec_as_derived(), mq_substitute_select_in_statement(), and mq_update_order_by().
|
static |
Definition at line 10079 of file view_transform.c.
References find_id_info::attr_list, db_get_class_name(), pt_name_info::db_object, pt_select_info::from, pt_spec_info::id, parser_node::info, intl_identifier_casecmp(), pt_select_info::list, mq_fetch_attributes(), mq_fetch_select_for_real_class_update(), MSGCAT_RUNTIME_VC_COMP_NOT_UPDATABL, MSGCAT_SEMANTIC_CLASS_DOES_NOT_HAVE, MSGCAT_SET_PARSER_RUNTIME, MSGCAT_SET_PARSER_SEMANTIC, pt_statement_info::name, parser_node::next, NULL, pt_name_info::original, parser_init_node(), PT_ERRORmf2, pt_has_error, PT_INTERNAL_ERROR, PT_NAME, pt_query_info::q, pt_statement_info::query, pt_query_info::select, find_id_info::spec, and pt_statement_info::spec.
Referenced by mq_get_attribute(), mq_is_updatable_att(), mq_oid(), mq_translate_paths(), and mq_update_attribute().
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().
|
static |
Definition at line 10636 of file view_transform.c.
References parser_node::column_number, DB_AUTH_SELECT, db_get_class_name(), pt_name_info::db_object, pt_spec_info::flat_entity_list, pt_select_info::from, parser_node::info, parser_node::line_number, mq_fetch_subqueries_for_update_local(), MSGCAT_RUNTIME_NO_REALCLASS_4_VCLAS, MSGCAT_SET_PARSER_RUNTIME, pt_statement_info::name, NULL, pt_name_info::original, parser_create_parser(), parser_free_parser(), parser_init_node(), PT_ERRORmf, pt_has_error, PT_NAME, PT_NORMAL_SELECT, pt_report_to_ersys(), PT_SEMANTIC, pt_query_info::q, pt_statement_info::query, pt_query_info::select, and pt_statement_info::spec.
Referenced by mq_fetch_one_real_class(), and mq_set_virt_object().
|
static |
Definition at line 10006 of file view_transform.c.
References db_is_partition(), db_is_superclass(), pt_name_info::db_object, er_msg(), error(), pt_spec_info::flat_entity_list, pt_select_info::from, parser_node::info, mq_fetch_subqueries_for_update(), pt_statement_info::name, parser_node::next, NO_ERROR, NULL, PT_ERROR, pt_query_info::q, pt_statement_info::query, pt_query_info::select, and pt_statement_info::spec.
Referenced by mq_fetch_expression_for_real_class_update(), mq_is_real_class_of_vclass(), and mq_translate_paths().
|
static |
Definition at line 5060 of file view_transform.c.
References pt_dot_info::arg1, pt_dot_info::arg2, view_cache_info::authorization, pt_name_info::custom_print, parser_node::data_type, DB_AUTH_SELECT, db_get_class_name(), db_is_class(), pt_name_info::db_object, pt_statement_info::dot, parser_context::error_msgs, parser_node::info, pt_name_info::meta_class, mq_copy_view_error_msgs(), MSGCAT_RUNTIME_SEL_NOT_AUTHORIZED, MSGCAT_SET_PARSER_RUNTIME, pt_statement_info::name, parser_node::next, parser_node::node_type, NULL, pt_name_info::original, parser, parser_copy_tree(), parser_free_tree(), parser_new_node(), pt_append_string(), PT_ERRORmf, PT_NAME, PT_NORMAL, PT_SUPPRESS_QUOTES, pt_name_info::resolved, sm_virtual_queries(), pt_name_info::spec_id, parser_node::type_enum, parser_context::view_cache, and view_cache_info::vquery_for_query_in_gdb.
Referenced by mq_is_union_translation(), mq_rewrite_upd_del_top_level_specs(), mq_rewrite_vclass_spec_as_derived(), and mq_translate_tree().
|
static |
Definition at line 9988 of file view_transform.c.
References mq_fetch_subqueries_for_update_local().
Referenced by mq_fetch_select_for_real_class_update(), mq_is_updatable_local(), mq_push_paths_select(), mq_rewrite_upd_del_top_level_specs(), and mq_translate_tree().
|
static |
Definition at line 9921 of file view_transform.c.
References view_cache_info::authorization, db_get_class_name(), db_is_class(), pt_name_info::db_object, parser_context::error_msgs, get_authorization_name(), parser_node::info, view_cache_info::inverted_vquery_for_update_in_gdb, mq_copy_view_error_msgs(), MSGCAT_RUNTIME_IS_NOT_AUTHORIZED_ON, MSGCAT_RUNTIME_VCLASS_NOT_UPDATABLE, MSGCAT_SET_PARSER_RUNTIME, pt_statement_info::name, NULL, PT_ERRORmf, PT_ERRORmf2, PT_INVERTED_ASSIGNMENTS, PT_NORMAL_SELECT, PT_PARTIAL_SELECT, sm_virtual_queries(), parser_context::view_cache, view_cache_info::vquery_for_partial_update, view_cache_info::vquery_for_update, and view_cache_info::vquery_for_update_in_gdb.
Referenced by mq_fetch_one_real_class_get_cache(), and mq_fetch_subqueries_for_update().
|
static |
Definition at line 9393 of file view_transform.c.
References pt_spec_info::as_attr_list, pt_statement_info::data_type, parser_node::data_type, db_is_vclass(), pt_name_info::db_object, pt_data_type_info::entity, parser_node::info, pt_name_info::meta_class, mq_reset_ids(), mq_reset_paths(), mq_set_virt_object(), mq_translate_paths(), pt_statement_info::name, parser_node::next, NULL, parser_walk_tree(), PT_META_CLASS, PT_TYPE_OBJECT, pt_statement_info::spec, parser_node::type_enum, and pt_data_type_info::virt_object.
Referenced by mq_fix_derived_in_union().
|
static |
Definition at line 9460 of file view_transform.c.
References pt_union_info::arg1, pt_union_info::arg2, pt_statement_info::delete_, pt_select_info::from, pt_spec_info::id, parser_node::info, pt_merge_info::into, pt_statement_info::merge, mq_fix_derived(), parser_node::next, parser_node::node_type, NULL, PT_DELETE, PT_DIFFERENCE, PT_INTERNAL_ERROR, PT_INTERSECTION, PT_MERGE, PT_SELECT, PT_UNION, PT_UPDATE, pt_query_info::q, pt_statement_info::query, pt_query_info::select, find_id_info::spec, pt_delete_info::spec, pt_update_info::spec, pt_statement_info::spec, pt_query_info::union_, pt_statement_info::update, and pt_merge_info::using_clause.
Referenced by mq_translate_tree().
|
static |
Definition at line 679 of file view_transform.c.
References pt_query_info::all_distinct, pt_union_info::arg1, pt_union_info::arg2, parser_node::info, parser_node::node_type, NULL, parser_append_node(), PT_ALL, PT_UNION, pt_query_info::q, pt_statement_info::query, and pt_query_info::union_.
Referenced by mq_virtual_queries().
void mq_free_virtual_query_cache | ( | PARSER_CONTEXT * | parser | ) |
Definition at line 5742 of file view_transform.c.
References view_cache_info::attrs, view_cache_info::inverted_vquery_for_update, view_cache_info::inverted_vquery_for_update_in_gdb, parser_free_parser(), parser_free_tree(), parser_context::view_cache, view_cache_info::vquery_for_partial_update, view_cache_info::vquery_for_query, view_cache_info::vquery_for_query_in_gdb, view_cache_info::vquery_for_update, and view_cache_info::vquery_for_update_in_gdb.
Referenced by sm_free_resident_classes_virtual_query_cache(), and sm_virtual_queries().
const char* mq_generate_name | ( | PARSER_CONTEXT * | parser, |
const char * | root, | ||
int * | version | ||
) |
Definition at line 6658 of file view_transform.c.
References NULL, and pt_append_string().
Referenced by check_merge_trigger(), check_trigger(), delete_list_by_oids(), do_delete(), do_execute_delete(), do_execute_merge(), do_execute_update(), do_merge(), do_update(), insert_local(), insert_subquery_results(), meth_gen_as_attr_list(), meth_make_unique_range_var(), mq_generate_unique(), mq_make_derived_spec(), mq_regenerate_if_ambiguous(), mq_rewrite_agg_names(), mq_rewrite_aggregate_as_derived(), mq_rewrite_order_dependent_nodes(), mq_rewrite_order_dependent_query(), mq_rewrite_query_as_derived(), pt_get_attr_list_of_derived_table(), pt_semantic_check_local(), qo_make_new_derived_tblspec(), and update_objs_for_list_file().
|
static |
Definition at line 8079 of file view_transform.c.
References i, parser_node::info, intl_identifier_casecmp(), mq_generate_name(), pt_statement_info::name, parser_node::next, NULL, pt_name_info::original, parser_copy_tree(), and PT_INTERNAL_ERROR.
Referenced by mq_push_path().
int mq_get_attribute | ( | DB_OBJECT * | vclass_object, |
const char * | attr_name, | ||
DB_OBJECT * | real_class_object, | ||
DB_VALUE * | virtual_value, | ||
DB_OBJECT * | real_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().
|
static |
Definition at line 7056 of file view_transform.c.
References pt_spec_info::derived_table, pt_spec_info::id, parser_node::info, pt_name_info::meta_class, mq_insert_symbol(), pt_statement_info::name, parser_node::node_type, NULL, pt_spec_info::on_cond, parser_walk_tree(), pt_spec_info::path_conjuncts, pt_spec_info::path_entities, pt_continue_walk(), PT_DATA_TYPE, PT_HINT_NAME, PT_INDEX_NAME, PT_LIST_WALK, PT_METHOD, PT_NAME, PT_SPEC, pt_spec_info::referenced_attrs, find_id_info::spec, pt_statement_info::spec, pt_name_info::spec_id, and parser_node::spec_ident.
Referenced by mq_reset_ids_and_references_helper(), and mq_set_references_local().
|
static |
Definition at line 2643 of file view_transform.c.
References find_id_info::found, pt_select_info::having, parser_node::info, pt_select_info::list, mq_class_meth_corr_subq_pre(), NULL, parser_walk_tree(), pt_query_info::q, pt_statement_info::query, and pt_query_info::select.
Referenced by mq_translate_local().
|
static |
Definition at line 6626 of file view_transform.c.
References parser_node::info, pt_name_info::meta_class, mq_lookup_symbol(), pt_statement_info::name, parser_node::node_type, NULL, parser_append_node(), parser_copy_tree(), PT_INTERNAL_ERROR, PT_NAME, and PT_PARAMETER.
Referenced by mq_get_references_node(), mq_rewrite_agg_names(), and mq_rewrite_vclass_spec_as_derived().
|
static |
Definition at line 5532 of file view_transform.c.
References pt_expr_info::arg1, pt_expr_info::arg2, assert, parser_node::etc, pt_statement_info::expr, parser_node::info, pt_statement_info::name, parser_node::next, parser_node::node_type, NULL, pt_expr_info::op, pt_name_info::original, parser_new_node(), PT_ASSIGN, PT_EXPR, PT_INTERNAL_ERROR, PT_VALUE, pt_value_info::text, and pt_statement_info::value.
Referenced by mq_invert_subqueries().
|
static |
Definition at line 8118 of file view_transform.c.
References parser_node::info, pt_select_info::list, mq_translate_value(), MSGCAT_RUNTIME_ATTRS_GT_QSPEC_COLS, MSGCAT_RUNTIME_VASG_TGT_UNINVERTBL, MSGCAT_SET_PARSER_RUNTIME, parser_node::next, NULL, parser_free_tree(), PT_ERRORm, PT_ERRORmf, pt_has_error, pt_invert(), pt_short_print(), pt_query_info::q, pt_statement_info::query, and pt_query_info::select.
Referenced by mq_invert_insert_subquery().
|
static |
Definition at line 8183 of file view_transform.c.
References pt_union_info::arg1, pt_union_info::arg2, assert, parser_node::info, mq_invert_insert_select(), parser_node::next, parser_node::node_type, NULL, PT_DIFFERENCE, pt_find_var(), pt_has_error, PT_INTERSECTION, PT_SELECT, PT_UNION, pt_query_info::q, pt_statement_info::query, and pt_query_info::union_.
Referenced by mq_class_lambda().
|
static |
Definition at line 5574 of file view_transform.c.
References assert, parser_node::info, pt_select_info::list, mq_invert_assign(), parser_node::next, NULL, parser_copy_tree_list(), parser_free_tree(), pt_has_error, pt_invert(), pt_query_info::q, pt_statement_info::query, and pt_query_info::select.
Referenced by mq_virtual_queries().
Definition at line 11037 of file view_transform.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, parser_node::info, parser_node::next, NULL, pt_expr_info::op, PT_DEFINE_VARIABLE, PT_IS_EXPR_NODE, and PT_IS_FUNCTION.
Referenced by mq_translate_select().
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().
|
static |
Definition at line 1351 of file view_transform.c.
References check_pushable_info::analytic_found, assert, check_pushable_info::check_analytic, check_pushable_info::check_method, check_pushable_info::check_query, check_pushable_info::check_xxxnum, pt_select_info::connect_by, pt_select_info::from, parser_node::info, pt_select_info::list, check_pushable_info::method_found, parser_node::next, parser_node::node_type, NULL, pt_query_info::orderby_for, parser_walk_tree(), pt_check_pushable(), pt_has_aggregate(), PT_INTERNAL_ERROR, pt_is_distinct, PT_IS_QUERY_NODE_TYPE, PT_SELECT, pt_query_info::q, pt_statement_info::query, check_pushable_info::query_found, pt_query_info::select, pt_select_info::where, and check_pushable_info::xxxnum_found.
Referenced by mq_substitute_subquery_in_statement().
int mq_is_real_class_of_vclass | ( | PARSER_CONTEXT * | parser, |
const PT_NODE * | s_class, | ||
const PT_NODE * | d_class | ||
) |
Definition at line 10912 of file view_transform.c.
References DB_AUTH_SELECT, parser_context::error_msgs, mq_fetch_select_for_real_class_update(), NULL, parser_free_tree(), pt_has_error, and PT_NORMAL_SELECT.
Referenced by pt_is_real_class_of_vclass(), and pt_type_assignable().
|
static |
Definition at line 7252 of file view_transform.c.
References mq_referenced_post(), mq_referenced_pre(), parser_walk_tree(), exists_info::referenced, find_id_info::spec, and exists_info::spec.
Referenced by mq_reset_paths().
|
static |
Definition at line 2173 of file view_transform.c.
References pt_spec_info::derived_table_type, er_errid(), er_has_error(), er_msg(), pt_spec_info::flat_entity_list, parser_node::info, pt_spec_info::meta_class, mq_fetch_subqueries(), mq_translatable_class(), parser_node::next, parser_node::node_type, NULL, PT_ERROR, pt_has_error, PT_IS_WHACKED_SPEC, PT_META_CLASS, PT_SELECT, and pt_statement_info::spec.
Referenced by mq_check_rewrite_select().
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 * | att_nam, | ||
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_object, |
const char * | attr_name, | ||
DB_OBJECT * | real_class_object | ||
) |
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().
|
static |
Definition at line 10230 of file view_transform.c.
References DB_AUTH_SELECT, pt_name_info::db_object, parser_node::info, mq_fetch_subqueries_for_update(), pt_statement_info::name, NULL, pt_name_info::original, parser, parser_create_parser(), parser_free_parser(), parser_init_node(), and PT_NAME.
Referenced by mq_is_updatable(), and mq_is_updatable_strict().
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_lambda | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | tree_with_names, | ||
PT_NODE * | name_node, | ||
PT_NODE * | corresponding_tree | ||
) |
Definition at line 9301 of file view_transform.c.
References pt_statement_info::expr, parser_node::info, mq_lambda_node(), mq_lambda_node_pre(), mq_lambda_arg::name_list, parser_node::next, parser_node::node_type, NULL, pt_expr_info::paren_type, parser_walk_tree(), PT_EXPR, PT_NAME, mq_lambda_arg::spec_frames, and mq_lambda_arg::tree_list.
Referenced by mq_substitute_select_in_statement(), and pt_copypush_terms().
|
static |
Definition at line 9113 of file view_transform.c.
References pt_dot_info::arg1, pt_union_info::arg1, parser_node::buffer_pos, parser_node::column_number, parser_node::data_type, pt_statement_info::dot, pt_spec_info::entity_name, extra_specs_frame::extra_specs, parser_node::flag, free_and_init, pt_select_info::from, pt_spec_info::id, parser_node::info, intl_identifier_casecmp(), parser_node::is_hidden_column, parser_node::line_number, pt_select_info::list, pt_name_info::meta_class, mq_new_spec(), mq_push_arg2(), mq_regenerate_if_ambiguous(), mq_reset_specs_from_column(), pt_statement_info::name, mq_lambda_arg::name_list, extra_specs_frame::next, parser_node::next, parser_node::node_type, NULL, pt_name_info::original, parser_append_node(), parser_copy_tree(), parser_copy_tree_list(), parser_free_tree(), PT_DIFFERENCE, PT_DOT_, PT_INTERSECTION, PT_IS_NULL_NODE, PT_IS_OID_NAME, PT_IS_QUERY_NODE_TYPE, PT_NAME, pt_name_equal(), PT_SELECT, PT_SHARED, PT_UNION, pt_query_info::q, pt_statement_info::query, pt_name_info::resolved, pt_query_info::select, find_id_info::spec, pt_statement_info::spec, mq_lambda_arg::spec_frames, pt_name_info::spec_id, mq_lambda_arg::tree_list, and pt_query_info::union_.
Referenced by mq_lambda().
|
static |
Definition at line 9079 of file view_transform.c.
References extra_specs_frame::extra_specs, extra_specs_frame::next, parser_node::node_type, NULL, PT_INTERNAL_ERROR, PT_SELECT, and mq_lambda_arg::spec_frames.
Referenced by mq_lambda().
|
static |
Definition at line 6600 of file view_transform.c.
References parser_node::next, parser_node::node_type, NULL, PT_INTERNAL_ERROR, PT_NAME, and pt_name_equal().
Referenced by mq_insert_symbol().
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().
|
static |
Definition at line 5921 of file view_transform.c.
References assert, pt_spec_info::entity_name, 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_name_info::location, pt_value_info::location, pt_statement_info::name, parser_node::next, parser_node::node_type, NULL, pt_spec_info::on_cond, parser_walk_tree(), PT_EXPR, PT_JOIN_INNER, PT_JOIN_LEFT_OUTER, PT_JOIN_NONE, PT_JOIN_RIGHT_OUTER, PT_NAME, PT_SELECT, PT_SPEC, PT_VALUE, pt_query_info::q, pt_statement_info::query, pt_query_info::select, find_id_info::spec, pt_statement_info::spec, and pt_statement_info::value.
Referenced by mq_translate_helper().
Definition at line 11099 of file view_transform.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, parser_node::info, parser_node::next, NULL, pt_expr_info::op, PT_DEFINE_VARIABLE, PT_EVALUATE_VARIABLE, PT_IS_EXPR_NODE, PT_IS_FUNCTION, and PT_SET_ORDER_DEPENDENT_FLAG.
Referenced by mq_translate_select().
|
static |
Definition at line 7447 of file view_transform.c.
References pt_spec_info::entity_name, pt_flat_spec_info::for_update, pt_spec_info::id, parser_node::info, pt_spec_info::meta_class, NULL, pt_spec_info::only_all, parser_new_node(), parser_walk_tree(), pt_continue_walk(), pt_flat_spec_pre(), PT_META_CLASS, pt_name(), PT_ONLY, PT_SPEC, pt_statement_info::spec, and pt_flat_spec_info::spec_parent.
Referenced by mq_lambda_node(), and mq_substitute_path().
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().
|
static |
Definition at line 7687 of file view_transform.c.
References path_lambda_info::lambda_expr, path_lambda_info::lambda_name, mq_substitute_path_pre(), path_lambda_info::new_specs, NULL, parser_walk_tree(), pt_continue_walk(), and path_lambda_info::spec_id.
Referenced by mq_translate_paths().
|
static |
Definition at line 7796 of file view_transform.c.
References pt_expr_info::arg1, parser_node::column_number, pt_statement_info::data_type, parser_node::data_type, pt_data_type_info::entity, pt_statement_info::expr, pt_spec_info::flat_entity_list, parser_node::info, parser_node::line_number, mq_reset_ids_and_references(), mq_reset_spec_distr_subpath_post(), mq_reset_spec_distr_subpath_pre(), MSGCAT_RUNTIME_VC_COMP_NOT_UPDATABL, MSGCAT_SET_PARSER_RUNTIME, pt_statement_info::name, parser_node::next, NULL, spec_reset_info::old_next, pt_name_info::original, parser_free_tree(), parser_walk_tree(), pt_spec_info::path_conjuncts, pt_spec_info::path_entities, PT_ERRORmf2, pt_statement_info::spec, spec_reset_info::statement, and spec_reset_info::sub_paths.
Referenced by mq_translate_paths().
|
static |
Definition at line 8992 of file view_transform.c.
References pt_dot_info::arg1, pt_union_info::arg1, pt_dot_info::arg2, pt_union_info::arg2, parser_node::data_type, pt_statement_info::dot, pt_select_info::from, parser_node::info, pt_select_info::list, pt_statement_info::method_call, pt_method_call_info::method_name, mq_reset_paths(), mq_translate_paths(), pt_statement_info::name, parser_node::node_type, NULL, parser_copy_tree(), parser_copy_tree_list(), parser_free_tree(), PT_DIFFERENCE, PT_DOT_, pt_find_entity(), pt_insert_entity(), PT_INTERNAL_ERROR, PT_INTERSECTION, PT_IS_QUERY_NODE_TYPE, PT_METHOD_CALL, PT_NAME, PT_SELECT, PT_UNION, pt_query_info::q, pt_statement_info::query, pt_query_info::select, find_id_info::spec, pt_name_info::spec_id, parser_node::type_enum, and pt_query_info::union_.
Referenced by mq_lambda_node().
|
static |
Definition at line 9611 of file view_transform.c.
References pt_dot_info::arg1, pt_union_info::arg1, pt_dot_info::arg2, pt_union_info::arg2, assert, parser_node::data_type, pt_statement_info::dot, pt_select_info::from, pt_spec_info::id, parser_node::info, pt_select_info::list, pt_statement_info::name, parser_node::next, parser_node::node_type, NULL, parser_append_node(), parser_copy_tree(), parser_copy_tree_list(), parser_new_node(), PT_DIFFERENCE, PT_DOT_, pt_find_entity(), pt_insert_entity(), PT_INTERNAL_ERROR, PT_INTERSECTION, PT_IS_OID_NAME, PT_NAME, PT_SELECT, PT_UNION, pt_query_info::q, pt_statement_info::query, pt_name_info::resolved, pt_query_info::select, pt_statement_info::spec, pt_name_info::spec_id, parser_node::type_enum, and pt_query_info::union_.
Referenced by mq_push_path().
|
static |
Definition at line 9772 of file view_transform.c.
References pt_expr_info::arg1, pt_spec_info::as_attr_list, parser_node::data_type, pt_spec_info::derived_table, pt_statement_info::expr, i, parser_node::info, mq_clean_dot(), mq_generate_unique(), mq_get_references(), mq_push_dot_in_query(), parser_node::next, NULL, parser_append_node(), parser_copy_tree_list(), parser_free_tree(), parser_walk_tree(), pt_spec_info::path_conjuncts, pt_spec_info::path_entities, pt_find_attribute(), PT_IS_OID_NAME, pt_lambda(), pt_spec_info::referenced_attrs, pt_statement_info::spec, and parser_node::type_enum.
Referenced by mq_push_paths_select().
|
static |
Definition at line 4696 of file view_transform.c.
References er_has_error(), er_msg(), pt_select_info::from, parser_node::info, mq_check_rewrite_select(), mq_push_paths_select(), parser_node::node_type, NULL, PT_ERROR, pt_has_error, PT_SELECT, PT_SELECT_FULL_INFO_COLS_SCHEMA, PT_SELECT_INFO_COLS_SCHEMA, PT_SELECT_INFO_IS_FLAGED, PT_SELECT_INFO_IS_MERGE_QUERY, pt_query_info::q, pt_statement_info::query, and pt_query_info::select.
Referenced by mq_translate_helper(), and mq_translate_subqueries().
|
static |
Definition at line 4519 of file view_transform.c.
References DB_AUTH_SELECT, db_is_class(), db_is_vclass(), pt_name_info::db_object, pt_spec_info::derived_table_type, pt_spec_info::flat_entity_list, parser_node::info, mq_derived_path(), mq_fetch_subqueries_for_update(), mq_push_path(), pt_statement_info::name, parser_node::next, NULL, parser_free_tree(), pt_spec_info::path_entities, PT_IS_SUBQUERY, PT_NORMAL_SELECT, and pt_statement_info::spec.
Referenced by mq_push_paths().
|
static |
Definition at line 7234 of file view_transform.c.
References PT_CONTINUE_WALK, and PT_STOP_WALK.
Referenced by mq_is_referenced().
|
static |
Definition at line 7200 of file view_transform.c.
References pt_spec_info::id, parser_node::info, pt_name_info::meta_class, pt_statement_info::name, parser_node::node_type, PT_LIST_WALK, PT_NAME, PT_STOP_WALK, PT_VCLASS, exists_info::referenced, find_id_info::spec, exists_info::spec, pt_statement_info::spec, and pt_name_info::spec_id.
Referenced by mq_is_referenced().
PT_NODE* mq_regenerate_if_ambiguous | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | spec, | ||
PT_NODE * | statement, | ||
PT_NODE * | from | ||
) |
Definition at line 8041 of file view_transform.c.
References i, parser_node::info, mq_generate_name(), mq_rename_resolved(), pt_statement_info::name, pt_name_info::original, pt_name_occurs_in_from_list(), pt_spec_info::range_var, and pt_statement_info::spec.
Referenced by mq_class_lambda(), mq_lambda_node(), mq_make_derived_spec(), pt_insert_entity(), and qo_analyze_path_join().
|
static |
Definition at line 8013 of file view_transform.c.
References pt_spec_info::id, parser_node::info, mq_coerce_resolved(), pt_statement_info::name, NULL, pt_name_info::original, parser_walk_tree(), pt_continue_walk(), pt_spec_info::range_var, pt_statement_info::spec, and pt_name_info::spec_id.
Referenced by mq_class_lambda(), and mq_regenerate_if_ambiguous().
|
static |
Definition at line 7486 of file view_transform.c.
References pt_expr_info::arg2, parser_node::data_type, pt_statement_info::expr, parser_node::info, pt_name_info::meta_class, pt_statement_info::name, parser_node::next, parser_node::node_type, NULL, parser_copy_tree(), parser_free_tree(), replace_name_info::path, PT_CONTINUE_WALK, PT_DATA_TYPE, PT_LIST_WALK, PT_NAME, PT_NORMAL, PT_OID_ATTR, PT_SHARED, PT_VID_ATTR, pt_name_info::resolved, replace_name_info::spec_id, pt_name_info::spec_id, and parser_node::type_enum.
Referenced by mq_substitute_path().
|
static |
Definition at line 4066 of file view_transform.c.
References pt_statement_info::data_type, parser_node::data_type, db_get_object(), db_make_object(), db_real_instance(), DB_TYPE_OBJECT, DB_TYPE_VOBJ, DB_VALUE_TYPE, er_msg(), error(), parser_node::info, pt_name_info::meta_class, MSGCAT_RUNTIME_OUT_OF_MEMORY, MSGCAT_SET_PARSER_RUNTIME, pt_statement_info::name, NO_ERROR, parser_node::node_type, NULL, parser_free_tree(), pt_dbval_to_value(), PT_ERRORc, PT_ERRORmf, pt_evaluate_tree_having_serial(), pt_has_error, PT_NAME, PT_NODE_MOVE_NUMBER_OUTERLINK, PT_OID_ATTR, PT_PARAMETER, PT_VID_ATTR, vid_vobj_to_object(), and pt_data_type_info::virt_object.
Referenced by mq_translate_insert().
|
static |
Definition at line 6751 of file view_transform.c.
References pt_statement_info::check_option, pt_spec_info::derived_table_type, pt_spec_info::id, parser_node::info, pt_name_info::meta_class, pt_statement_info::name, parser_node::node_type, pt_name_info::original, PT_CHECK_OPTION, PT_CLASS, PT_IS_WHACKED_SPEC, PT_NAME, PT_SPEC, PT_VCLASS, pt_spec_info::range_var, pt_name_info::resolved, find_id_info::spec, pt_statement_info::spec, pt_name_info::spec_id, pt_check_option_info::spec_id, and parser_node::spec_ident.
Referenced by mq_reset_ids(), and mq_reset_spec_ids().
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().
|
static |
Definition at line 7115 of file view_transform.c.
References mq_reset_ids_and_references_helper().
Referenced by mq_derived_path(), mq_path_spec_lambda(), mq_reset_select_spec_node(), mq_reset_spec_distr_subpath_post(), and mq_rewrite_vclass_spec_as_derived().
|
static |
Definition at line 7129 of file view_transform.c.
References pt_spec_info::derived_table_type, parser_node::info, mq_get_references_node(), mq_reset_ids(), NULL, parser_free_tree(), parser_walk_tree(), pt_continue_walk(), PT_IS_WHACKED_SPEC, pt_spec_info::referenced_attrs, and pt_statement_info::spec.
Referenced by mq_get_references_helper(), and mq_reset_ids_and_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().
|
static |
Definition at line 11740 of file view_transform.c.
References parser_node::buffer_pos, parser_node::column_number, parser_node::line_number, and NULL.
Referenced by mq_translate_subqueries().
|
static |
Definition at line 7375 of file view_transform.c.
References pt_reset_select_spec_info::id, pt_spec_info::id, parser_node::info, mq_reset_ids_and_references(), mq_reset_paths(), mq_translate_paths(), parser_node::node_type, PT_SPEC, pt_statement_info::spec, and pt_reset_select_spec_info::statement.
Referenced by mq_reset_select_specs().
|
static |
Definition at line 7399 of file view_transform.c.
References pt_select_info::from, pt_reset_select_spec_info::id, pt_spec_info::id, parser_node::info, mq_reset_select_spec_node(), parser_node::next, parser_node::node_type, NULL, parser_walk_tree(), PT_SELECT, pt_query_info::q, pt_statement_info::query, pt_query_info::select, find_id_info::spec, pt_statement_info::spec, and pt_reset_select_spec_info::statement.
Referenced by mq_reset_specs_from_column().
|
static |
Definition at line 7737 of file view_transform.c.
References pt_expr_info::arg1, pt_statement_info::expr, pt_spec_info::id, parser_node::info, mq_reset_ids_and_references(), pt_statement_info::name, parser_node::next, parser_node::node_type, NULL, spec_reset_info::old_next, pt_spec_info::path_conjuncts, pt_spec_info::path_entities, PT_CONTINUE_WALK, pt_find_id(), PT_NAME, PT_SPEC, find_id_info::spec, pt_statement_info::spec, pt_name_info::spec_id, spec_reset_info::statement, and spec_reset_info::sub_paths.
Referenced by mq_class_lambda(), and mq_path_spec_lambda().
|
static |
Definition at line 7712 of file view_transform.c.
References spec_reset_info::old_next, PT_CONTINUE_WALK, PT_STOP_WALK, and find_id_info::spec.
Referenced by mq_class_lambda(), and mq_path_spec_lambda().
|
static |
Definition at line 6912 of file view_transform.c.
References pt_statement_info::delete_, pt_select_info::from, parser_node::info, pt_statement_info::insert, pt_merge_info::into, pt_node_list_info::list, pt_statement_info::merge, mq_reset_all_ids(), mq_reset_ids(), mq_set_references(), parser_node::next, pt_statement_info::node_list, parser_node::node_type, NULL, pt_insert_info::odku_assignments, parser_walk_tree(), PT_DELETE, PT_INSERT, PT_MERGE, PT_SELECT, PT_UPDATE, pt_query_info::q, pt_statement_info::query, pt_query_info::select, find_id_info::spec, pt_delete_info::spec, pt_update_info::spec, pt_statement_info::update, pt_merge_info::using_clause, and pt_insert_info::value_clauses.
Referenced by mq_reset_ids_in_statement().
|
static |
Definition at line 6996 of file view_transform.c.
References if(), parser_node::info, pt_statement_info::method_call, pt_method_call_info::method_name, pt_statement_info::name, parser_node::node_type, PT_METHOD_CALL, PT_NAME, find_id_info::spec, and pt_name_info::spec_id.
Referenced by mq_reset_ids_in_methods().
|
static |
Definition at line 7432 of file view_transform.c.
References mq_reset_select_specs(), NULL, and parser_walk_tree().
Referenced by mq_lambda_node().
|
static |
Definition at line 4017 of file view_transform.c.
References pt_insert_info::attr_list, parser_node::info, pt_statement_info::insert, mq_clear_other_ids(), mq_reset_ids(), parser_node::next, NULL, pt_insert_info::odku_assignments, parser_walk_tree(), pt_check_odku_assignments(), pt_has_error, pt_resolve_names(), and pt_insert_info::spec.
Referenced by mq_translate_insert().
|
static |
Definition at line 723 of file view_transform.c.
References pt_dot_info::arg2, pt_function_info::arg_list, pt_spec_info::as_attr_list, parser_node::column_number, pt_query_info::correlation_level, parser_node::data_type, pt_agg_rewrite_info::depth, pt_agg_rewrite_info::derived_select, pt_statement_info::dot, parser_node::flag, pt_agg_rewrite_info::from, pt_statement_info::function, pt_function_info::function_type, i, pt_spec_info::id, parser_node::info, parser_node::is_hidden_column, parser_node::line_number, pt_select_info::list, pt_agg_name_info::max_level, pt_name_info::meta_class, mq_generate_name(), mq_insert_symbol(), mq_rewrite_agg_names_post(), pt_statement_info::name, pt_agg_name_info::name_count, pt_agg_rewrite_info::new_from, parser_node::next, parser_node::node_type, NULL, parser_append_node(), parser_copy_tree_list(), parser_free_tree(), parser_walk_tree(), PT_CONTINUE_WALK, pt_continue_walk(), PT_COUNT_STAR, PT_DATA_TYPE, PT_DIFFERENCE, PT_DOT_, pt_find_aggregate_names(), pt_find_entity(), PT_FUNCTION, PT_GROUPBY_NUM, PT_INTERSECTION, pt_is_aggregate_function(), pt_is_query, pt_is_set_type, PT_LEAF_WALK, PT_LIST_WALK, PT_META_ATTR, PT_META_CLASS, PT_METHOD, pt_name(), PT_NAME, pt_name_equal(), PT_NORMAL, PT_OID_ATTR, pt_pointer_stack_push(), PT_SELECT, PT_SHARED, PT_STOP_WALK, PT_UNION, PT_VID_ATTR, pt_query_info::q, pt_statement_info::query, pt_query_info::select, pt_agg_rewrite_info::select_stack, pt_agg_name_info::select_stack, pt_statement_info::spec, pt_name_info::spec_id, find_id_info::type, and parser_node::type_enum.
Referenced by mq_rewrite_aggregate_as_derived().
|
static |
Definition at line 977 of file view_transform.c.
References pt_agg_rewrite_info::depth, parser_node::node_type, NULL, PT_CONTINUE_WALK, PT_DIFFERENCE, PT_INTERSECTION, pt_pointer_stack_pop(), PT_SELECT, PT_UNION, and pt_agg_rewrite_info::select_stack.
Referenced by mq_rewrite_agg_names(), and mq_rewrite_aggregate_as_derived().
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().
|
static |
Definition at line 11167 of file view_transform.c.
References pt_expr_info::arg1, pt_expr_info::arg2, pt_expr_info::arg3, pt_function_info::arg_list, pt_spec_info::as_attr_list, parser_node::data_type, pt_spec_info::derived_table, parser_node::etc, pt_statement_info::expr, parser_node::flag, pt_select_info::from, pt_statement_info::function, pt_spec_info::id, parser_node::info, parser_node::is_hidden_column, pt_select_info::list, pt_name_info::meta_class, mq_generate_name(), pt_statement_info::name, parser_node::next, parser_node::node_type, NULL, pt_name_info::original, parser_append_node(), parser_copy_tree(), pt_has_error, PT_INTERNAL_ERROR, PT_IS_EXPR_NODE, PT_IS_FUNCTION, PT_IS_ORDER_DEPENDENT, PT_MISC_NONE, pt_name(), PT_NAME, pt_name_equal(), PT_SELECT, PT_VALUE, 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 mq_rewrite_order_dependent_query().
|
static |
Definition at line 11360 of file view_transform.c.
References pt_spec_info::as_attr_list, pt_query_info::correlation_level, parser_node::data_type, pt_value_info::data_value, pt_spec_info::derived_table, pt_spec_info::derived_table_type, parser_node::etc, pt_sort_spec_info::expr, parser_node::flag, pt_select_info::from, pt_data_value::i, pt_spec_info::id, parser_node::info, parser_node::is_hidden_column, pt_query_info::is_subquery, pt_spec_info::join_type, pt_select_info::list, mq_generate_name(), mq_rewrite_order_dependent_nodes(), MSGCAT_SEMANTIC_OUT_OF_MEMORY, MSGCAT_SET_PARSER_SEMANTIC, pt_statement_info::name, parser_node::next, parser_node::node_type, NULL, pt_query_info::oids_included, pt_query_info::order_by, pt_name_info::original, parser_append_node(), parser_copy_tree(), parser_new_node(), pt_sort_spec_info::pos_descr, qfile_tuple_value_position::pos_no, PT_ERRORm, PT_INTERNAL_ERROR, PT_IS_ORDER_DEPENDENT, PT_IS_SUBQUERY, PT_JOIN_NONE, pt_name(), PT_NAME, PT_SELECT, PT_SET_ORDER_DEPENDENT_FLAG, PT_SORT_SPEC, PT_SPEC, pt_query_info::q, pt_statement_info::query, pt_spec_info::range_var, pt_name_info::resolved, pt_query_info::scan_op_type, pt_query_info::select, pt_statement_info::sort_spec, pt_statement_info::spec, pt_name_info::spec_id, parser_node::type_enum, and pt_statement_info::value.
Referenced by mq_translate_select().
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().
|
static |
Definition at line 6094 of file view_transform.c.
References assert, pt_merge_info::assignment, DB_AUTH_SELECT, pt_statement_info::delete_, pt_spec_info::flat_entity_list, pt_merge_info::has_delete, parser_node::info, pt_statement_info::insert, pt_merge_info::into, pt_statement_info::merge, mq_check_vclass_for_insert(), mq_fetch_subqueries(), mq_fetch_subqueries_for_update(), mq_rewrite_vclass_spec_as_derived(), mq_translatable_class(), MSGCAT_SEMANTIC_MULTIPLE_INSERT_TARGETS, MSGCAT_SET_PARSER_SEMANTIC, parser_node::next, parser_node::node_type, NULL, PT_DELETE, PT_ERRORm, PT_INSERT, pt_mark_spec_list_for_delete(), pt_mark_spec_list_for_update(), PT_MERGE, PT_PARTIAL_SELECT, PT_SPEC_FLAG_DELETE, PT_SPEC_FLAG_UPDATE, PT_SPEC_IS_CTE, PT_SPEC_IS_DERIVED, PT_UPDATE, find_id_info::spec, pt_delete_info::spec, pt_insert_info::spec, pt_update_info::spec, pt_statement_info::spec, pt_merge_info::update, and pt_statement_info::update.
Referenced by mq_translate_helper().
|
static |
Definition at line 3330 of file view_transform.c.
References pt_select_info::after_cb_filter, pt_spec_info::as_attr_list, find_id_info::attr_list, parser_node::cannot_prepare, pt_select_info::check_cycles, pt_select_info::connect_by, pt_spec_info::derived_table, pt_spec_info::derived_table_type, pt_spec_info::entity_name, er_has_error(), pt_spec_info::except_list, FIND_ID_VCLASS, pt_spec_info::flag, pt_query_info::flag, parser_node::flag, pt_spec_info::flat_entity_list, pt_select_info::from, pt_spec_info::id, find_id_info::in, parser_node::info, parser_node::is_hidden_column, pt_query_info::is_subquery, parser_node::is_value_query, pt_spec_info::join_type, pt_select_info::list, mq_copypush_sargable_terms_helper(), mq_fetch_attributes(), mq_fetch_subqueries(), mq_get_references(), mq_insert_symbol(), mq_reset_ids_and_references(), pt_statement_info::name, parser_node::next, parser_node::node_type, NULL, pt_spec_info::on_cond, find_id_info::others_spec_list, parser_copy_tree(), parser_copy_tree_list(), parser_free_tree(), parser_new_node(), pt_spec_info::path_entities, pt_has_error, PT_INTERNAL_ERROR, PT_IS_SELECT, PT_IS_SUBQUERY, PT_IS_VALUE_QUERY, PT_JOIN_NONE, PT_SELECT, PT_SPEC, PT_SPEC_FLAG_FROM_VCLASS, PT_TYPE_OBJECT, pt_query_info::q, pt_statement_info::query, find_id_info::query_list, pt_query_info::select, pt_select_info::single_table_opt, find_id_info::spec, pt_statement_info::spec, pt_name_info::spec_id, pt_select_info::start_with, find_id_info::type, parser_node::type_enum, and pt_query_info::vspec_as_derived.
Referenced by mq_check_rewrite_select(), mq_rewrite_upd_del_top_level_specs(), and mq_substitute_subquery_in_statement().
|
static |
Definition at line 6726 of file view_transform.c.
References pt_spec_info::id, parser_node::info, pt_statement_info::name, parser_node::node_type, pt_name_info::original, PT_NAME, pt_spec_info::range_var, pt_name_info::resolved, find_id_info::spec, pt_statement_info::spec, pt_name_info::spec_id, and parser_node::spec_ident.
Referenced by mq_oid().
|
static |
Definition at line 10203 of file view_transform.c.
References pt_name_info::db_object, set_names_info::id, parser_node::info, pt_name_info::meta_class, pt_statement_info::name, parser_node::node_type, set_names_info::object, PT_DATA_TYPE, PT_LIST_WALK, PT_NAME, PT_PARAMETER, PT_SPEC, PT_STOP_WALK, and pt_name_info::spec_id.
Referenced by mq_evaluate_expression(), and mq_evaluate_expression_having_serial().
|
static |
Definition at line 5660 of file view_transform.c.
References pt_union_info::arg1, pt_union_info::arg2, pt_function_info::arg_list, pt_statement_info::data_type, parser_node::data_type, db_get_class_name(), db_make_string(), pt_name_info::db_object, pt_data_type_info::entity, F_SEQUENCE, pt_statement_info::function, pt_function_info::function_type, parser_node::info, pt_select_info::list, pt_statement_info::name, parser_node::node_type, NULL, pr_clear_value(), pt_dbval_to_value(), PT_DIFFERENCE, PT_FUNCTION, PT_INTERSECTION, PT_IS_VALUE_QUERY, PT_SELECT, PT_TYPE_OBJECT, PT_TYPE_SEQUENCE, PT_UNION, pt_query_info::q, pt_statement_info::query, pt_query_info::select, parser_node::type_enum, pt_query_info::union_, pt_data_type_info::virt_object, and pt_data_type_info::virt_type_enum.
Referenced by mq_virtual_queries().
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().
|
static |
Definition at line 7318 of file view_transform.c.
References parser_node::info, mq_get_references_node(), parser_node::next, NULL, parser_free_tree(), parser_walk_tree(), pt_spec_info::path_entities, pt_continue_walk(), pt_spec_info::referenced_attrs, and pt_statement_info::spec.
Referenced by mq_set_references().
|
static |
Definition at line 5147 of file view_transform.c.
References pt_union_info::arg1, pt_union_info::arg2, assert, pt_select_info::check_where, pt_statement_info::data_type, parser_node::data_type, db_get_class_name(), db_is_vclass(), pt_name_info::db_object, pt_data_type_info::entity, parser_node::flag, pt_spec_info::flat_entity_list, pt_select_info::from, parser_node::info, parser_node::is_hidden_column, pt_node_list_info::list, pt_select_info::list, pt_name_info::meta_class, MSGCAT_RUNTIME_ATTRS_GT_QSPEC_COLS, MSGCAT_RUNTIME_QSPEC_COLS_GT_ATTRS, MSGCAT_RUNTIME_QSPEC_INCOMP_W_ATTR, MSGCAT_SET_PARSER_RUNTIME, pt_statement_info::name, parser_node::next, pt_statement_info::node_list, parser_node::node_type, NULL, pt_name_info::original, parser_copy_tree(), parser_copy_tree_list(), parser_free_tree(), pt_coerce_value(), PT_DIFFERENCE, PT_ERRORmf, PT_INTERSECTION, PT_IS_VALUE_QUERY, PT_NAME, PT_NODE_LIST, PT_OID_ATTR, PT_SELECT, PT_SHARED, pt_type_cast_vclass_query_spec_column(), PT_TYPE_NA, PT_TYPE_NULL, PT_TYPE_OBJECT, PT_UNION, PT_VALUE, PT_VID_ATTR, pt_query_info::q, pt_statement_info::query, pt_query_info::select, pt_statement_info::spec, parser_node::type_enum, pt_query_info::union_, pt_data_type_info::virt_object, pt_name_info::virt_object, and pt_select_info::where.
Referenced by mq_translate_subqueries().
|
static |
Definition at line 641 of file view_transform.c.
References pt_union_info::arg1, pt_union_info::arg2, assert, parser_node::info, pt_query_info::is_subquery, parser_node::node_type, PT_DIFFERENCE, PT_INTERSECTION, PT_SELECT, PT_UNION, pt_query_info::q, pt_statement_info::query, and pt_query_info::union_.
Referenced by mq_translate_helper(), and mq_translate_local().
|
static |
Definition at line 9347 of file view_transform.c.
References pt_statement_info::data_type, parser_node::data_type, db_is_vclass(), pt_data_type_info::entity, pt_spec_info::id, parser_node::info, mq_fetch_one_real_class_get_cache(), mq_is_updatable(), pt_statement_info::name, parser_node::node_type, NULL, parser_copy_tree_list(), parser_free_tree(), PT_META_CLASS, PT_NAME, PT_TYPE_OBJECT, find_id_info::spec, pt_statement_info::spec, pt_name_info::spec_id, parser_node::type_enum, and pt_data_type_info::virt_object.
Referenced by mq_derived_path(), and mq_fix_derived().
|
static |
Definition at line 7537 of file view_transform.c.
References pt_expr_info::arg1, pt_expr_info::arg2, parser_node::column_number, parser_node::data_type, db_get_class_name(), pt_name_info::db_object, pt_statement_info::expr, pt_spec_info::id, parser_node::info, path_lambda_info::lambda_expr, parser_node::line_number, pt_name_info::meta_class, mq_new_spec(), mq_replace_name_with_path(), pt_statement_info::name, path_lambda_info::new_specs, parser_node::next, parser_node::node_type, NULL, pt_expr_info::paren_type, parser_append_node(), parser_copy_tree(), parser_free_tree(), parser_walk_tree(), replace_name_info::path, pt_continue_walk(), PT_EXPR, PT_INTERNAL_ERROR, PT_IS_OID_NAME, PT_NAME, PT_SHARED, pt_name_info::resolved, pt_statement_info::spec, path_lambda_info::spec_id, replace_name_info::spec_id, and pt_name_info::spec_id.
Referenced by mq_substitute_path_pre().
|
static |
Definition at line 7633 of file view_transform.c.
References pt_dot_info::arg2, pt_statement_info::dot, parser_node::info, path_lambda_info::lambda_expr, path_lambda_info::lambda_name, mq_substitute_path(), parser_node::next, parser_node::node_type, NULL, parser_copy_tree(), parser_free_tree(), PT_CONTINUE_WALK, PT_DOT_, PT_INTERNAL_ERROR, PT_LIST_WALK, PT_NAME, and pt_name_equal().
Referenced by mq_path_name_lambda().
|
static |
Definition at line 1214 of file view_transform.c.
References assert, pt_select_info::check_where, parser_node::flag, pt_select_info::from, pt_select_info::group_by, pt_select_info::having, pt_spec_info::id, parser_node::info, parser_node::is_hidden_column, pt_node_list_info::list, pt_select_info::list, mq_class_lambda(), mq_fetch_attributes(), mq_lambda(), mq_substitute_spec_in_method_names(), MSGCAT_RUNTIME_ATTRS_GT_QSPEC_COLS, MSGCAT_RUNTIME_QSPEC_COLS_GT_ATTRS, MSGCAT_SET_PARSER_RUNTIME, pt_statement_info::name, PT_RESOLVE_METHOD_NAME_INFO::new_id, parser_node::next, pt_statement_info::node_list, parser_node::node_type, NULL, PT_RESOLVE_METHOD_NAME_INFO::old_id, pt_name_info::original, parser_walk_tree(), PT_ERRORmf, PT_INTERNAL_ERROR, PT_IS_VALUE_QUERY, PT_NODE_LIST, PT_SELECT, PT_SELECT_INFO_HAS_AGG, PT_SELECT_INFO_IS_FLAGED, PT_SELECT_INFO_SET_FLAG, pt_query_info::q, pt_statement_info::query, pt_query_info::select, pt_statement_info::spec, pt_name_info::spec_id, and pt_select_info::where.
Referenced by mq_substitute_subquery_in_statement().
|
static |
Definition at line 1317 of file view_transform.c.
References parser_node::info, pt_statement_info::method_call, pt_method_call_info::method_name, pt_statement_info::name, PT_RESOLVE_METHOD_NAME_INFO::new_id, parser_node::node_type, PT_RESOLVE_METHOD_NAME_INFO::old_id, PT_METHOD_CALL, and pt_name_info::spec_id.
Referenced by mq_substitute_select_in_statement().
|
static |
Definition at line 1607 of file view_transform.c.
References pt_query_info::all_distinct, pt_union_info::arg1, pt_union_info::arg2, assert, pt_statement_info::delete_, pt_spec_info::derived_table, pt_spec_info::entity_name, pt_query_info::flag, pt_spec_info::flat_entity_list, pt_select_info::from, pt_select_info::having, pt_select_info::hint, pt_query_info::id, pt_select_info::index_ls, pt_select_info::index_ss, parser_node::info, pt_statement_info::insert, pt_merge_info::into, pt_query_info::limit, pt_statement_info::merge, mq_is_outer_join_spec(), mq_is_pushable_subquery(), mq_reset_ids_in_methods(), mq_rewrite_vclass_spec_as_derived(), mq_substitute_select_in_statement(), mq_union_bump_correlation(), mq_update_order_by(), MSGCAT_RUNTIME_REL_RESTRICTS_AGG_2, MSGCAT_SET_PARSER_RUNTIME, pt_statement_info::name, parser_node::next, parser_node::node_type, NULL, pt_query_info::order_by, pt_query_info::order_siblings, pt_query_info::orderby_for, pt_select_info::ordered, parser_append_node(), parser_copy_tree(), parser_copy_tree_list(), parser_free_tree(), PT_DELETE, PT_DIFFERENCE, PT_DISTINCT, PT_ERRORm, pt_find_spec(), pt_has_aggregate(), pt_has_error, PT_HINT_INDEX_LS, PT_HINT_INDEX_SS, PT_INSERT, PT_INTERNAL_ERROR, PT_INTERSECTION, PT_IS_QUERY, PT_IS_VALUE_QUERY, PT_MERGE, PT_SELECT, PT_SPEC, PT_UNION, PT_UPDATE, pt_query_info::q, pt_statement_info::query, pt_query_info::rewrite_limit, pt_query_info::select, pt_delete_info::spec, pt_insert_info::spec, pt_update_info::spec, pt_statement_info::spec, pt_name_info::spec_id, pt_query_info::union_, pt_statement_info::update, pt_select_info::use_idx, pt_select_info::use_merge, pt_select_info::use_nl, pt_delete_info::using_index, pt_select_info::using_index, pt_update_info::using_index, and pt_select_info::where.
Referenced by mq_substitute_subquery_list_in_statement().
|
static |
Definition at line 2116 of file view_transform.c.
References er_errid_if_has_error(), mq_substitute_subquery_in_statement(), parser_node::next, NO_ERROR, NULL, parser_append_node(), and pt_has_error.
Referenced by mq_translate_tree().
|
static |
Definition at line 2149 of file view_transform.c.
References db_is_vclass(), pt_name_info::db_object, parser_node::info, pt_name_info::meta_class, pt_statement_info::name, PT_CLASSOID_ATTR, and PT_META_CLASS.
Referenced by mq_is_union_translation(), mq_rewrite_upd_del_top_level_specs(), and mq_translate_tree().
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().
|
static |
Definition at line 4402 of file view_transform.c.
References DB_AUTH_DELETE, pt_statement_info::delete_, parser_node::info, mq_check_delete(), mq_translate_tree(), MSGCAT_RUNTIME_DELETE_EMPTY, MSGCAT_SET_PARSER_RUNTIME, NULL, PT_ERRORm, pt_has_error, pt_mark_spec_list_for_delete(), and pt_delete_info::spec.
Referenced by mq_translate_local().
|
static |
Definition at line 6231 of file view_transform.c.
References pt_union_info::arg1, pt_union_info::arg2, semantic_chk_info::donot_fold, err, parser_node::info, pt_query_info::is_subquery, mq_auto_param_merge_clauses(), mq_bump_order_dep_corr_lvl(), mq_check_non_updatable_vclass_oid(), mq_mark_location(), mq_optimize(), mq_push_paths(), mq_rewrite_upd_del_top_level_specs(), mq_set_union_query(), mq_translate_local(), parser_node::next, NO_ERROR, parser_node::node_type, NULL, parser_walk_tree(), PT_DELETE, PT_DIFFERENCE, PT_DO, pt_for_update_prepare_query(), pt_has_error, PT_INSERT, PT_INTERSECTION, PT_IS_UNION_QUERY, PT_MERGE, PT_SELECT, PT_SELECT_INFO_IS_FLAGED, PT_SELECT_INFO_NO_STRICT_OID_CHECK, pt_semantic_type(), PT_UNION, PT_UPDATE, pt_query_info::q, pt_statement_info::query, semantic_chk_info::top_node, and pt_query_info::union_.
Referenced by mq_translate().
|
static |
Definition at line 4134 of file view_transform.c.
References assert, pt_insert_info::attr_list, DB_AUTH_INSERT, DB_AUTH_INSERT_UPDATE, DB_AUTH_REPLACE, db_is_class(), pt_name_info::db_object, pt_spec_info::derived_table, pt_spec_info::derived_table_type, pt_insert_info::do_replace, semantic_chk_info::donot_fold, parser_node::etc, pt_spec_info::flat_entity_list, pt_select_info::from, parser_node::info, pt_statement_info::insert, insert_rewrite_names_in_value_clauses(), is_class(), pt_insert_info::is_subinsert, pt_node_list_info::list, pt_node_list_info::list_type, mq_clear_other_ids(), mq_replace_virtual_oid_with_real_oid(), mq_resolve_insert_statement(), mq_translate_tree(), MSGCAT_RUNTIME_INSERT_EMPTY, MSGCAT_SET_PARSER_RUNTIME, pt_statement_info::name, parser_node::next, pt_statement_info::node_list, NULL, pt_insert_info::odku_assignments, parser_copy_tree(), parser_free_tree(), parser_new_node(), parser_walk_tree(), pt_check_odku_assignments(), PT_ERRORm, pt_get_subquery_of_insert_select(), pt_has_error, PT_INSERT, PT_INTERNAL_ERROR, PT_IS_SELECT, PT_IS_SUBINSERT, PT_IS_SUBQUERY, PT_IS_VALUE, pt_no_double_insert_assignments(), pt_resolve_names(), pt_semantic_type(), PT_TYPE_NULL, PT_VALUE, pt_query_info::q, pt_statement_info::query, pt_query_info::select, pt_insert_info::spec, pt_statement_info::spec, semantic_chk_info::top_node, and pt_insert_info::value_clauses.
Referenced by mq_translate_local().
|
static |
Definition at line 4752 of file view_transform.c.
References pt_union_info::arg1, pt_union_info::arg2, assert, parser_node::column_number, pt_statement_info::delete_, pt_spec_info::derived_table, pt_select_info::from, parser_node::info, pt_query_info::is_subquery, parser_node::line_number, mq_check_using_index(), mq_has_class_methods_corr_subqueries(), mq_rewrite_aggregate_as_derived(), mq_set_union_query(), mq_translate_delete(), mq_translate_insert(), mq_translate_merge(), mq_translate_select(), mq_translate_update(), parser_node::next, NO_ERROR, parser_node::node_type, NULL, parser_append_node(), PT_DELETE, PT_DIFFERENCE, pt_has_aggregate(), pt_has_error, PT_INSERT, PT_INTERSECTION, PT_IS_SUBQUERY, PT_IS_UNION_SUBQUERY, PT_MERGE, pt_resolve_using_index(), PT_SELECT, PT_SPEC_IS_DERIVED, PT_UNION, PT_UPDATE, pt_query_info::q, pt_statement_info::query, pt_query_info::select, find_id_info::spec, pt_delete_info::spec, pt_update_info::spec, pt_statement_info::spec, pt_query_info::union_, pt_statement_info::update, pt_delete_info::using_index, pt_select_info::using_index, and pt_update_info::using_index.
Referenced by mq_translate_helper(), and mq_translate_subqueries().
|
static |
Definition at line 4452 of file view_transform.c.
References pt_merge_info::assignment, DB_AUTH_DELETE, DB_AUTH_INSERT, DB_AUTH_NONE, DB_AUTH_UPDATE, semantic_chk_info::donot_fold, pt_spec_info::flat_entity_list, pt_merge_info::has_delete, parser_node::info, pt_merge_info::insert, pt_merge_info::into, pt_statement_info::merge, mq_check_merge(), mq_translate_tree(), NULL, pt_mark_spec_list_for_delete(), pt_mark_spec_list_for_update(), pt_semantic_type(), pt_statement_info::spec, semantic_chk_info::top_node, pt_merge_info::update, and pt_merge_info::value_clauses.
Referenced by mq_translate_local().
|
static |
Definition at line 7876 of file view_transform.c.
References pt_expr_info::arg1, pt_statement_info::data_type, parser_node::data_type, DB_AUTH_SELECT, db_is_class(), db_is_vclass(), pt_name_info::db_object, pt_data_type_info::entity, pt_statement_info::expr, pt_spec_info::flat_entity_list, pt_select_info::from, pt_spec_info::id, parser_node::info, pt_spec_info::meta_class, pt_name_info::meta_class, mq_fetch_expression_for_real_class_update(), mq_fetch_select_for_real_class_update(), mq_get_references(), mq_path_name_lambda(), mq_path_spec_lambda(), pt_statement_info::name, parser_node::next, NULL, parser_append_node(), parser_copy_tree_list(), parser_free_tree(), pt_spec_info::path_conjuncts, pt_spec_info::path_entities, PT_CLASS, PT_INTERNAL_ERROR, PT_NORMAL_SELECT, PT_PATH_INNER, pt_query_info::q, pt_statement_info::query, pt_query_info::select, pt_statement_info::spec, and pt_name_info::spec_id.
Referenced by mq_class_lambda(), mq_fix_derived(), mq_push_arg2(), and mq_reset_select_spec_node().
|
static |
Definition at line 3814 of file view_transform.c.
References pt_query_info::all_distinct, DB_AUTH_SELECT, er_has_error(), er_msg(), pt_select_info::from, parser_node::info, pt_query_info::into_list, pt_select_info::list, mq_is_order_dependent_node(), mq_mark_order_dependent_nodes(), mq_reset_ids_in_statement(), mq_rewrite_aggregate_as_derived(), mq_rewrite_order_dependent_query(), mq_translate_tree(), parser_node::next, parser_node::node_type, NULL, pt_query_info::order_by, pt_sort_spec_info::pos_descr, qfile_tuple_value_position::pos_no, PT_ALL, PT_DISTINCT, PT_ERROR, pt_has_aggregate(), pt_has_analytic(), pt_has_error, PT_SELECT, pt_query_info::q, pt_statement_info::query, pt_query_info::select, and pt_statement_info::sort_spec.
Referenced by mq_translate_local().
|
static |
Definition at line 5408 of file view_transform.c.
References pt_select_info::check_where, db_get_query_specs(), db_is_class(), db_query_spec_next(), db_query_spec_string(), parser_node::info, mq_add_dummy_from_pre(), mq_compute_query_authorization(), mq_push_paths(), mq_reset_references_to_query_string(), mq_set_types(), mq_translate_local(), parser_node::node_type, NULL, parser_copy_tree_list(), parser_parse_string_use_sys_charset(), parser_walk_tree(), pt_add_row_oid_name(), pt_compile(), PT_SELECT, pt_set_is_view_spec(), pt_union(), pt_query_info::q, pt_statement_info::query, pt_query_info::select, SM_CLASSFLAG_LOCALCHECKOPTION, SM_CLASSFLAG_WITHCHECKOPTION, sm_get_class_flag(), and pt_select_info::where.
Referenced by mq_virtual_queries().
|
static |
Definition at line 2319 of file view_transform.c.
References assert, pt_spec_info::auth_bypass_mask, parser_node::cannot_prepare, DB_AUTH_DELETE, DB_AUTH_NONE, DB_AUTH_SELECT, DB_AUTH_UPDATE, db_check_authorization(), db_get_class_name(), pt_name_info::db_object, pt_spec_info::derived_table_type, er_errid_if_has_error(), pt_spec_info::flag, parser_node::flag, pt_spec_info::flat_entity_list, get_authorization_name(), pt_spec_info::id, parser_node::info, pt_spec_info::meta_class, mq_check_authorization_path_entities(), mq_check_subqueries_for_prepare(), mq_class_lambda(), mq_fetch_subqueries(), mq_fetch_subqueries_for_update(), mq_fix_derived_in_union(), mq_reset_ids_in_statement(), mq_substitute_subquery_list_in_statement(), mq_translatable_class(), mq_union_bump_correlation(), MSGCAT_RUNTIME_IS_NOT_AUTHORIZED_ON, MSGCAT_SET_PARSER_RUNTIME, pt_statement_info::name, parser_node::next, NO_ERROR, parser_node::node_type, NULL, pt_query_info::order_by, pt_name_info::original, parser_append_node(), parser_copy_tree(), parser_copy_tree_list(), parser_free_tree(), parser_print_tree_list(), PT_DIFFERENCE, pt_entity(), PT_ERRORmf2, pt_has_error, PT_INTERSECTION, PT_IS_SELECT, PT_IS_WHACKED_SPEC, PT_MERGE, PT_META_CLASS, PT_NODE_COPY_NUMBER_OUTERLINK, PT_NORMAL_SELECT, PT_PARTIAL_SELECT, PT_SELECT, PT_SELECT_FULL_INFO_COLS_SCHEMA, PT_SELECT_INFO_COLS_SCHEMA, PT_SELECT_INFO_IS_FLAGED, PT_SPEC_FLAG_DELETE, PT_SPEC_FLAG_UPDATE, PT_SPEC_IS_DERIVED, PT_UNION, pt_statement_info::query, pt_spec_info::range_var, pt_name_info::resolved, and pt_statement_info::spec.
Referenced by mq_translate_delete(), mq_translate_insert(), mq_translate_merge(), mq_translate_select(), and mq_translate_update().
|
static |
Definition at line 3984 of file view_transform.c.
References DB_AUTH_UPDATE, parser_node::info, mq_check_update(), mq_translate_tree(), MSGCAT_RUNTIME_UPDATE_EMPTY, MSGCAT_SET_PARSER_RUNTIME, NULL, PT_ERRORm, pt_has_error, pt_mark_spec_list_for_update(), pt_update_info::spec, and pt_statement_info::update.
Referenced by mq_translate_local().
|
static |
Definition at line 9569 of file view_transform.c.
References pt_statement_info::data_type, parser_node::data_type, pt_value_info::data_value, db_get_class(), db_get_class_name(), db_is_vclass(), db_make_object(), pt_name_info::db_object, db_real_instance(), pt_data_type_info::entity, parser_node::info, pt_statement_info::name, parser_node::node_type, pt_data_value::op, pt_name_info::original, PT_NAME, PT_TYPE_OBJECT, PT_VALUE, pt_value_to_db(), parser_node::type_enum, pt_statement_info::value, and pt_data_type_info::virt_object.
Referenced by mq_class_lambda(), and mq_invert_insert_select().
|
static |
Definition at line 536 of file view_transform.c.
References pt_query_info::correlation_level, parser_node::info, mq_bump_correlation_level(), pt_union(), and pt_statement_info::query.
Referenced by mq_substitute_subquery_in_statement(), and mq_translate_tree().
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().
|
static |
Definition at line 1062 of file view_transform.c.
References pt_query_info::all_distinct, pt_union_info::arg1, pt_union_info::arg2, pt_select_info::connect_by, pt_spec_info::derived_table, pt_spec_info::flag, pt_spec_info::flat_entity_list, pt_select_info::from, pt_select_info::group_by, pt_select_info::having, i, parser_node::info, mq_conditionally_add_objects(), parser_node::next, parser_node::node_type, NULL, PT_DISTINCT, pt_has_aggregate(), pt_has_analytic(), PT_NOT_UPDATABLE, PT_PARTIALLY_UPDATABLE, PT_SELECT, PT_SELECT_INFO_IS_FLAGED, PT_SELECT_INFO_READ_ONLY, PT_SPEC_FLAG_FROM_VCLASS, PT_UNION, PT_UPDATABLE, pt_query_info::q, pt_statement_info::query, pt_query_info::select, sm_is_reuse_oid_class(), sm_is_system_class(), find_id_info::spec, pt_statement_info::spec, and pt_query_info::union_.
Referenced by mq_updatable().
int mq_update_attribute | ( | DB_OBJECT * | vclass_object, |
const char * | attr_name, | ||
DB_OBJECT * | real_class_object, | ||
DB_VALUE * | virtual_value, | ||
DB_VALUE * | real_value, | ||
const char ** | real_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().
|
static |
Definition at line 1465 of file view_transform.c.
References assert, db_value::data, parser_node::data_type, pt_value_info::data_value, pt_value_info::db_value, pt_sort_spec_info::expr, parser_node::flag, i, db_data::i, pt_data_value::i, parser_node::info, parser_node::is_hidden_column, pt_select_info::list, mq_fetch_attributes(), pt_statement_info::name, parser_node::next, parser_node::node_type, NULL, pt_query_info::order_by, parser_append_node(), parser_copy_tree(), parser_copy_tree_list(), pt_sort_spec_info::pos_descr, qfile_tuple_value_position::pos_no, PT_INTERNAL_ERROR, PT_NAME, pt_name_equal(), PT_SELECT, PT_SORT_SPEC, PT_VALUE, pt_query_info::q, pt_statement_info::query, pt_query_info::select, pt_statement_info::sort_spec, pt_name_info::spec_id, pt_value_info::text, and pt_statement_info::value.
Referenced by mq_substitute_subquery_in_statement().
PARSER_CONTEXT* mq_virtual_queries | ( | DB_OBJECT * | class_object | ) |
Definition at line 5770 of file view_transform.c.
References view_cache_info::attrs, AU_SET_USER, view_cache_info::authorization, DB_AUTH_ALL, db_get_class_name(), db_get_owner(), db_get_user(), pt_name_info::db_object, EXCLUDE_HIDDEN_COLUMNS, parser_node::info, view_cache_info::inverted_vquery_for_update, view_cache_info::inverted_vquery_for_update_in_gdb, pt_select_info::list, MAX_CYCLE, mq_check_cycle(), mq_compute_authorization(), mq_flatten_union(), mq_invert_subqueries(), mq_set_non_updatable_oid(), mq_translate_subqueries(), mq_updatable(), MSGCAT_RUNTIME_CYCLIC_QUERY_SPEC, MSGCAT_SET_PARSER_RUNTIME, pt_statement_info::name, view_cache_info::nested_views, NULL, view_cache_info::number_of_attrs, parser_context::oid_included, parser, parser_alloc(), parser_copy_tree(), parser_copy_tree_list(), parser_create_parser(), parser_free_tree(), parser_parse_string(), pt_add_row_oid_name(), pt_compile(), PT_ERRORmf, pt_has_error, PT_INCLUDE_OID_TRUSTME, PT_INTERNAL_ERROR, pt_length_of_select_list(), PT_PARTIALLY_UPDATABLE, PT_UPDATABLE, pt_query_info::q, pt_statement_info::query, pt_query_info::select, top_cycle, parser_context::view_cache, view_cache_info::vquery_for_partial_update, view_cache_info::vquery_for_query, view_cache_info::vquery_for_query_in_gdb, view_cache_info::vquery_for_update, view_cache_info::vquery_for_update_in_gdb, and ws_is_same_object().
Referenced by sm_virtual_queries().
|
static |
Definition at line 3053 of file view_transform.c.
References pt_union_info::arg1, pt_union_info::arg2, pt_select_info::group_by, parser_node::info, parser_node::node_type, NULL, pt_query_info::order_by, pt_query_info::orderby_for, PT_DIFFERENCE, pt_has_aggregate(), PT_INTERSECTION, PT_SELECT, PT_UNION, pt_query_info::q, pt_statement_info::query, pt_query_info::select, and pt_query_info::union_.
Referenced by mq_copypush_sargable_terms_helper().
|
static |
Definition at line 6413 of file view_transform.c.
References pt_spec_info::derived_table, ER_FAILED, pt_spec_info::flag, pt_select_info::from, parser_node::info, MSGCAT_SEMANTIC_INVALID_USE_FOR_UPDATE_CLAUSE, MSGCAT_SET_PARSER_SEMANTIC, parser_node::next, NO_ERROR, parser_node::node_type, NULL, parser_walk_tree(), pt_check_for_update_subquery(), PT_ERRORm, pt_has_aggregate(), pt_is_distinct, PT_IS_QUERY, PT_SELECT, PT_SELECT_INFO_FOR_UPDATE, PT_SELECT_INFO_IS_FLAGED, PT_SPEC_FLAG_FOR_UPDATE_CLAUSE, pt_query_info::q, pt_statement_info::query, pt_query_info::select, find_id_info::spec, and pt_statement_info::spec.
Referenced by pt_for_update_prepare_query().
|
static |
Definition at line 6379 of file view_transform.c.
References ER_FAILED, MSGCAT_SEMANTIC_INVALID_USE_FOR_UPDATE_CLAUSE, MSGCAT_SET_PARSER_SEMANTIC, parser_node::node_type, PT_ERRORm, PT_SELECT, PT_SELECT_INFO_FOR_UPDATE, PT_SELECT_INFO_IS_FLAGED, and PT_STOP_WALK.
Referenced by pt_check_for_update_clause().
|
static |
Definition at line 2674 of file view_transform.c.
References pt_function_info::analytic, check_pushable_info::analytic_found, check_pushable_info::check_analytic, check_pushable_info::check_method, check_pushable_info::check_query, check_pushable_info::check_xxxnum, pt_statement_info::expr, pt_statement_info::function, pt_function_info::function_type, parser_node::info, pt_function_info::is_analytic, check_pushable_info::method_found, parser_node::node_type, pt_expr_info::op, PT_DIFFERENCE, PT_EXPR, PT_FUNCTION, PT_GROUPBY_NUM, PT_INST_NUM, PT_INTERSECTION, PT_METHOD_CALL, PT_ORDERBY_NUM, PT_ROWNUM, PT_SELECT, PT_STOP_WALK, PT_UNION, check_pushable_info::query_found, and check_pushable_info::xxxnum_found.
Referenced by mq_is_pushable_subquery(), and pt_pushable_query_in_pos().
|
static |
Definition at line 3105 of file view_transform.c.
References pt_union_info::arg1, pt_union_info::arg2, pt_spec_info::as_attr_list, FIND_ID_INLINE_VIEW, pt_select_info::group_by, pt_select_info::having, parser_node::info, pt_select_info::list, mq_lambda(), parser_node::node_type, NULL, pt_query_info::order_by, pt_query_info::orderby_for, parser_append_node(), parser_copy_tree_list(), PT_DIFFERENCE, pt_has_aggregate(), PT_INTERSECTION, PT_SELECT, PT_UNION, pt_query_info::q, pt_statement_info::query, pt_query_info::select, pt_statement_info::spec, pt_query_info::union_, and pt_select_info::where.
Referenced by mq_copypush_sargable_terms_helper().
|
static |
Definition at line 2876 of file view_transform.c.
References pt_dot_info::arg1, find_id_info::attr_list, find_id_info::correlated_found, pt_statement_info::dot, pt_statement_info::expr, find_id_info::found, pt_statement_info::function, pt_function_info::function_type, i, pt_spec_info::id, find_id_info::in, parser_node::info, pt_statement_info::name, parser_node::next, parser_node::node_type, NULL, pt_expr_info::op, find_id_info::others_found, find_id_info::others_spec_list, find_id_info::out, PT_DATA_TYPE, PT_DIFFERENCE, PT_DOT_, PT_EXPR, PT_FUNCTION, PT_GROUPBY_NUM, PT_INST_NUM, PT_INTERSECTION, PT_LIST_WALK, PT_METHOD_CALL, PT_NAME, pt_name_equal(), PT_ORDERBY_NUM, pt_pushable_query_in_pos(), PT_ROWNUM, PT_SELECT, PT_STOP_WALK, PT_UNION, find_id_info::pushable, find_id_info::query_list, find_id_info::spec, pt_statement_info::spec, and pt_name_info::spec_id.
Referenced by pt_sargable_term().
|
static |
Definition at line 6530 of file view_transform.c.
References err, NO_ERROR, parser_node::node_type, NULL, pt_check_for_update_clause(), pt_for_update_prepare_query_internal(), PT_SELECT, PT_SELECT_INFO_FOR_UPDATE, and PT_SELECT_INFO_IS_FLAGED.
Referenced by mq_translate_helper().
|
static |
Definition at line 6484 of file view_transform.c.
References err, pt_select_info::from, parser_node::info, NO_ERROR, parser_node::node_type, NULL, PT_SELECT, PT_SELECT_INFO_FOR_UPDATE, PT_SELECT_INFO_IS_FLAGED, PT_SPEC_FLAG_FOR_UPDATE_CLAUSE, pt_query_info::q, pt_statement_info::query, pt_query_info::select, and find_id_info::spec.
Referenced by pt_for_update_prepare_query().
|
static |
Definition at line 2751 of file view_transform.c.
References pt_function_info::analytic, check_pushable_info::analytic_found, pt_union_info::arg1, pt_union_info::arg2, check_pushable_info::check_analytic, check_pushable_info::check_method, check_pushable_info::check_query, check_pushable_info::check_xxxnum, pt_statement_info::expr, pt_statement_info::function, pt_function_info::function_type, i, parser_node::info, pt_function_info::is_analytic, pt_select_info::list, check_pushable_info::method_found, parser_node::next, parser_node::node_type, NULL, pt_expr_info::op, parser_walk_leaves(), pt_check_pushable(), PT_DIFFERENCE, PT_EXPR, PT_FUNCTION, PT_GROUPBY_NUM, PT_INST_NUM, PT_INTERSECTION, PT_METHOD_CALL, PT_ORDERBY_NUM, PT_ROWNUM, PT_SELECT, PT_UNION, find_id_info::pushable, pt_query_info::q, pt_statement_info::query, check_pushable_info::query_found, pt_query_info::select, pt_query_info::union_, and check_pushable_info::xxxnum_found.
Referenced by pt_find_only_name_id().
|
static |
Definition at line 3029 of file view_transform.c.
References find_id_info::correlated_found, find_id_info::found, NULL, find_id_info::others_found, find_id_info::out, parser_walk_leaves(), pt_find_only_name_id(), and find_id_info::pushable.
Referenced by mq_copypush_sargable_terms_helper().
Definition at line 108 of file view_transform.c.
|
static |
Definition at line 107 of file view_transform.c.
Referenced by mq_check_cycle(), and mq_virtual_queries().