Skip to content

File view_transform.c

FileList > cubrid > src > parser > view_transform.c

Go to the source code of this file

  • #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"
  • #include "boot.h"

Classes

Type Name
struct PT_RESOLVE_METHOD_NAME_INFO
struct check_pushable_info
struct exists_info
struct extra_specs_frame
struct find_id_info
struct mq_bump_core_info
struct mq_lambda_arg
struct path_lambda_info
struct pt_reset_select_spec_info
struct replace_name_info
struct set_names_info
struct spec_reset_info

Public Types

Type Name
typedef struct check_pushable_info CHECK_PUSHABLE_INFO
typedef struct exists_info EXISTS_INFO
typedef struct find_id_info FIND_ID_INFO
enum FIND_ID_TYPE
typedef struct mq_bump_core_info MQ_BUMP_CORR_INFO
typedef struct mq_lambda_arg MQ_LAMBDA_ARG
typedef struct path_lambda_info PATH_LAMBDA_INFO
typedef struct extra_specs_frame PT_EXTRA_SPECS_FRAME
typedef struct pt_reset_select_spec_info PT_RESET_SELECT_SPEC_INFO
typedef enum pushable_type PUSHABLE_TYPE
typedef struct replace_name_info REPLACE_NAME_INFO
typedef struct set_names_info SET_NAMES_INFO
typedef struct spec_reset_info SPEC_RESET_INFO
enum pushable_type

Public Static Attributes

Type Name
DB_OBJECT * cycle_buffer
unsigned int top_cycle = 0

Public Functions

Type Name
PT_NODE * mq_bump_correlation_level (PARSER_CONTEXT * parser, PT_NODE * node, int increment, int match)
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)
PT_NODE * mq_clear_ids (PARSER_CONTEXT * parser, PT_NODE * node, PT_NODE * spec)
int mq_copypush_sargable_terms (PARSER_CONTEXT * parser, PT_NODE * statement, PT_NODE * spec)
int mq_evaluate_check_option (PARSER_CONTEXT * parser, PT_NODE * check_where, DB_OBJECT * object, PT_NODE * view_class)
int mq_evaluate_expression (PARSER_CONTEXT * parser, PT_NODE * expr, DB_VALUE * value, DB_OBJECT * object, UINTPTR spec_id)
int mq_evaluate_expression_having_serial (PARSER_CONTEXT * parser, PT_NODE * expr, DB_VALUE * values, int values_count, DB_OBJECT * object, UINTPTR spec_id)
PT_NODE * mq_fetch_attributes (PARSER_CONTEXT * parser, PT_NODE * class_)
DB_OBJECT * mq_fetch_one_real_class (DB_OBJECT * vclass_object)
void mq_free_virtual_query_cache (PARSER_CONTEXT * parser)
const char * mq_generate_name (PARSER_CONTEXT * parser, const char * root, int * version)
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)
int mq_get_expression (DB_OBJECT * object, const char * expr, DB_VALUE * value)
PT_NODE * mq_get_references (PARSER_CONTEXT * parser, PT_NODE * statement, PT_NODE * spec)
PT_NODE * mq_get_references_helper (PARSER_CONTEXT * parser, PT_NODE * statement, PT_NODE * spec, bool get_spec_referenced_attr)
PT_NODE * mq_has_click_counter (PARSER_CONTEXT * parser, PT_NODE * node, void * arg, int * continue_walk)
bool mq_is_outer_join_spec (PARSER_CONTEXT * parser, PT_NODE * spec)
int mq_is_real_class_of_vclass (PARSER_CONTEXT * parser, const PT_NODE * s_class, const PT_NODE * d_class)
bool mq_is_right_outer_join_spec (PARSER_CONTEXT * parser, PT_NODE * spec)
bool mq_is_updatable (DB_OBJECT * class_object)
bool mq_is_updatable_att (PARSER_CONTEXT * parser, DB_OBJECT * vmop, const char * att_nam, DB_OBJECT * rmop)
bool mq_is_updatable_attribute (DB_OBJECT * vclass_object, const char * attr_name, DB_OBJECT * real_class_object)
bool mq_is_updatable_strict (DB_OBJECT * class_object)
PT_NODE * mq_lambda (PARSER_CONTEXT * parser, PT_NODE * tree_with_names, PT_NODE * name_node, PT_NODE * corresponding_tree)
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)
PT_NODE * mq_oid (PARSER_CONTEXT * parser, PT_NODE * spec)
PT_NODE * mq_regenerate_if_ambiguous (PARSER_CONTEXT * parser, PT_NODE * spec, PT_NODE * statement, PT_NODE * from)
PT_NODE * mq_reset_ids (PARSER_CONTEXT * parser, PT_NODE * statement, PT_NODE * spec)
PT_NODE * mq_reset_ids_in_methods (PARSER_CONTEXT * parser, PT_NODE * statement)
PT_NODE * mq_reset_ids_in_statement (PARSER_CONTEXT * parser, PT_NODE * statement)
PT_NODE * mq_reset_paths (PARSER_CONTEXT * parser, PT_NODE * statement, PT_NODE * root_spec)
PT_NODE * mq_rewrite_aggregate_as_derived (PARSER_CONTEXT * parser, PT_NODE * agg_sel)
PT_NODE * mq_rewrite_query_as_derived (PARSER_CONTEXT * parser, PT_NODE * query)
PT_NODE * mq_set_references (PARSER_CONTEXT * parser, PT_NODE * statement, PT_NODE * spec)
PT_NODE * mq_translate (PARSER_CONTEXT * parser, PT_NODE *volatile node)
PT_UPDATABILITY mq_updatable (PARSER_CONTEXT * parser, PT_NODE * statement)
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)
PARSER_CONTEXT * mq_virtual_queries (DB_OBJECT * class_object)

Public Static Functions

Type Name
const char * get_authorization_name (DB_AUTH auth)
PT_NODE * mq_add_dummy_from_pre (PARSER_CONTEXT * parser, PT_NODE * node, void * arg, int * continue_walk)
void mq_auto_param_merge_clauses (PARSER_CONTEXT * parser, PT_NODE * stmt)
PT_NODE * mq_bump_corr_post (PARSER_CONTEXT * parser, PT_NODE * node, void * void_arg, int * continue_walk)
PT_NODE * mq_bump_corr_pre (PARSER_CONTEXT * parser, PT_NODE * node, void * void_arg, int * continue_walk)
void mq_bump_order_dep_corr_lvl (PARSER_CONTEXT * parser, PT_NODE * node)
PT_NODE * mq_bump_order_dep_corr_lvl_post (PARSER_CONTEXT * parser, PT_NODE * node, void * arg, int * continue_walk)
PT_NODE * mq_bump_order_dep_corr_lvl_pre (PARSER_CONTEXT * parser, PT_NODE * node, void * arg, int * continue_walk)
int mq_check_authorization_path_entities (PARSER_CONTEXT * parser, PT_NODE * class_spec, int what_for)
void mq_check_cte_inline_or_materialize (PARSER_CONTEXT * parser, PT_NODE * node)
bool mq_check_cycle (DB_OBJECT * class_object)
void mq_check_delete (PARSER_CONTEXT * parser, PT_NODE * delete_stmt)
bool mq_check_keep_join_pred (PARSER_CONTEXT * parser, PT_NODE * spec, PT_NODE * node, PT_NODE * subquery, PT_NODE * class_)
void mq_check_merge (PARSER_CONTEXT * parser, PT_NODE * merge_statement)
PT_NODE * mq_check_non_updatable_vclass_oid (PARSER_CONTEXT * parser, PT_NODE * node, void * arg, int * continue_walk)
PT_NODE * mq_check_rewrite_select (PARSER_CONTEXT * parser, PT_NODE * select_statement)
int mq_check_subqueries_for_prepare (PARSER_CONTEXT * parser, PT_NODE * node, PT_NODE * subquery)
void mq_check_update (PARSER_CONTEXT * parser, PT_NODE * update_statement)
int mq_check_using_index (PARSER_CONTEXT * parser, PT_NODE * using_index)
bool mq_check_vclass_for_insert (PARSER_CONTEXT * parser, PT_NODE * stmt)
PT_NODE * mq_class_meth_corr_subq_pre (PARSER_CONTEXT * parser, PT_NODE * node, void * void_arg, int * continue_walk)
PT_NODE * mq_clean_dot (PARSER_CONTEXT * parser, PT_NODE * node, void * void_arg, int * continue_walk)
PT_NODE * mq_clear_all_ids (PARSER_CONTEXT * parser, PT_NODE * node, void * void_arg, int * continue_walk)
PT_NODE * mq_clear_other_ids (PARSER_CONTEXT * parser, PT_NODE * node, void * void_arg, int * continue_walk)
PT_NODE * mq_coerce_resolved (PARSER_CONTEXT * parser, PT_NODE * node, void * void_arg, int * continue_walk)
PT_NODE * mq_collapse_dot (PARSER_CONTEXT * parser, PT_NODE * tree)
DB_AUTH mq_compute_authorization (DB_OBJECT * class_object)
DB_AUTH mq_compute_query_authorization (PT_NODE * statement)
bool mq_conditionally_add_objects (PARSER_CONTEXT * parser, PT_NODE * flat, DB_OBJECT *** classes, int * index, int * max)
void mq_copy_sql_hint (PARSER_CONTEXT * parser, PT_NODE * dest_query, PT_NODE * src_query)
void mq_copy_view_error_msgs (PARSER_CONTEXT * parser, PARSER_CONTEXT * query_cache)
int mq_copypush_sargable_terms_dblink (PARSER_CONTEXT * parser, PT_NODE * statement, PT_NODE * spec, PT_NODE * new_query, FIND_ID_INFO * infop)
int mq_copypush_sargable_terms_helper (PARSER_CONTEXT * parser, PT_NODE * statement, PT_NODE * spec, PT_NODE * subquery, FIND_ID_INFO * infop)
PT_NODE * mq_count_cte_references (PARSER_CONTEXT * parser, PT_NODE * node, void * arg, int * continue_walk)
PT_NODE * mq_derived_path (PARSER_CONTEXT * parser, PT_NODE * statement, PT_NODE * path)
PT_NODE * mq_fetch_expression_for_real_class_update (PARSER_CONTEXT * parser, DB_OBJECT * vclass_obj, PT_NODE * attr, PT_NODE * real_class, PT_FETCH_AS fetch_as, DB_AUTH what_for, UINTPTR * spec_id)
PT_NODE * mq_fetch_one_real_class_get_cache (DB_OBJECT * vclass_object, PARSER_CONTEXT ** query_cache)
PT_NODE * mq_fetch_select_for_real_class_update (PARSER_CONTEXT * parser, PT_NODE * vclass, PT_NODE * real_class, PT_FETCH_AS fetch_as, DB_AUTH what_for)
PT_NODE * mq_fetch_subqueries (PARSER_CONTEXT * parser, PT_NODE * class_)
PT_NODE * mq_fetch_subqueries_for_update (PARSER_CONTEXT * parser, PT_NODE * class_, PT_FETCH_AS fetch_as, DB_AUTH what_for)
PT_NODE * mq_fetch_subqueries_for_update_local (PARSER_CONTEXT * parser, PT_NODE * class_, PT_FETCH_AS fetch_as, DB_AUTH what_for, PARSER_CONTEXT ** qry_cache)
PT_NODE * mq_fix_derived (PARSER_CONTEXT * parser, PT_NODE * select_statement, PT_NODE * spec)
PT_NODE * mq_fix_derived_in_union (PARSER_CONTEXT * parser, PT_NODE * statement, UINTPTR spec_id)
PT_NODE * mq_flatten_union (PARSER_CONTEXT * parser, PT_NODE * statement)
PT_NODE * mq_generate_unique (PARSER_CONTEXT * parser, PT_NODE * name_list)
PT_NODE * mq_get_references_node (PARSER_CONTEXT * parser, PT_NODE * node, void * void_arg, int * continue_walk)
bool mq_has_class_methods_corr_subqueries (PARSER_CONTEXT * parser, PT_NODE * node)
PT_NODE * mq_inline_cte_pre (PARSER_CONTEXT * parser, PT_NODE * node, void * arg, int * continue_walk)
PT_NODE * mq_inline_view_lambda (PARSER_CONTEXT * parser, PT_NODE * statement, PT_NODE * derived_table, 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)
void mq_insert_symbol (PARSER_CONTEXT * parser, PT_NODE ** listhead, PT_NODE * attr)
void mq_invert_assign (PARSER_CONTEXT * parser, PT_NODE * attr, PT_NODE *& expr, PT_NODE * inverted)
void mq_invert_insert_select (PARSER_CONTEXT * parser, PT_NODE * attr, PT_NODE * subquery)
void mq_invert_insert_subquery (PARSER_CONTEXT * parser, PT_NODE ** attr, PT_NODE * subquery)
void mq_invert_subqueries (PARSER_CONTEXT * parser, PT_NODE * select_statements, PT_NODE * attributes)
bool mq_is_dblink_pushable_term (PARSER_CONTEXT * parser, PT_NODE * term)
bool mq_is_order_dependent_node (PT_NODE * node)
PUSHABLE_TYPE mq_is_pushable_subquery (PARSER_CONTEXT * parser, PT_NODE * subquery, PT_NODE * mainquery, PT_NODE * class_spec, bool is_vclass, PT_NODE * order_by, PT_NODE * class_)
int mq_is_referenced (PARSER_CONTEXT * parser, PT_NODE * statement, PT_NODE * spec)
PUSHABLE_TYPE mq_is_removable_select_list (PARSER_CONTEXT * parser, PT_NODE * subquery, PT_NODE * mainquery)
bool mq_is_rownum_only_predicate (PARSER_CONTEXT * parser, PT_NODE * spec, PT_NODE * node, PT_NODE * order_by, PT_NODE * subquery, PT_NODE * class_)
int mq_is_union_translation (PARSER_CONTEXT * parser, PT_NODE * spec)
bool mq_is_updatable_local (DB_OBJECT * class_object, PT_FETCH_AS fetch_as)
PT_NODE * mq_lambda_node (PARSER_CONTEXT * parser, PT_NODE * node, void * void_arg, int * continue_walk)
PT_NODE * mq_lambda_node_pre (PARSER_CONTEXT * parser, PT_NODE * tree, void * void_arg, int * continue_walk)
PT_NODE * mq_lookup_symbol (PARSER_CONTEXT * parser, PT_NODE * attr_list, PT_NODE * attr)
PT_NODE * mq_mark_location (PARSER_CONTEXT * parser, PT_NODE * node, void * arg, int * continue_walk)
bool mq_mark_order_dependent_nodes (PT_NODE * node)
int mq_mget_exprs (DB_OBJECT ** objects, int rows, char ** exprs, int cols, int qOnErr, DB_VALUE * values, int * results, char * emsg)
PT_NODE * mq_new_spec (PARSER_CONTEXT * parser, const char * class_name)
PT_NODE * mq_path_name_lambda (PARSER_CONTEXT * parser, PT_NODE * statement, PT_NODE * lambda_name, PT_NODE * lambda_expr, UINTPTR spec_id)
PT_NODE * mq_path_spec_lambda (PARSER_CONTEXT * parser, PT_NODE * statement, PT_NODE * root_spec, PT_NODE ** prev_ptr, PT_NODE * old_spec, PT_NODE * new_spec)
PT_NODE * mq_push_arg2 (PARSER_CONTEXT * parser, PT_NODE * query, PT_NODE * dot_arg2)
void mq_push_dot_in_query (PARSER_CONTEXT * parser, PT_NODE * query, int i, PT_NODE * name)
PT_NODE * mq_push_path (PARSER_CONTEXT * parser, PT_NODE * statement, PT_NODE * spec, PT_NODE * path)
PT_NODE * mq_push_paths (PARSER_CONTEXT * parser, PT_NODE * statement, void * void_arg, int * continue_walk)
void mq_push_paths_select (PARSER_CONTEXT * parser, PT_NODE * statement, PT_NODE * spec)
PT_NODE * mq_referenced_post (PARSER_CONTEXT * parser, PT_NODE * node, void * void_arg, int * continue_walk)
PT_NODE * mq_referenced_pre (PARSER_CONTEXT * parser, PT_NODE * node, void * void_arg, int * continue_walk)
PT_NODE * mq_remove_select_list_for_inline_view (PARSER_CONTEXT * parser, PT_NODE * statement, PT_NODE * derived_table, PT_NODE ** new_spec)
PT_NODE * mq_rename_resolved (PARSER_CONTEXT * parser, PT_NODE * spec, PT_NODE * statement, const char * newname)
PT_NODE * mq_replace_name_with_path (PARSER_CONTEXT * parser, PT_NODE * node, void * void_arg, int * continue_walk)
PT_NODE * mq_replace_virtual_oid_with_real_oid (PARSER_CONTEXT * parser, PT_NODE * node, void * arg, int * continue_walk)
PT_NODE * mq_reset_all_ids (PARSER_CONTEXT * parser, PT_NODE * node, void * void_arg, int * continue_walk)
PT_NODE * mq_reset_ids_and_references (PARSER_CONTEXT * parser, PT_NODE * statement, PT_NODE * spec)
PT_NODE * mq_reset_ids_and_references_helper (PARSER_CONTEXT * parser, PT_NODE * statement, PT_NODE * spec, bool get_spec_referenced_attr)
PT_NODE * mq_reset_references_to_query_string (PARSER_CONTEXT * parser, PT_NODE * node, void * arg, int * continue_walk)
PT_NODE * mq_reset_select_spec_node (PARSER_CONTEXT * parser, PT_NODE * node, void * void_arg, int * continue_walk)
PT_NODE * mq_reset_select_specs (PARSER_CONTEXT * parser, PT_NODE * node, void * void_arg, int * continue_walk)
PT_NODE * mq_reset_spec_distr_subpath_post (PARSER_CONTEXT * parser, PT_NODE * spec, void * void_arg, int * continue_walk)
PT_NODE * mq_reset_spec_distr_subpath_pre (PARSER_CONTEXT * parser, PT_NODE * spec, void * void_arg, int * continue_walk)
PT_NODE * mq_reset_spec_ids (PARSER_CONTEXT * parser, PT_NODE * node, void * void_arg, int * continue_walk)
PT_NODE * mq_reset_spec_in_method_names (PARSER_CONTEXT * parser, PT_NODE * node, void * void_arg, int * continue_walk)
PT_NODE * mq_reset_specs_from_column (PARSER_CONTEXT * parser, PT_NODE * statement, PT_NODE * column)
PT_NODE * mq_resolve_insert_statement (PARSER_CONTEXT * parser, PT_NODE * insert_statement)
PT_NODE * mq_resolve_n_check_using_index (PARSER_CONTEXT * parser, PT_NODE * statement, bool aggregate_rewrote_as_derived)
PT_NODE * mq_rewrite_agg_names (PARSER_CONTEXT * parser, PT_NODE * node, void * void_arg, int * continue_walk)
PT_NODE * mq_rewrite_agg_names_post (PARSER_CONTEXT * parser, PT_NODE * node, void * void_arg, int * continue_walk)
PT_NODE * mq_rewrite_cte_as_derived (PARSER_CONTEXT * parser, PT_NODE * node, void * arg, int * continue_walk)
PT_NODE * mq_rewrite_dblink_as_derived (PARSER_CONTEXT * parser, PT_NODE * query)
PT_NODE * mq_rewrite_dblink_as_subquery (PARSER_CONTEXT * parser, PT_NODE * node, void * arg, int * walk)
PT_NODE * mq_rewrite_order_dependent_nodes (PARSER_CONTEXT * parser, PT_NODE * node, PT_NODE * select, int * unique)
PT_NODE * mq_rewrite_order_dependent_query (PARSER_CONTEXT * parser, PT_NODE * select, int * unique)
PT_NODE * mq_rewrite_upd_del_top_level_specs (PARSER_CONTEXT * parser, PT_NODE * statement, void * void_arg, int * continue_walk)
PT_NODE * mq_rewrite_vclass_spec_as_derived (PARSER_CONTEXT * parser, PT_NODE * statement, PT_NODE * spec, PT_NODE * query_spec, bool remove_sel_list)
PT_NODE * mq_set_all_ids (PARSER_CONTEXT * parser, PT_NODE * node, void * void_arg, int * continue_walk)
PT_NODE * mq_set_names_dbobject (PARSER_CONTEXT * parser, PT_NODE * node, void * void_arg, int * continue_walk)
void mq_set_non_updatable_oid (PARSER_CONTEXT * parser, PT_NODE * stmt, PT_NODE * virt_entity)
PT_NODE * mq_set_references_local (PARSER_CONTEXT * parser, PT_NODE * statement, PT_NODE * spec)
PT_NODE * mq_set_types (PARSER_CONTEXT * parser, PT_NODE * query_spec, PT_NODE * attributes, DB_OBJECT * vclass_object, int cascaded_check)
void mq_set_union_query (PARSER_CONTEXT * parser, PT_NODE * statement, PT_MISC_TYPE is_union)
PT_NODE * mq_set_virt_object (PARSER_CONTEXT * parser, PT_NODE * node, void * void_arg, int * continue_walk)
PT_NODE * mq_substitute_inline_view_in_statement (PARSER_CONTEXT * parser, PT_NODE * statement, PT_NODE * subquery, PT_NODE * derived_spec, PT_NODE * order_by)
PT_NODE * mq_substitute_path (PARSER_CONTEXT * parser, PT_NODE * node, PATH_LAMBDA_INFO * path_info)
PT_NODE * mq_substitute_path_pre (PARSER_CONTEXT * parser, PT_NODE * node, void * void_arg, int * continue_walk)
PT_NODE * mq_substitute_select_for_inline_view (PARSER_CONTEXT * parser, PT_NODE * statement, PT_NODE * query_spec, PT_NODE * derived_table)
PT_NODE * mq_substitute_select_in_statement (PARSER_CONTEXT * parser, PT_NODE * statement, PT_NODE * query_spec, PT_NODE * class_)
PT_NODE * mq_substitute_spec_in_method_and_hints (PARSER_CONTEXT * parser, PT_NODE * node, void * void_arg, int * continue_walk)
PT_NODE * mq_substitute_subquery_in_statement (PARSER_CONTEXT * parser, PT_NODE * statement, PT_NODE * query_spec, PT_NODE * class_, PT_NODE * order_by, int what_for)
PT_NODE * mq_substitute_subquery_list_in_statement (PARSER_CONTEXT * parser, PT_NODE * statement, PT_NODE * query_spec_list, PT_NODE * class_, PT_NODE * order_by, int what_for)
int mq_translatable_class (PARSER_CONTEXT * parser, PT_NODE * class_)
PT_NODE * mq_translate_delete (PARSER_CONTEXT * parser, PT_NODE * delete_statement)
PT_NODE * mq_translate_helper (PARSER_CONTEXT * parser, PT_NODE * node)
PT_NODE * mq_translate_insert (PARSER_CONTEXT * parser, PT_NODE * insert_statement)
PT_NODE * mq_translate_local (PARSER_CONTEXT * parser, PT_NODE * statement, void * void_arg, int * continue_walk)
PT_NODE * mq_translate_merge (PARSER_CONTEXT * parser, PT_NODE * merge_statement)
PT_NODE * mq_translate_paths (PARSER_CONTEXT * parser, PT_NODE * statement, PT_NODE * root_spec)
PT_NODE * mq_translate_select (PARSER_CONTEXT * parser, PT_NODE * select_statement)
PT_NODE * mq_translate_subqueries (PARSER_CONTEXT * parser, DB_OBJECT * class_object, PT_NODE * attributes, DB_AUTH * authorization)
PT_NODE * mq_translate_tree (PARSER_CONTEXT * parser, PT_NODE * tree, PT_NODE * spec_list, PT_NODE * order_by, int what_for)
PT_NODE * mq_translate_update (PARSER_CONTEXT * parser, PT_NODE * update_statement)
PT_NODE * mq_translate_value (PARSER_CONTEXT * parser, PT_NODE * value)
PT_NODE * mq_union_bump_correlation (PARSER_CONTEXT * parser, PT_NODE * left, PT_NODE * right)
PT_UPDATABILITY mq_updatable_local (PARSER_CONTEXT * parser, PT_NODE * statement, DB_OBJECT *** classes, int * i, int * max)
PT_NODE * mq_update_analytic_sort_spec_expr (PARSER_CONTEXT * parser, PT_NODE * new_select_list, PT_NODE * old_select_list)
PT_NODE * mq_update_order_by (PARSER_CONTEXT * parser, PT_NODE * statement, PT_NODE * query_spec, PT_NODE * class_, PT_NODE * derived_spec, bool skip_adding_hidden_col)
int pt_check_for_update_clause (PARSER_CONTEXT * parser, PT_NODE * query, bool root)
PT_NODE * pt_check_for_update_subquery (PARSER_CONTEXT * parser, PT_NODE * node, void * arg, int * continue_walk)
PT_NODE * pt_check_odku_refs_pre (PARSER_CONTEXT * parser, PT_NODE * odku, void * arg, int * continue_walk)
void pt_check_odku_refs_view (PARSER_CONTEXT * parser, PT_NODE * statement)
PT_NODE * pt_check_pushable (PARSER_CONTEXT * parser, PT_NODE * tree, void * arg, int * continue_walk)
PT_NODE * pt_check_pushable_select_list (PARSER_CONTEXT * parser, PT_NODE * tree, void * arg, int * continue_walk)
bool pt_check_pushable_subquery_select_list (PARSER_CONTEXT * parser, PT_NODE * query, int pos)
bool pt_check_pushable_term (PARSER_CONTEXT * parser, PT_NODE * term, FIND_ID_INFO * infop)
void pt_copypush_terms (PARSER_CONTEXT * parser, PT_NODE * spec, PT_NODE * query, PT_NODE * term_list, FIND_ID_TYPE type)
PT_NODE * pt_find_only_name_id (PARSER_CONTEXT * parser, PT_NODE * tree, void * arg, int * continue_walk)
int pt_for_update_prepare_query (PARSER_CONTEXT * parser, PT_NODE * query)
int pt_for_update_prepare_query_internal (PARSER_CONTEXT * parser, PT_NODE * query)
PT_NODE * pt_remove_cast_wrap_for_dblink (PARSER_CONTEXT * parser, PT_NODE * old_node, void * arg, int * continue_walk)

Macros

Type Name
define MAX_CYCLE 300
define MAX_STACK_OBJECTS 500
define MQ_FIX_SPEC_ID (tmp_hint, hint, info) /* multi line expression */
define MQ_IS_LEFT_JOIN_SPEC (s) /* multi line expression */
define MQ_IS_OUTER_JOIN_SPEC (s) /* multi line expression */
define PT_PUSHABLE_TERM (p) (([**p**](dynamic__load_8c.md#variable-p))-&gt;out.pushable && ([**p**](dynamic__load_8c.md#variable-p))-&gt;out.found && !([**p**](dynamic__load_8c.md#variable-p))-&gt;out.others\_found)

Public Types Documentation

typedef CHECK_PUSHABLE_INFO

typedef struct check_pushable_info CHECK_PUSHABLE_INFO;

typedef EXISTS_INFO

typedef struct exists_info EXISTS_INFO;

typedef FIND_ID_INFO

typedef struct find_id_info FIND_ID_INFO;

enum FIND_ID_TYPE

enum FIND_ID_TYPE {
    FIND_ID_INLINE_VIEW = 0,
    FIND_ID_VCLASS
};

typedef MQ_BUMP_CORR_INFO

typedef struct mq_bump_core_info MQ_BUMP_CORR_INFO;

typedef MQ_LAMBDA_ARG

typedef struct mq_lambda_arg MQ_LAMBDA_ARG;

typedef PATH_LAMBDA_INFO

typedef struct path_lambda_info PATH_LAMBDA_INFO;

typedef PT_EXTRA_SPECS_FRAME

typedef struct extra_specs_frame PT_EXTRA_SPECS_FRAME;

typedef PT_RESET_SELECT_SPEC_INFO

typedef struct pt_reset_select_spec_info PT_RESET_SELECT_SPEC_INFO;

typedef PUSHABLE_TYPE

typedef enum pushable_type PUSHABLE_TYPE;

typedef REPLACE_NAME_INFO

typedef struct replace_name_info REPLACE_NAME_INFO;

typedef SET_NAMES_INFO

typedef struct set_names_info SET_NAMES_INFO;

typedef SPEC_RESET_INFO

typedef struct spec_reset_info SPEC_RESET_INFO;

enum pushable_type

enum pushable_type {
    HAS_ERROR = 0,
    NON_PUSHABLE = 1,
    PUSHABLE = 2
};

Public Static Attributes Documentation

variable cycle_buffer

DB_OBJECT* cycle_buffer[300];

variable top_cycle

unsigned int top_cycle;

Public Functions Documentation

function mq_bump_correlation_level

PT_NODE * mq_bump_correlation_level (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    int increment,
    int match
) 

function mq_class_lambda

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
) 

function mq_clear_ids

PT_NODE * mq_clear_ids (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    PT_NODE * spec
) 

function mq_copypush_sargable_terms

int mq_copypush_sargable_terms (
    PARSER_CONTEXT * parser,
    PT_NODE * statement,
    PT_NODE * spec
) 

function mq_evaluate_check_option

int mq_evaluate_check_option (
    PARSER_CONTEXT * parser,
    PT_NODE * check_where,
    DB_OBJECT * object,
    PT_NODE * view_class
) 

function mq_evaluate_expression

int mq_evaluate_expression (
    PARSER_CONTEXT * parser,
    PT_NODE * expr,
    DB_VALUE * value,
    DB_OBJECT * object,
    UINTPTR spec_id
) 

function mq_evaluate_expression_having_serial

int mq_evaluate_expression_having_serial (
    PARSER_CONTEXT * parser,
    PT_NODE * expr,
    DB_VALUE * values,
    int values_count,
    DB_OBJECT * object,
    UINTPTR spec_id
) 

function mq_fetch_attributes

PT_NODE * mq_fetch_attributes (
    PARSER_CONTEXT * parser,
    PT_NODE * class_
) 

function mq_fetch_one_real_class

DB_OBJECT * mq_fetch_one_real_class (
    DB_OBJECT * vclass_object
) 

function mq_free_virtual_query_cache

void mq_free_virtual_query_cache (
    PARSER_CONTEXT * parser
) 

function mq_generate_name

const  char * mq_generate_name (
    PARSER_CONTEXT * parser,
    const  char * root,
    int * version
) 

function mq_get_attribute

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
) 

function mq_get_expression

int mq_get_expression (
    DB_OBJECT * object,
    const  char * expr,
    DB_VALUE * value
) 

function mq_get_references

PT_NODE * mq_get_references (
    PARSER_CONTEXT * parser,
    PT_NODE * statement,
    PT_NODE * spec
) 

function mq_get_references_helper

PT_NODE * mq_get_references_helper (
    PARSER_CONTEXT * parser,
    PT_NODE * statement,
    PT_NODE * spec,
    bool get_spec_referenced_attr
) 

function mq_has_click_counter

PT_NODE * mq_has_click_counter (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    void * arg,
    int * continue_walk
) 

function mq_is_outer_join_spec

bool mq_is_outer_join_spec (
    PARSER_CONTEXT * parser,
    PT_NODE * spec
) 

function mq_is_real_class_of_vclass

int mq_is_real_class_of_vclass (
    PARSER_CONTEXT * parser,
    const  PT_NODE * s_class,
    const  PT_NODE * d_class
) 

function mq_is_right_outer_join_spec

bool mq_is_right_outer_join_spec (
    PARSER_CONTEXT * parser,
    PT_NODE * spec
) 

function mq_is_updatable

bool mq_is_updatable (
    DB_OBJECT * class_object
) 

function mq_is_updatable_att

bool mq_is_updatable_att (
    PARSER_CONTEXT * parser,
    DB_OBJECT * vmop,
    const  char * att_nam,
    DB_OBJECT * rmop
) 

function mq_is_updatable_attribute

bool mq_is_updatable_attribute (
    DB_OBJECT * vclass_object,
    const  char * attr_name,
    DB_OBJECT * real_class_object
) 

function mq_is_updatable_strict

bool mq_is_updatable_strict (
    DB_OBJECT * class_object
) 

function mq_lambda

PT_NODE * mq_lambda (
    PARSER_CONTEXT * parser,
    PT_NODE * tree_with_names,
    PT_NODE * name_node,
    PT_NODE * corresponding_tree
) 

function mq_make_derived_spec

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
) 

function mq_oid

PT_NODE * mq_oid (
    PARSER_CONTEXT * parser,
    PT_NODE * spec
) 

function mq_regenerate_if_ambiguous

PT_NODE * mq_regenerate_if_ambiguous (
    PARSER_CONTEXT * parser,
    PT_NODE * spec,
    PT_NODE * statement,
    PT_NODE * from
) 

function mq_reset_ids

PT_NODE * mq_reset_ids (
    PARSER_CONTEXT * parser,
    PT_NODE * statement,
    PT_NODE * spec
) 

function mq_reset_ids_in_methods

PT_NODE * mq_reset_ids_in_methods (
    PARSER_CONTEXT * parser,
    PT_NODE * statement
) 

function mq_reset_ids_in_statement

PT_NODE * mq_reset_ids_in_statement (
    PARSER_CONTEXT * parser,
    PT_NODE * statement
) 

function mq_reset_paths

PT_NODE * mq_reset_paths (
    PARSER_CONTEXT * parser,
    PT_NODE * statement,
    PT_NODE * root_spec
) 

function mq_rewrite_aggregate_as_derived

PT_NODE * mq_rewrite_aggregate_as_derived (
    PARSER_CONTEXT * parser,
    PT_NODE * agg_sel
) 

function mq_rewrite_query_as_derived

PT_NODE * mq_rewrite_query_as_derived (
    PARSER_CONTEXT * parser,
    PT_NODE * query
) 

function mq_set_references

PT_NODE * mq_set_references (
    PARSER_CONTEXT * parser,
    PT_NODE * statement,
    PT_NODE * spec
) 

function mq_translate

PT_NODE * mq_translate (
    PARSER_CONTEXT * parser,
    PT_NODE * volatile node
) 

function mq_updatable

PT_UPDATABILITY mq_updatable (
    PARSER_CONTEXT * parser,
    PT_NODE * statement
) 

function mq_update_attribute

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
) 

function mq_virtual_queries

PARSER_CONTEXT * mq_virtual_queries (
    DB_OBJECT * class_object
) 

Public Static Functions Documentation

function get_authorization_name

static const  char * get_authorization_name (
    DB_AUTH auth
) 

function mq_add_dummy_from_pre

static PT_NODE * mq_add_dummy_from_pre (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    void * arg,
    int * continue_walk
) 

function mq_auto_param_merge_clauses

static void mq_auto_param_merge_clauses (
    PARSER_CONTEXT * parser,
    PT_NODE * stmt
) 

function mq_bump_corr_post

static PT_NODE * mq_bump_corr_post (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    void * void_arg,
    int * continue_walk
) 

function mq_bump_corr_pre

static PT_NODE * mq_bump_corr_pre (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    void * void_arg,
    int * continue_walk
) 

function mq_bump_order_dep_corr_lvl

static void mq_bump_order_dep_corr_lvl (
    PARSER_CONTEXT * parser,
    PT_NODE * node
) 

function mq_bump_order_dep_corr_lvl_post

static PT_NODE * mq_bump_order_dep_corr_lvl_post (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    void * arg,
    int * continue_walk
) 

function mq_bump_order_dep_corr_lvl_pre

static PT_NODE * mq_bump_order_dep_corr_lvl_pre (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    void * arg,
    int * continue_walk
) 

function mq_check_authorization_path_entities

static int mq_check_authorization_path_entities (
    PARSER_CONTEXT * parser,
    PT_NODE * class_spec,
    int what_for
) 

function mq_check_cte_inline_or_materialize

static void mq_check_cte_inline_or_materialize (
    PARSER_CONTEXT * parser,
    PT_NODE * node
) 

function mq_check_cycle

static bool mq_check_cycle (
    DB_OBJECT * class_object
) 

function mq_check_delete

static void mq_check_delete (
    PARSER_CONTEXT * parser,
    PT_NODE * delete_stmt
) 

function mq_check_keep_join_pred

static bool mq_check_keep_join_pred (
    PARSER_CONTEXT * parser,
    PT_NODE * spec,
    PT_NODE * node,
    PT_NODE * subquery,
    PT_NODE * class_
) 

function mq_check_merge

static void mq_check_merge (
    PARSER_CONTEXT * parser,
    PT_NODE * merge_statement
) 

function mq_check_non_updatable_vclass_oid

static PT_NODE * mq_check_non_updatable_vclass_oid (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    void * arg,
    int * continue_walk
) 

function mq_check_rewrite_select

static PT_NODE * mq_check_rewrite_select (
    PARSER_CONTEXT * parser,
    PT_NODE * select_statement
) 

function mq_check_subqueries_for_prepare

static int mq_check_subqueries_for_prepare (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    PT_NODE * subquery
) 

function mq_check_update

static void mq_check_update (
    PARSER_CONTEXT * parser,
    PT_NODE * update_statement
) 

function mq_check_using_index

static int mq_check_using_index (
    PARSER_CONTEXT * parser,
    PT_NODE * using_index
) 

function mq_check_vclass_for_insert

static bool mq_check_vclass_for_insert (
    PARSER_CONTEXT * parser,
    PT_NODE * stmt
) 

function mq_class_meth_corr_subq_pre

static PT_NODE * mq_class_meth_corr_subq_pre (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    void * void_arg,
    int * continue_walk
) 

function mq_clean_dot

static PT_NODE * mq_clean_dot (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    void * void_arg,
    int * continue_walk
) 

function mq_clear_all_ids

static PT_NODE * mq_clear_all_ids (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    void * void_arg,
    int * continue_walk
) 

function mq_clear_other_ids

static PT_NODE * mq_clear_other_ids (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    void * void_arg,
    int * continue_walk
) 

function mq_coerce_resolved

static PT_NODE * mq_coerce_resolved (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    void * void_arg,
    int * continue_walk
) 

function mq_collapse_dot

static PT_NODE * mq_collapse_dot (
    PARSER_CONTEXT * parser,
    PT_NODE * tree
) 

function mq_compute_authorization

static DB_AUTH mq_compute_authorization (
    DB_OBJECT * class_object
) 

function mq_compute_query_authorization

static DB_AUTH mq_compute_query_authorization (
    PT_NODE * statement
) 

function mq_conditionally_add_objects

static bool mq_conditionally_add_objects (
    PARSER_CONTEXT * parser,
    PT_NODE * flat,
    DB_OBJECT *** classes,
    int * index,
    int * max
) 

function mq_copy_sql_hint

static void mq_copy_sql_hint (
    PARSER_CONTEXT * parser,
    PT_NODE * dest_query,
    PT_NODE * src_query
) 

function mq_copy_view_error_msgs

static void mq_copy_view_error_msgs (
    PARSER_CONTEXT * parser,
    PARSER_CONTEXT * query_cache
) 

static int mq_copypush_sargable_terms_dblink (
    PARSER_CONTEXT * parser,
    PT_NODE * statement,
    PT_NODE * spec,
    PT_NODE * new_query,
    FIND_ID_INFO * infop
) 

function mq_copypush_sargable_terms_helper

static int mq_copypush_sargable_terms_helper (
    PARSER_CONTEXT * parser,
    PT_NODE * statement,
    PT_NODE * spec,
    PT_NODE * subquery,
    FIND_ID_INFO * infop
) 

function mq_count_cte_references

static PT_NODE * mq_count_cte_references (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    void * arg,
    int * continue_walk
) 

function mq_derived_path

static PT_NODE * mq_derived_path (
    PARSER_CONTEXT * parser,
    PT_NODE * statement,
    PT_NODE * path
) 

function mq_fetch_expression_for_real_class_update

static PT_NODE * mq_fetch_expression_for_real_class_update (
    PARSER_CONTEXT * parser,
    DB_OBJECT * vclass_obj,
    PT_NODE * attr,
    PT_NODE * real_class,
    PT_FETCH_AS fetch_as,
    DB_AUTH what_for,
    UINTPTR * spec_id
) 

function mq_fetch_one_real_class_get_cache

static PT_NODE * mq_fetch_one_real_class_get_cache (
    DB_OBJECT * vclass_object,
    PARSER_CONTEXT ** query_cache
) 

function mq_fetch_select_for_real_class_update

static PT_NODE * mq_fetch_select_for_real_class_update (
    PARSER_CONTEXT * parser,
    PT_NODE * vclass,
    PT_NODE * real_class,
    PT_FETCH_AS fetch_as,
    DB_AUTH what_for
) 

function mq_fetch_subqueries

static PT_NODE * mq_fetch_subqueries (
    PARSER_CONTEXT * parser,
    PT_NODE * class_
) 

function mq_fetch_subqueries_for_update

static PT_NODE * mq_fetch_subqueries_for_update (
    PARSER_CONTEXT * parser,
    PT_NODE * class_,
    PT_FETCH_AS fetch_as,
    DB_AUTH what_for
) 

function mq_fetch_subqueries_for_update_local

static PT_NODE * mq_fetch_subqueries_for_update_local (
    PARSER_CONTEXT * parser,
    PT_NODE * class_,
    PT_FETCH_AS fetch_as,
    DB_AUTH what_for,
    PARSER_CONTEXT ** qry_cache
) 

function mq_fix_derived

static PT_NODE * mq_fix_derived (
    PARSER_CONTEXT * parser,
    PT_NODE * select_statement,
    PT_NODE * spec
) 

function mq_fix_derived_in_union

static PT_NODE * mq_fix_derived_in_union (
    PARSER_CONTEXT * parser,
    PT_NODE * statement,
    UINTPTR spec_id
) 

function mq_flatten_union

static PT_NODE * mq_flatten_union (
    PARSER_CONTEXT * parser,
    PT_NODE * statement
) 

function mq_generate_unique

static PT_NODE * mq_generate_unique (
    PARSER_CONTEXT * parser,
    PT_NODE * name_list
) 

function mq_get_references_node

static PT_NODE * mq_get_references_node (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    void * void_arg,
    int * continue_walk
) 

function mq_has_class_methods_corr_subqueries

static bool mq_has_class_methods_corr_subqueries (
    PARSER_CONTEXT * parser,
    PT_NODE * node
) 

function mq_inline_cte_pre

static PT_NODE * mq_inline_cte_pre (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    void * arg,
    int * continue_walk
) 

function mq_inline_view_lambda

static PT_NODE * mq_inline_view_lambda (
    PARSER_CONTEXT * parser,
    PT_NODE * statement,
    PT_NODE * derived_table,
    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
) 

function mq_insert_symbol

static void mq_insert_symbol (
    PARSER_CONTEXT * parser,
    PT_NODE ** listhead,
    PT_NODE * attr
) 

function mq_invert_assign

static void mq_invert_assign (
    PARSER_CONTEXT * parser,
    PT_NODE * attr,
    PT_NODE *& expr,
    PT_NODE * inverted
) 

function mq_invert_insert_select

static void mq_invert_insert_select (
    PARSER_CONTEXT * parser,
    PT_NODE * attr,
    PT_NODE * subquery
) 

function mq_invert_insert_subquery

static void mq_invert_insert_subquery (
    PARSER_CONTEXT * parser,
    PT_NODE ** attr,
    PT_NODE * subquery
) 

function mq_invert_subqueries

static void mq_invert_subqueries (
    PARSER_CONTEXT * parser,
    PT_NODE * select_statements,
    PT_NODE * attributes
) 

static bool mq_is_dblink_pushable_term (
    PARSER_CONTEXT * parser,
    PT_NODE * term
) 

function mq_is_order_dependent_node

static bool mq_is_order_dependent_node (
    PT_NODE * node
) 

function mq_is_pushable_subquery

static PUSHABLE_TYPE mq_is_pushable_subquery (
    PARSER_CONTEXT * parser,
    PT_NODE * subquery,
    PT_NODE * mainquery,
    PT_NODE * class_spec,
    bool is_vclass,
    PT_NODE * order_by,
    PT_NODE * class_
) 

function mq_is_referenced

static int mq_is_referenced (
    PARSER_CONTEXT * parser,
    PT_NODE * statement,
    PT_NODE * spec
) 

function mq_is_removable_select_list

static PUSHABLE_TYPE mq_is_removable_select_list (
    PARSER_CONTEXT * parser,
    PT_NODE * subquery,
    PT_NODE * mainquery
) 

function mq_is_rownum_only_predicate

static bool mq_is_rownum_only_predicate (
    PARSER_CONTEXT * parser,
    PT_NODE * spec,
    PT_NODE * node,
    PT_NODE * order_by,
    PT_NODE * subquery,
    PT_NODE * class_
) 

function mq_is_union_translation

static int mq_is_union_translation (
    PARSER_CONTEXT * parser,
    PT_NODE * spec
) 

function mq_is_updatable_local

static bool mq_is_updatable_local (
    DB_OBJECT * class_object,
    PT_FETCH_AS fetch_as
) 

function mq_lambda_node

static PT_NODE * mq_lambda_node (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    void * void_arg,
    int * continue_walk
) 

function mq_lambda_node_pre

static PT_NODE * mq_lambda_node_pre (
    PARSER_CONTEXT * parser,
    PT_NODE * tree,
    void * void_arg,
    int * continue_walk
) 

function mq_lookup_symbol

static PT_NODE * mq_lookup_symbol (
    PARSER_CONTEXT * parser,
    PT_NODE * attr_list,
    PT_NODE * attr
) 

function mq_mark_location

static PT_NODE * mq_mark_location (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    void * arg,
    int * continue_walk
) 

function mq_mark_order_dependent_nodes

static bool mq_mark_order_dependent_nodes (
    PT_NODE * node
) 

function mq_mget_exprs

static int mq_mget_exprs (
    DB_OBJECT ** objects,
    int rows,
    char ** exprs,
    int cols,
    int qOnErr,
    DB_VALUE * values,
    int * results,
    char * emsg
) 

function mq_new_spec

static PT_NODE * mq_new_spec (
    PARSER_CONTEXT * parser,
    const  char * class_name
) 

function mq_path_name_lambda

static PT_NODE * mq_path_name_lambda (
    PARSER_CONTEXT * parser,
    PT_NODE * statement,
    PT_NODE * lambda_name,
    PT_NODE * lambda_expr,
    UINTPTR spec_id
) 

function mq_path_spec_lambda

static PT_NODE * mq_path_spec_lambda (
    PARSER_CONTEXT * parser,
    PT_NODE * statement,
    PT_NODE * root_spec,
    PT_NODE ** prev_ptr,
    PT_NODE * old_spec,
    PT_NODE * new_spec
) 

function mq_push_arg2

static PT_NODE * mq_push_arg2 (
    PARSER_CONTEXT * parser,
    PT_NODE * query,
    PT_NODE * dot_arg2
) 

function mq_push_dot_in_query

static void mq_push_dot_in_query (
    PARSER_CONTEXT * parser,
    PT_NODE * query,
    int i,
    PT_NODE * name
) 

function mq_push_path

static PT_NODE * mq_push_path (
    PARSER_CONTEXT * parser,
    PT_NODE * statement,
    PT_NODE * spec,
    PT_NODE * path
) 

function mq_push_paths

static PT_NODE * mq_push_paths (
    PARSER_CONTEXT * parser,
    PT_NODE * statement,
    void * void_arg,
    int * continue_walk
) 

function mq_push_paths_select

static void mq_push_paths_select (
    PARSER_CONTEXT * parser,
    PT_NODE * statement,
    PT_NODE * spec
) 

function mq_referenced_post

static PT_NODE * mq_referenced_post (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    void * void_arg,
    int * continue_walk
) 

function mq_referenced_pre

static PT_NODE * mq_referenced_pre (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    void * void_arg,
    int * continue_walk
) 

function mq_remove_select_list_for_inline_view

static PT_NODE * mq_remove_select_list_for_inline_view (
    PARSER_CONTEXT * parser,
    PT_NODE * statement,
    PT_NODE * derived_table,
    PT_NODE ** new_spec
) 

function mq_rename_resolved

static PT_NODE * mq_rename_resolved (
    PARSER_CONTEXT * parser,
    PT_NODE * spec,
    PT_NODE * statement,
    const  char * newname
) 

function mq_replace_name_with_path

static PT_NODE * mq_replace_name_with_path (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    void * void_arg,
    int * continue_walk
) 

function mq_replace_virtual_oid_with_real_oid

static PT_NODE * mq_replace_virtual_oid_with_real_oid (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    void * arg,
    int * continue_walk
) 

function mq_reset_all_ids

static PT_NODE * mq_reset_all_ids (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    void * void_arg,
    int * continue_walk
) 

function mq_reset_ids_and_references

static PT_NODE * mq_reset_ids_and_references (
    PARSER_CONTEXT * parser,
    PT_NODE * statement,
    PT_NODE * spec
) 

function mq_reset_ids_and_references_helper

static PT_NODE * mq_reset_ids_and_references_helper (
    PARSER_CONTEXT * parser,
    PT_NODE * statement,
    PT_NODE * spec,
    bool get_spec_referenced_attr
) 

function mq_reset_references_to_query_string

static PT_NODE * mq_reset_references_to_query_string (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    void * arg,
    int * continue_walk
) 

function mq_reset_select_spec_node

static PT_NODE * mq_reset_select_spec_node (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    void * void_arg,
    int * continue_walk
) 

function mq_reset_select_specs

static PT_NODE * mq_reset_select_specs (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    void * void_arg,
    int * continue_walk
) 

function mq_reset_spec_distr_subpath_post

static PT_NODE * mq_reset_spec_distr_subpath_post (
    PARSER_CONTEXT * parser,
    PT_NODE * spec,
    void * void_arg,
    int * continue_walk
) 

function mq_reset_spec_distr_subpath_pre

static PT_NODE * mq_reset_spec_distr_subpath_pre (
    PARSER_CONTEXT * parser,
    PT_NODE * spec,
    void * void_arg,
    int * continue_walk
) 

function mq_reset_spec_ids

static PT_NODE * mq_reset_spec_ids (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    void * void_arg,
    int * continue_walk
) 

function mq_reset_spec_in_method_names

static PT_NODE * mq_reset_spec_in_method_names (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    void * void_arg,
    int * continue_walk
) 

function mq_reset_specs_from_column

static PT_NODE * mq_reset_specs_from_column (
    PARSER_CONTEXT * parser,
    PT_NODE * statement,
    PT_NODE * column
) 

function mq_resolve_insert_statement

static PT_NODE * mq_resolve_insert_statement (
    PARSER_CONTEXT * parser,
    PT_NODE * insert_statement
) 

function mq_resolve_n_check_using_index

static PT_NODE * mq_resolve_n_check_using_index (
    PARSER_CONTEXT * parser,
    PT_NODE * statement,
    bool aggregate_rewrote_as_derived
) 

function mq_rewrite_agg_names

static PT_NODE * mq_rewrite_agg_names (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    void * void_arg,
    int * continue_walk
) 

function mq_rewrite_agg_names_post

static PT_NODE * mq_rewrite_agg_names_post (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    void * void_arg,
    int * continue_walk
) 

function mq_rewrite_cte_as_derived

static PT_NODE * mq_rewrite_cte_as_derived (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    void * arg,
    int * continue_walk
) 

static PT_NODE * mq_rewrite_dblink_as_derived (
    PARSER_CONTEXT * parser,
    PT_NODE * query
) 

static PT_NODE * mq_rewrite_dblink_as_subquery (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    void * arg,
    int * walk
) 

function mq_rewrite_order_dependent_nodes

static PT_NODE * mq_rewrite_order_dependent_nodes (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    PT_NODE * select,
    int * unique
) 

function mq_rewrite_order_dependent_query

static PT_NODE * mq_rewrite_order_dependent_query (
    PARSER_CONTEXT * parser,
    PT_NODE * select,
    int * unique
) 

function mq_rewrite_upd_del_top_level_specs

static PT_NODE * mq_rewrite_upd_del_top_level_specs (
    PARSER_CONTEXT * parser,
    PT_NODE * statement,
    void * void_arg,
    int * continue_walk
) 

function mq_rewrite_vclass_spec_as_derived

static PT_NODE * mq_rewrite_vclass_spec_as_derived (
    PARSER_CONTEXT * parser,
    PT_NODE * statement,
    PT_NODE * spec,
    PT_NODE * query_spec,
    bool remove_sel_list
) 

function mq_set_all_ids

static PT_NODE * mq_set_all_ids (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    void * void_arg,
    int * continue_walk
) 

function mq_set_names_dbobject

static PT_NODE * mq_set_names_dbobject (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    void * void_arg,
    int * continue_walk
) 

function mq_set_non_updatable_oid

static void mq_set_non_updatable_oid (
    PARSER_CONTEXT * parser,
    PT_NODE * stmt,
    PT_NODE * virt_entity
) 

function mq_set_references_local

static PT_NODE * mq_set_references_local (
    PARSER_CONTEXT * parser,
    PT_NODE * statement,
    PT_NODE * spec
) 

function mq_set_types

static PT_NODE * mq_set_types (
    PARSER_CONTEXT * parser,
    PT_NODE * query_spec,
    PT_NODE * attributes,
    DB_OBJECT * vclass_object,
    int cascaded_check
) 

function mq_set_union_query

static void mq_set_union_query (
    PARSER_CONTEXT * parser,
    PT_NODE * statement,
    PT_MISC_TYPE is_union
) 

function mq_set_virt_object

static PT_NODE * mq_set_virt_object (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    void * void_arg,
    int * continue_walk
) 

function mq_substitute_inline_view_in_statement

static PT_NODE * mq_substitute_inline_view_in_statement (
    PARSER_CONTEXT * parser,
    PT_NODE * statement,
    PT_NODE * subquery,
    PT_NODE * derived_spec,
    PT_NODE * order_by
) 

function mq_substitute_path

static PT_NODE * mq_substitute_path (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    PATH_LAMBDA_INFO * path_info
) 

function mq_substitute_path_pre

static PT_NODE * mq_substitute_path_pre (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    void * void_arg,
    int * continue_walk
) 

function mq_substitute_select_for_inline_view

static PT_NODE * mq_substitute_select_for_inline_view (
    PARSER_CONTEXT * parser,
    PT_NODE * statement,
    PT_NODE * query_spec,
    PT_NODE * derived_table
) 

function mq_substitute_select_in_statement

static PT_NODE * mq_substitute_select_in_statement (
    PARSER_CONTEXT * parser,
    PT_NODE * statement,
    PT_NODE * query_spec,
    PT_NODE * class_
) 

function mq_substitute_spec_in_method_and_hints

static PT_NODE * mq_substitute_spec_in_method_and_hints (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    void * void_arg,
    int * continue_walk
) 

function mq_substitute_subquery_in_statement

static PT_NODE * mq_substitute_subquery_in_statement (
    PARSER_CONTEXT * parser,
    PT_NODE * statement,
    PT_NODE * query_spec,
    PT_NODE * class_,
    PT_NODE * order_by,
    int what_for
) 

function mq_substitute_subquery_list_in_statement

static PT_NODE * mq_substitute_subquery_list_in_statement (
    PARSER_CONTEXT * parser,
    PT_NODE * statement,
    PT_NODE * query_spec_list,
    PT_NODE * class_,
    PT_NODE * order_by,
    int what_for
) 

function mq_translatable_class

static int mq_translatable_class (
    PARSER_CONTEXT * parser,
    PT_NODE * class_
) 

function mq_translate_delete

static PT_NODE * mq_translate_delete (
    PARSER_CONTEXT * parser,
    PT_NODE * delete_statement
) 

function mq_translate_helper

static PT_NODE * mq_translate_helper (
    PARSER_CONTEXT * parser,
    PT_NODE * node
) 

function mq_translate_insert

static PT_NODE * mq_translate_insert (
    PARSER_CONTEXT * parser,
    PT_NODE * insert_statement
) 

function mq_translate_local

static PT_NODE * mq_translate_local (
    PARSER_CONTEXT * parser,
    PT_NODE * statement,
    void * void_arg,
    int * continue_walk
) 

function mq_translate_merge

static PT_NODE * mq_translate_merge (
    PARSER_CONTEXT * parser,
    PT_NODE * merge_statement
) 

function mq_translate_paths

static PT_NODE * mq_translate_paths (
    PARSER_CONTEXT * parser,
    PT_NODE * statement,
    PT_NODE * root_spec
) 

function mq_translate_select

static PT_NODE * mq_translate_select (
    PARSER_CONTEXT * parser,
    PT_NODE * select_statement
) 

function mq_translate_subqueries

static PT_NODE * mq_translate_subqueries (
    PARSER_CONTEXT * parser,
    DB_OBJECT * class_object,
    PT_NODE * attributes,
    DB_AUTH * authorization
) 

function mq_translate_tree

static PT_NODE * mq_translate_tree (
    PARSER_CONTEXT * parser,
    PT_NODE * tree,
    PT_NODE * spec_list,
    PT_NODE * order_by,
    int what_for
) 

function mq_translate_update

static PT_NODE * mq_translate_update (
    PARSER_CONTEXT * parser,
    PT_NODE * update_statement
) 

function mq_translate_value

static PT_NODE * mq_translate_value (
    PARSER_CONTEXT * parser,
    PT_NODE * value
) 

function mq_union_bump_correlation

static PT_NODE * mq_union_bump_correlation (
    PARSER_CONTEXT * parser,
    PT_NODE * left,
    PT_NODE * right
) 

function mq_updatable_local

static PT_UPDATABILITY mq_updatable_local (
    PARSER_CONTEXT * parser,
    PT_NODE * statement,
    DB_OBJECT *** classes,
    int * i,
    int * max
) 

function mq_update_analytic_sort_spec_expr

static PT_NODE * mq_update_analytic_sort_spec_expr (
    PARSER_CONTEXT * parser,
    PT_NODE * new_select_list,
    PT_NODE * old_select_list
) 

function mq_update_order_by

static PT_NODE * mq_update_order_by (
    PARSER_CONTEXT * parser,
    PT_NODE * statement,
    PT_NODE * query_spec,
    PT_NODE * class_,
    PT_NODE * derived_spec,
    bool skip_adding_hidden_col
) 

function pt_check_for_update_clause

static int pt_check_for_update_clause (
    PARSER_CONTEXT * parser,
    PT_NODE * query,
    bool root
) 

function pt_check_for_update_subquery

static PT_NODE * pt_check_for_update_subquery (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    void * arg,
    int * continue_walk
) 

function pt_check_odku_refs_pre

static PT_NODE * pt_check_odku_refs_pre (
    PARSER_CONTEXT * parser,
    PT_NODE * odku,
    void * arg,
    int * continue_walk
) 

function pt_check_odku_refs_view

static void pt_check_odku_refs_view (
    PARSER_CONTEXT * parser,
    PT_NODE * statement
) 

function pt_check_pushable

static PT_NODE * pt_check_pushable (
    PARSER_CONTEXT * parser,
    PT_NODE * tree,
    void * arg,
    int * continue_walk
) 

function pt_check_pushable_select_list

static PT_NODE * pt_check_pushable_select_list (
    PARSER_CONTEXT * parser,
    PT_NODE * tree,
    void * arg,
    int * continue_walk
) 

function pt_check_pushable_subquery_select_list

static bool pt_check_pushable_subquery_select_list (
    PARSER_CONTEXT * parser,
    PT_NODE * query,
    int pos
) 

function pt_check_pushable_term

static bool pt_check_pushable_term (
    PARSER_CONTEXT * parser,
    PT_NODE * term,
    FIND_ID_INFO * infop
) 

function pt_copypush_terms

static void pt_copypush_terms (
    PARSER_CONTEXT * parser,
    PT_NODE * spec,
    PT_NODE * query,
    PT_NODE * term_list,
    FIND_ID_TYPE type
) 

function pt_find_only_name_id

static PT_NODE * pt_find_only_name_id (
    PARSER_CONTEXT * parser,
    PT_NODE * tree,
    void * arg,
    int * continue_walk
) 

function pt_for_update_prepare_query

static int pt_for_update_prepare_query (
    PARSER_CONTEXT * parser,
    PT_NODE * query
) 

function pt_for_update_prepare_query_internal

static int pt_for_update_prepare_query_internal (
    PARSER_CONTEXT * parser,
    PT_NODE * query
) 

static PT_NODE * pt_remove_cast_wrap_for_dblink (
    PARSER_CONTEXT * parser,
    PT_NODE * old_node,
    void * arg,
    int * continue_walk
) 

Macro Definition Documentation

define MAX_CYCLE

#define MAX_CYCLE `300`

define MAX_STACK_OBJECTS

#define MAX_STACK_OBJECTS `500`

define MQ_FIX_SPEC_ID

#define MQ_FIX_SPEC_ID (
    tmp_hint,
    hint,
    info
) `/* multi line expression */`

define MQ_IS_LEFT_JOIN_SPEC

#define MQ_IS_LEFT_JOIN_SPEC (
    s
) `/* multi line expression */`

define MQ_IS_OUTER_JOIN_SPEC

#define MQ_IS_OUTER_JOIN_SPEC (
    s
) `/* multi line expression */`

define PT_PUSHABLE_TERM

#define PT_PUSHABLE_TERM (
    p
) `(( p )->out.pushable && ( p )->out.found && !( p )->out.others_found)`


The documentation for this class was generated from the following file cubrid/src/parser/view_transform.c