Skip to content

File name_resolution.c

FileList > cubrid > src > parser > name_resolution.c

Go to the source code of this file

  • #include "config.h"
  • #include <assert.h>
  • #include <unordered_map>
  • #include "authenticate.h"
  • #include "porting.h"
  • #include "error_manager.h"
  • #include "parser.h"
  • #include "parser_message.h"
  • #include "semantic_check.h"
  • #include "dbtype.h"
  • #include "object_domain.h"
  • #include "object_primitive.h"
  • #include "memory_alloc.h"
  • #include "intl_support.h"
  • #include "memory_hash.h"
  • #include "system_parameter.h"
  • #include "object_print.h"
  • #include "jsp_cl.h"
  • #include "execute_schema.h"
  • #include "schema_manager.h"
  • #include "schema_system_catalog_constants.h"
  • #include "execute_statement.h"
  • #include "show_meta.h"
  • #include "network_interface_cl.h"
  • #include "locator_cl.h"
  • #include "db_json.hpp"
  • #include <cas_cci.h>

Classes

Type Name
struct S_REMOTE_COL_ATTR
struct extra_specs_frame
struct link_columns
struct natural_join_attr_info
struct pt_bind_names_arg
struct pt_bind_names_data_type
struct remote_tbl_cols
struct scopes

Public Types

Type Name
typedef struct natural_join_attr_info NATURAL_JOIN_ATTR_INFO
typedef struct pt_bind_names_arg PT_BIND_NAMES_ARG
typedef struct pt_bind_names_data_type PT_BIND_NAMES_DATA_TYPE
typedef struct extra_specs_frame PT_EXTRA_SPECS_FRAME
typedef struct scopes SCOPES
typedef struct link_columns S_LINK_COLUMNS
typedef struct remote_tbl_cols S_REMOTE_TBL_COLS
enum name__resolution_8c_1ac34c4c978f4130a92a5068f9e21ea9fc

Public Attributes

Type Name
size_t json_table_column_count
int parser_function_code
PT_TYPE_ENUM pt_type

Public Static Attributes

Type Name
const char * CPTR_PT_NAME_IN_GROUP_HAVING = "name\_in\_group\_having"

Public Functions

Type Name
PT_NODE * pt_add_class_to_entity_list (PARSER_CONTEXT * parser, DB_OBJECT * class_, PT_NODE * entity, const PT_NODE * parent, UINTPTR id, PT_MISC_TYPE meta_class)
PT_NODE * pt_bind_param_node (PARSER_CONTEXT * parser, PT_NODE * node, void * arg, int * continue_walk)
PT_NODE * pt_bind_values_to_hostvars (PARSER_CONTEXT * parser, PT_NODE * node)
int pt_check_dblink_column_alias (PARSER_CONTEXT * parser, PT_NODE * dblink)
PT_NODE * pt_check_dblink_query (PARSER_CONTEXT * parser, PT_NODE * node, void * arg, int * continue_walk)
int pt_check_same_datatype (const PARSER_CONTEXT * parser, const PT_NODE * p, const PT_NODE * q)
int pt_check_unique_names (PARSER_CONTEXT * parser, const PT_NODE * p)
PT_NODE * pt_domain_to_data_type (PARSER_CONTEXT * parser, DB_DOMAIN * domain)
PT_NODE * pt_eval_value_path (PARSER_CONTEXT * parser, PT_NODE * path)
PT_NODE * pt_find_entity (PARSER_CONTEXT * parser, const PT_NODE * scope, UINTPTR id)
PT_NODE * pt_flat_spec_pre (PARSER_CONTEXT * parser, PT_NODE * node, void * arg, int * continue_walk)
void pt_free_dblink_remote_cols (PARSER_CONTEXT * parser)
PT_NODE * pt_insert_entity (PARSER_CONTEXT * parser, PT_NODE * path, PT_NODE * prev_entity, PT_NODE * correlation_entity)
PT_OP_TYPE pt_op_type_from_default_expr_type (DB_DEFAULT_EXPR_TYPE expr_type)
int pt_quick_resolve_names (PARSER_CONTEXT * parser, PT_NODE ** spec_p, PT_NODE ** node_p, SEMANTIC_CHK_INFO * sc_info)
PT_NODE * pt_resolve_cte_specs (PARSER_CONTEXT * parser, PT_NODE * node, void * arg, int * continue_walk)
int pt_resolve_default_value (PARSER_CONTEXT * parser, PT_NODE * name)
PT_NODE * pt_resolve_names (PARSER_CONTEXT * parser, PT_NODE * statement, SEMANTIC_CHK_INFO * sc_info)
void pt_resolve_object (PARSER_CONTEXT * parser, PT_NODE * node)
DB_OBJECT * pt_resolve_serial (PARSER_CONTEXT * parser, PT_NODE * node)
int pt_resolve_server_names (PARSER_CONTEXT * parser, PT_NODE * spec)
PT_NODE * pt_resolve_star (PARSER_CONTEXT * parser, PT_NODE * from, PT_NODE * attr)
PT_NODE * pt_resolve_using_index (PARSER_CONTEXT * parser, PT_NODE * index, PT_NODE * from, bool * is_ignore)
int pt_resolved (const PT_NODE * expr)
void pt_set_fill_default_in_path_expression (PT_NODE * node)
PT_NODE * pt_set_is_view_spec (PARSER_CONTEXT * parser, PT_NODE * node, void * arg, int * continue_walk)
int pt_str_compare (const char * p, const char * q, CASE_SENSITIVENESS case_flag)
int pt_user_specified_name_compare (const char * p, const char * q)

Public Static Functions

Type Name
void check_for_already_exists (PARSER_CONTEXT * parser, S_LINK_COLUMNS * plkcol, const char * resolved, const char * original)
void fill_in_insert_default_function_arguments (PARSER_CONTEXT * parser, PT_NODE *const node)
void free_natural_join_attrs (NATURAL_JOIN_ATTR_INFO * attrs)
int generate_natural_join_attrs_from_db_attrs (DB_ATTRIBUTE * db_attrs, NATURAL_JOIN_ATTR_INFO ** attrs_p)
int generate_natural_join_attrs_from_subquery (PT_NODE * subquery_attrs_list, NATURAL_JOIN_ATTR_INFO ** attrs_p)
NATURAL_JOIN_ATTR_INFO * get_natural_join_attrs_from_pt_spec (PARSER_CONTEXT * parser, PT_NODE * node)
bool is_pt_name_in_group_having (PT_NODE * node)
bool natural_join_equal_attr (NATURAL_JOIN_ATTR_INFO * lhs, NATURAL_JOIN_ATTR_INFO * rhs)
PT_NODE * pt_bind_cte_self_references_types (PARSER_CONTEXT * parser, PT_NODE * node, void * arg, int * continue_walk)
PT_NODE * pt_bind_name_or_path_in_scope (PARSER_CONTEXT * parser, PT_BIND_NAMES_ARG * bind_arg, PT_NODE * in_node)
PT_NODE * pt_bind_name_to_spec (PARSER_CONTEXT * parser, PT_NODE * node, void * arg, int * continue_walk)
PT_NODE * pt_bind_names (PARSER_CONTEXT * parser, PT_NODE * node, void * arg, int * continue_walk)
void pt_bind_names_in_cte (PARSER_CONTEXT * parser, PT_NODE * node, PT_BIND_NAMES_ARG * bind_arg)
void pt_bind_names_in_with_clause (PARSER_CONTEXT * parser, PT_NODE * node, PT_BIND_NAMES_ARG * bind_arg)
void pt_bind_names_merge_insert (PARSER_CONTEXT * parser, PT_NODE * node, PT_BIND_NAMES_ARG * bind_arg, SCOPES * scopestack, PT_EXTRA_SPECS_FRAME * specs_frame)
void pt_bind_names_merge_update (PARSER_CONTEXT * parser, PT_NODE * node, PT_BIND_NAMES_ARG * bind_arg, SCOPES * scopestack, PT_EXTRA_SPECS_FRAME * specs_frame)
PT_NODE * pt_bind_names_post (PARSER_CONTEXT * parser, PT_NODE * node, void * arg, int * continue_walk)
PT_NODE * pt_bind_parameter (PARSER_CONTEXT * parser, PT_NODE * parameter)
PT_NODE * pt_bind_parameter_path (PARSER_CONTEXT * parser, PT_NODE * path)
PT_NODE * pt_bind_reserved_name (PARSER_CONTEXT * parser, PT_NODE * in_node, PT_NODE * spec)
void pt_bind_scope (PARSER_CONTEXT * parser, PT_BIND_NAMES_ARG * bind_arg)
void pt_bind_spec_attrs (PARSER_CONTEXT * parser, PT_NODE * spec)
void pt_bind_type_of_host_var (PARSER_CONTEXT * parser, PT_NODE * hv)
PT_NODE * pt_bind_value_to_hostvar_local (PARSER_CONTEXT * parser, PT_NODE * node, void * arg, int * continue_walk)
PARSER_VARCHAR * pt_build_select_list_for_dblink (PARSER_CONTEXT * parser, PT_NODE * col_list)
PT_NODE * pt_check_Oracle_outerjoin (PARSER_CONTEXT * parser, PT_NODE * node, void * arg, int * continue_walk)
void pt_check_column_list (PARSER_CONTEXT * parser, const char * tbl_alias_nm, PT_DBLINK_INFO * dblink_table, S_REMOTE_TBL_COLS * rmt_cols)
int pt_check_unique_exposed (PARSER_CONTEXT * parser, const PT_NODE * p)
PT_NODE * pt_clear_Oracle_outerjoin_spec_id (PARSER_CONTEXT * parser, PT_NODE * node, void * arg, int * continue_walk)
PT_NODE * pt_common_attribute (PARSER_CONTEXT * parser, PT_NODE * p, PT_NODE * q)
PT_NODE * pt_copy_data_type_entity (PARSER_CONTEXT * parser, PT_NODE * data_type)
PT_NODE * pt_count_ctes_post (PARSER_CONTEXT * parser, PT_NODE * node, void * arg, int * continue_walk)
PT_NODE * pt_count_with_clauses (PARSER_CONTEXT * parser, PT_NODE * node, void * arg, int * continue_walk)
PT_NODE * pt_create_pt_expr_and_node (PARSER_CONTEXT * parser, PT_NODE * arg1, PT_NODE * arg2)
PT_NODE * pt_create_pt_expr_equal_node (PARSER_CONTEXT * parser, PT_NODE * arg1, PT_NODE * arg2)
PT_NODE * pt_create_pt_name (PARSER_CONTEXT * parser, PT_NODE * spec, NATURAL_JOIN_ATTR_INFO * attr)
T_CCI_U_TYPE pt_dblink_get_basic_utype (T_CCI_U_EXT_TYPE u_ext_type)
bool pt_dblink_table_fill_attr_def (PARSER_CONTEXT * parser, PT_NODE * attr_def_node, const S_REMOTE_COL_ATTR * attr)
PT_NODE * pt_dblink_table_gather_attribs (PARSER_CONTEXT * parser, PT_NODE * dblink_column, void * args, int * continue_walk)
int pt_dblink_table_get_column_defs (PARSER_CONTEXT * parser, PT_NODE * dblink, S_REMOTE_TBL_COLS * rmt_tbl_cols)
PT_NODE * pt_expand_external_path (PARSER_CONTEXT * parser, PT_NODE * in_node, PT_NODE ** p_entity)
int pt_find_attr_in_class_list (PARSER_CONTEXT * parser, PT_NODE * flat, PT_NODE * attr)
int pt_find_class_attribute (PARSER_CONTEXT * parser, PT_NODE * cls, PT_NODE * attr)
PT_NODE * pt_find_entity_in_scopes (PARSER_CONTEXT * parser, SCOPES * scopes, UINTPTR spec_id)
FUNC_CODE pt_find_function_type (const char * name)
int pt_find_name_in_spec (PARSER_CONTEXT * parser, PT_NODE * spec, PT_NODE * name)
PT_NODE * pt_find_outer_entity_in_scopes (PARSER_CONTEXT * parser, SCOPES * scopes, UINTPTR spec_id, short * scope_location)
PT_NODE * pt_find_path_entity (PARSER_CONTEXT * parser, PT_NODE * scope, PT_NODE * match)
int pt_function_name_is_spec_attr (PARSER_CONTEXT * parser, PT_NODE * name, PT_BIND_NAMES_ARG * bind_arg, int * is_spec_attr)
void pt_gather_dblink_colums (PARSER_CONTEXT * parser, PT_NODE * query_stmt)
PT_NODE * pt_get_all_attributes_and_types (PARSER_CONTEXT * parser, PT_NODE * cls, PT_NODE * from)
PT_NODE * pt_get_all_dblink_table_attributes_and_types (PARSER_CONTEXT * parser, PT_NODE * dblink_cols, const char * dblink_table_alias)
PT_NODE * pt_get_all_json_table_attributes_and_types (PARSER_CONTEXT * parser, PT_NODE * json_table_node, const char * json_table_alias)
PT_NODE * pt_get_all_showstmt_attributes_and_types (PARSER_CONTEXT * parser, PT_NODE * derived_table)
void pt_get_attr_data_type (PARSER_CONTEXT * parser, DB_ATTRIBUTE * att, PT_NODE * attr)
PT_NODE * pt_get_attr_list_of_derived_table (PARSER_CONTEXT * parser, PT_MISC_TYPE derived_table_type, PT_NODE * derived_table, PT_NODE * derived_name)
void pt_get_cols_for_dblink (PARSER_CONTEXT * parser, S_LINK_COLUMNS * plkcol, PT_QUERY_INFO * query, PT_NODE * on_cond)
PT_NODE * pt_get_column_name_pre (PARSER_CONTEXT * parser, PT_NODE * node, void * arg, int * continue_walk)
PT_NODE * pt_get_resolution (PARSER_CONTEXT * parser, PT_BIND_NAMES_ARG * bind_arg, PT_NODE * scope, PT_NODE * in_node, PT_NODE ** p_entity, int col_name)
const char * pt_get_unique_exposed_name (PARSER_CONTEXT * parser, PT_NODE * first_spec)
PT_NODE * pt_insert_conjunct (PARSER_CONTEXT * parser, PT_NODE * path_dot, PT_NODE * prev_entity)
PT_NODE * pt_is_correlation_name (PARSER_CONTEXT * parser, PT_NODE * scope, PT_NODE * nam)
PT_NODE * pt_is_on_list (PARSER_CONTEXT * parser, const PT_NODE * p, const PT_NODE * list)
PT_NODE * pt_json_table_gather_attribs (PARSER_CONTEXT * parser, PT_NODE * json_table_node, void * args, int * continue_walk)
PT_NODE * pt_lookup_entity (PARSER_CONTEXT * parser, PT_NODE * path_entities, PT_NODE * expr)
PT_NODE * pt_make_flat_list_from_data_types (PARSER_CONTEXT * parser, PT_NODE * res_list, PT_NODE * entity)
PT_NODE * pt_make_flat_name_list (PARSER_CONTEXT * parser, PT_NODE * spec, PT_NODE * spec_parent, bool for_update)
PT_NODE * pt_make_method_call (PARSER_CONTEXT * parser, PT_NODE * node, PT_BIND_NAMES_ARG * bind_arg)
PT_NODE * pt_make_subclass_list (PARSER_CONTEXT * parser, DB_OBJECT * db, int line_num, int col_num, UINTPTR id, PT_MISC_TYPE meta_class, MHT_TABLE * names_mht)
void pt_mark_function_index_expression (PARSER_CONTEXT * parser, PT_NODE * expr, PT_BIND_NAMES_ARG * bind_arg)
PT_NODE * pt_mark_group_having_pt_name (PARSER_CONTEXT * parser, PT_NODE * node, void * chk_parent, int * continue_walk)
PT_NODE * pt_mark_location (PARSER_CONTEXT * parser, PT_NODE * node, void * arg, int * continue_walk)
PT_NODE * pt_mark_pt_name (PARSER_CONTEXT * parser, PT_NODE * node, void * chk_parent, int * continue_walk)
PT_NODE * pt_mk_attr_def_node (PARSER_CONTEXT * parser, PT_NODE * name_node, S_REMOTE_TBL_COLS * rmt_cols)
int pt_must_have_exposed_name (PARSER_CONTEXT * parser, PT_NODE * p)
PT_NODE * pt_name_list_diff (PARSER_CONTEXT * parser, PT_NODE * list, PT_NODE * deletions)
PT_NODE * pt_name_list_union (PARSER_CONTEXT * parser, PT_NODE * list, PT_NODE * additions)
PT_NODE * pt_object_to_data_type (PARSER_CONTEXT * parser, PT_NODE * class_list)
PT_NODE * pt_parameterize_for_static_sql (PARSER_CONTEXT * parser, PT_NODE * node)
const char * pt_print_pl_host_expr (PARSER_CONTEXT * parser, PT_NODE * node)
int pt_remake_dblink_select_list (PARSER_CONTEXT * parser, PT_SPEC_INFO * class_spec, S_REMOTE_TBL_COLS * rmt_cols)
PT_NODE * pt_resolve_correlation (PARSER_CONTEXT * parser, PT_NODE * in_node, PT_NODE * scope, PT_NODE * exposed_spec, int col_name, PT_NODE ** p_entity)
int pt_resolve_dblink_check_owner_name (PARSER_CONTEXT * parser, PT_NODE * node, char ** server_owner_name)
int pt_resolve_dblink_server_name (PARSER_CONTEXT * parser, PT_NODE * node, char ** server_owner_name)
PT_NODE * pt_resolve_group_having_alias (PARSER_CONTEXT * parser, PT_NODE * node, void * chk_parent, int * continue_walk)
void pt_resolve_group_having_alias_internal (PARSER_CONTEXT * parser, PT_NODE ** node_p, PT_NODE * select_list)
void pt_resolve_group_having_alias_pt_expr (PARSER_CONTEXT * parser, PT_NODE * node, PT_NODE * select_list)
void pt_resolve_group_having_alias_pt_name (PARSER_CONTEXT * parser, PT_NODE ** node_p, PT_NODE * select_list)
void pt_resolve_group_having_alias_pt_sort_spec (PARSER_CONTEXT * parser, PT_NODE * node, PT_NODE * select_list)
int pt_resolve_hint (PARSER_CONTEXT * parser, PT_NODE * node)
int pt_resolve_hint_args (PARSER_CONTEXT * parser, PT_NODE ** arg_list, PT_NODE * spec_list, bool discard_no_match)
PT_NODE * pt_resolve_method (PARSER_CONTEXT * parser, PT_NODE * node, PT_BIND_NAMES_ARG * bind_arg)
bool pt_resolve_method_type (PARSER_CONTEXT * parser, PT_NODE * node)
PT_NODE * pt_resolve_natural_join (PARSER_CONTEXT * parser, PT_NODE * node, void * chk_parent, int * continue_walk)
void pt_resolve_natural_join_internal (PARSER_CONTEXT * parser, PT_NODE * join_lhs, PT_NODE * join_rhs)
PT_NODE * pt_resolve_partition_spec (PARSER_CONTEXT * parser, PT_NODE * partition_spec, PT_NODE * spec_parent, bool fo_update)
PT_NODE * pt_resolve_spec_to_cte (PARSER_CONTEXT * parser, PT_NODE * node, void * arg, int * continue_walk)
PT_NODE * pt_resolve_spec_to_cte_and_count (PARSER_CONTEXT * parser, PT_NODE * node, void * arg, int * continue_walk)
PT_NODE * pt_resolve_star_reserved_names (PARSER_CONTEXT * parser, PT_NODE * from)
PT_NODE * pt_resolve_stored_procedure (PARSER_CONTEXT * parser, PT_NODE * node, PT_BIND_NAMES_ARG * bind_arg)
PT_NODE * pt_resolve_vclass_args (PARSER_CONTEXT * parser, PT_NODE * statement)
void pt_set_attr_list_types (PARSER_CONTEXT * parser, PT_NODE * as_attr_list, PT_MISC_TYPE derived_table_type, PT_NODE * derived_table, PT_NODE * parent_spec)
PT_NODE * pt_set_reserved_name_key_type (PARSER_CONTEXT * parser, PT_NODE * node, void * arg, int * continue_walk)
int pt_spec_in_domain (PT_NODE * cls, PT_NODE * lst)
PT_NODE * pt_undef_names_post (PARSER_CONTEXT * parser, PT_NODE * node, void * arg, int * continue_walk)
PT_NODE * pt_undef_names_pre (PARSER_CONTEXT * parser, PT_NODE * node, void * arg, int * continue_walk)
PT_NODE * pt_unwhacked_spec (PARSER_CONTEXT * parser, PT_NODE * scope, PT_NODE * spec)
void pt_write_semantic_warning (PARSER_CONTEXT * parser, PT_NODE * name, int line_no, int msg_no)

Macros

Type Name
define DBDEF_HEADER_
define DBLINK_ATTR_CLASS_NAME (11)
define DBLINK_ATTR_NAME (1)
define DBLINK_ATTR_PRECISION (4)
define DBLINK_ATTR_SCALE (3)
define DBLINK_ATTR_TYPE (2)
define MAX_LEN_CONNECTION_URL 512
define PT_NAMES_HASH_SIZE 50
define SQL_MAX_TEXT_LEN [**DB\_MAX\_IDENTIFIER\_LENGTH**](dbtype__def_8h.md#define-db_max_identifier_length) \* 2 + 16

Public Types Documentation

typedef NATURAL_JOIN_ATTR_INFO

typedef struct natural_join_attr_info NATURAL_JOIN_ATTR_INFO;

typedef PT_BIND_NAMES_ARG

typedef struct pt_bind_names_arg PT_BIND_NAMES_ARG;

typedef PT_BIND_NAMES_DATA_TYPE

typedef struct pt_bind_names_data_type PT_BIND_NAMES_DATA_TYPE;

typedef PT_EXTRA_SPECS_FRAME

typedef struct extra_specs_frame PT_EXTRA_SPECS_FRAME;

typedef SCOPES

typedef struct scopes SCOPES;

typedef struct link_columns S_LINK_COLUMNS;

typedef S_REMOTE_TBL_COLS

typedef struct remote_tbl_cols S_REMOTE_TBL_COLS;

enum name__resolution_8c_1ac34c4c978f4130a92a5068f9e21ea9fc

enum name__resolution_8c_1ac34c4c978f4130a92a5068f9e21ea9fc {
    REQUIRE_ALL_MATCH = false,
    DISCARD_NO_MATCH = true
};

Public Attributes Documentation

variable json_table_column_count

size_t json_table_column_count;

variable parser_function_code

int parser_function_code;

variable pt_type

PT_TYPE_ENUM pt_type[CCI_U_TYPE_LAST+1];

Public Static Attributes Documentation

variable CPTR_PT_NAME_IN_GROUP_HAVING

const char* CPTR_PT_NAME_IN_GROUP_HAVING;

Public Functions Documentation

function pt_add_class_to_entity_list

PT_NODE * pt_add_class_to_entity_list (
    PARSER_CONTEXT * parser,
    DB_OBJECT * class_,
    PT_NODE * entity,
    const  PT_NODE * parent,
    UINTPTR id,
    PT_MISC_TYPE meta_class
) 

function pt_bind_param_node

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

function pt_bind_values_to_hostvars

PT_NODE * pt_bind_values_to_hostvars (
    PARSER_CONTEXT * parser,
    PT_NODE * node
) 

int pt_check_dblink_column_alias (
    PARSER_CONTEXT * parser,
    PT_NODE * dblink
) 

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

function pt_check_same_datatype

int pt_check_same_datatype (
    const  PARSER_CONTEXT * parser,
    const  PT_NODE * p,
    const  PT_NODE * q
) 

function pt_check_unique_names

int pt_check_unique_names (
    PARSER_CONTEXT * parser,
    const  PT_NODE * p
) 

function pt_domain_to_data_type

PT_NODE * pt_domain_to_data_type (
    PARSER_CONTEXT * parser,
    DB_DOMAIN * domain
) 

function pt_eval_value_path

PT_NODE * pt_eval_value_path (
    PARSER_CONTEXT * parser,
    PT_NODE * path
) 

function pt_find_entity

PT_NODE * pt_find_entity (
    PARSER_CONTEXT * parser,
    const  PT_NODE * scope,
    UINTPTR id
) 

function pt_flat_spec_pre

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

void pt_free_dblink_remote_cols (
    PARSER_CONTEXT * parser
) 

function pt_insert_entity

PT_NODE * pt_insert_entity (
    PARSER_CONTEXT * parser,
    PT_NODE * path,
    PT_NODE * prev_entity,
    PT_NODE * correlation_entity
) 

function pt_op_type_from_default_expr_type

PT_OP_TYPE pt_op_type_from_default_expr_type (
    DB_DEFAULT_EXPR_TYPE expr_type
) 

function pt_quick_resolve_names

int pt_quick_resolve_names (
    PARSER_CONTEXT * parser,
    PT_NODE ** spec_p,
    PT_NODE ** node_p,
    SEMANTIC_CHK_INFO * sc_info
) 

function pt_resolve_cte_specs

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

function pt_resolve_default_value

int pt_resolve_default_value (
    PARSER_CONTEXT * parser,
    PT_NODE * name
) 

function pt_resolve_names

PT_NODE * pt_resolve_names (
    PARSER_CONTEXT * parser,
    PT_NODE * statement,
    SEMANTIC_CHK_INFO * sc_info
) 

function pt_resolve_object

void pt_resolve_object (
    PARSER_CONTEXT * parser,
    PT_NODE * node
) 

function pt_resolve_serial

DB_OBJECT * pt_resolve_serial (
    PARSER_CONTEXT * parser,
    PT_NODE * node
) 

function pt_resolve_server_names

int pt_resolve_server_names (
    PARSER_CONTEXT * parser,
    PT_NODE * spec
) 

function pt_resolve_star

PT_NODE * pt_resolve_star (
    PARSER_CONTEXT * parser,
    PT_NODE * from,
    PT_NODE * attr
) 

function pt_resolve_using_index

PT_NODE * pt_resolve_using_index (
    PARSER_CONTEXT * parser,
    PT_NODE * index,
    PT_NODE * from,
    bool * is_ignore
) 

function pt_resolved

int pt_resolved (
    const  PT_NODE * expr
) 

function pt_set_fill_default_in_path_expression

void pt_set_fill_default_in_path_expression (
    PT_NODE * node
) 

function pt_set_is_view_spec

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

function pt_str_compare

int pt_str_compare (
    const  char * p,
    const  char * q,
    CASE_SENSITIVENESS case_flag
) 

function pt_user_specified_name_compare

int pt_user_specified_name_compare (
    const  char * p,
    const  char * q
) 

Public Static Functions Documentation

function check_for_already_exists

static void check_for_already_exists (
    PARSER_CONTEXT * parser,
    S_LINK_COLUMNS * plkcol,
    const  char * resolved,
    const  char * original
) 

function fill_in_insert_default_function_arguments

static void fill_in_insert_default_function_arguments (
    PARSER_CONTEXT * parser,
    PT_NODE * const node
) 

function free_natural_join_attrs

static void free_natural_join_attrs (
    NATURAL_JOIN_ATTR_INFO * attrs
) 

function generate_natural_join_attrs_from_db_attrs

static int generate_natural_join_attrs_from_db_attrs (
    DB_ATTRIBUTE * db_attrs,
    NATURAL_JOIN_ATTR_INFO ** attrs_p
) 

function generate_natural_join_attrs_from_subquery

static int generate_natural_join_attrs_from_subquery (
    PT_NODE * subquery_attrs_list,
    NATURAL_JOIN_ATTR_INFO ** attrs_p
) 

function get_natural_join_attrs_from_pt_spec

static NATURAL_JOIN_ATTR_INFO * get_natural_join_attrs_from_pt_spec (
    PARSER_CONTEXT * parser,
    PT_NODE * node
) 

function is_pt_name_in_group_having

static bool is_pt_name_in_group_having (
    PT_NODE * node
) 

function natural_join_equal_attr

static bool natural_join_equal_attr (
    NATURAL_JOIN_ATTR_INFO * lhs,
    NATURAL_JOIN_ATTR_INFO * rhs
) 

function pt_bind_cte_self_references_types

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

function pt_bind_name_or_path_in_scope

static PT_NODE * pt_bind_name_or_path_in_scope (
    PARSER_CONTEXT * parser,
    PT_BIND_NAMES_ARG * bind_arg,
    PT_NODE * in_node
) 

function pt_bind_name_to_spec

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

function pt_bind_names

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

function pt_bind_names_in_cte

static void pt_bind_names_in_cte (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    PT_BIND_NAMES_ARG * bind_arg
) 

function pt_bind_names_in_with_clause

static void pt_bind_names_in_with_clause (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    PT_BIND_NAMES_ARG * bind_arg
) 

function pt_bind_names_merge_insert

static void pt_bind_names_merge_insert (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    PT_BIND_NAMES_ARG * bind_arg,
    SCOPES * scopestack,
    PT_EXTRA_SPECS_FRAME * specs_frame
) 

function pt_bind_names_merge_update

static void pt_bind_names_merge_update (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    PT_BIND_NAMES_ARG * bind_arg,
    SCOPES * scopestack,
    PT_EXTRA_SPECS_FRAME * specs_frame
) 

function pt_bind_names_post

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

function pt_bind_parameter

static PT_NODE * pt_bind_parameter (
    PARSER_CONTEXT * parser,
    PT_NODE * parameter
) 

function pt_bind_parameter_path

static PT_NODE * pt_bind_parameter_path (
    PARSER_CONTEXT * parser,
    PT_NODE * path
) 

function pt_bind_reserved_name

static PT_NODE * pt_bind_reserved_name (
    PARSER_CONTEXT * parser,
    PT_NODE * in_node,
    PT_NODE * spec
) 

function pt_bind_scope

static void pt_bind_scope (
    PARSER_CONTEXT * parser,
    PT_BIND_NAMES_ARG * bind_arg
) 

function pt_bind_spec_attrs

static void pt_bind_spec_attrs (
    PARSER_CONTEXT * parser,
    PT_NODE * spec
) 

function pt_bind_type_of_host_var

static void pt_bind_type_of_host_var (
    PARSER_CONTEXT * parser,
    PT_NODE * hv
) 

function pt_bind_value_to_hostvar_local

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

static PARSER_VARCHAR * pt_build_select_list_for_dblink (
    PARSER_CONTEXT * parser,
    PT_NODE * col_list
) 

function pt_check_Oracle_outerjoin

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

function pt_check_column_list

static void pt_check_column_list (
    PARSER_CONTEXT * parser,
    const  char * tbl_alias_nm,
    PT_DBLINK_INFO * dblink_table,
    S_REMOTE_TBL_COLS * rmt_cols
) 

function pt_check_unique_exposed

static int pt_check_unique_exposed (
    PARSER_CONTEXT * parser,
    const  PT_NODE * p
) 

function pt_clear_Oracle_outerjoin_spec_id

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

function pt_common_attribute

static PT_NODE * pt_common_attribute (
    PARSER_CONTEXT * parser,
    PT_NODE * p,
    PT_NODE * q
) 

function pt_copy_data_type_entity

static PT_NODE * pt_copy_data_type_entity (
    PARSER_CONTEXT * parser,
    PT_NODE * data_type
) 

function pt_count_ctes_post

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

function pt_count_with_clauses

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

function pt_create_pt_expr_and_node

static PT_NODE * pt_create_pt_expr_and_node (
    PARSER_CONTEXT * parser,
    PT_NODE * arg1,
    PT_NODE * arg2
) 

function pt_create_pt_expr_equal_node

static PT_NODE * pt_create_pt_expr_equal_node (
    PARSER_CONTEXT * parser,
    PT_NODE * arg1,
    PT_NODE * arg2
) 

function pt_create_pt_name

static PT_NODE * pt_create_pt_name (
    PARSER_CONTEXT * parser,
    PT_NODE * spec,
    NATURAL_JOIN_ATTR_INFO * attr
) 

static T_CCI_U_TYPE pt_dblink_get_basic_utype (
    T_CCI_U_EXT_TYPE u_ext_type
) 

static bool pt_dblink_table_fill_attr_def (
    PARSER_CONTEXT * parser,
    PT_NODE * attr_def_node,
    const  S_REMOTE_COL_ATTR * attr
) 

static PT_NODE * pt_dblink_table_gather_attribs (
    PARSER_CONTEXT * parser,
    PT_NODE * dblink_column,
    void * args,
    int * continue_walk
) 

static int pt_dblink_table_get_column_defs (
    PARSER_CONTEXT * parser,
    PT_NODE * dblink,
    S_REMOTE_TBL_COLS * rmt_tbl_cols
) 

function pt_expand_external_path

static PT_NODE * pt_expand_external_path (
    PARSER_CONTEXT * parser,
    PT_NODE * in_node,
    PT_NODE ** p_entity
) 

function pt_find_attr_in_class_list

static int pt_find_attr_in_class_list (
    PARSER_CONTEXT * parser,
    PT_NODE * flat,
    PT_NODE * attr
) 

function pt_find_class_attribute

static int pt_find_class_attribute (
    PARSER_CONTEXT * parser,
    PT_NODE * cls,
    PT_NODE * attr
) 

function pt_find_entity_in_scopes

static PT_NODE * pt_find_entity_in_scopes (
    PARSER_CONTEXT * parser,
    SCOPES * scopes,
    UINTPTR spec_id
) 

function pt_find_function_type

static FUNC_CODE pt_find_function_type (
    const  char * name
) 

function pt_find_name_in_spec

static int pt_find_name_in_spec (
    PARSER_CONTEXT * parser,
    PT_NODE * spec,
    PT_NODE * name
) 

function pt_find_outer_entity_in_scopes

static PT_NODE * pt_find_outer_entity_in_scopes (
    PARSER_CONTEXT * parser,
    SCOPES * scopes,
    UINTPTR spec_id,
    short * scope_location
) 

function pt_find_path_entity

static PT_NODE * pt_find_path_entity (
    PARSER_CONTEXT * parser,
    PT_NODE * scope,
    PT_NODE * match
) 

function pt_function_name_is_spec_attr

static int pt_function_name_is_spec_attr (
    PARSER_CONTEXT * parser,
    PT_NODE * name,
    PT_BIND_NAMES_ARG * bind_arg,
    int * is_spec_attr
) 

static void pt_gather_dblink_colums (
    PARSER_CONTEXT * parser,
    PT_NODE * query_stmt
) 

function pt_get_all_attributes_and_types

static PT_NODE * pt_get_all_attributes_and_types (
    PARSER_CONTEXT * parser,
    PT_NODE * cls,
    PT_NODE * from
) 

static PT_NODE * pt_get_all_dblink_table_attributes_and_types (
    PARSER_CONTEXT * parser,
    PT_NODE * dblink_cols,
    const  char * dblink_table_alias
) 

function pt_get_all_json_table_attributes_and_types

static PT_NODE * pt_get_all_json_table_attributes_and_types (
    PARSER_CONTEXT * parser,
    PT_NODE * json_table_node,
    const  char * json_table_alias
) 

function pt_get_all_showstmt_attributes_and_types

static PT_NODE * pt_get_all_showstmt_attributes_and_types (
    PARSER_CONTEXT * parser,
    PT_NODE * derived_table
) 

function pt_get_attr_data_type

static void pt_get_attr_data_type (
    PARSER_CONTEXT * parser,
    DB_ATTRIBUTE * att,
    PT_NODE * attr
) 

function pt_get_attr_list_of_derived_table

static PT_NODE * pt_get_attr_list_of_derived_table (
    PARSER_CONTEXT * parser,
    PT_MISC_TYPE derived_table_type,
    PT_NODE * derived_table,
    PT_NODE * derived_name
) 

static void pt_get_cols_for_dblink (
    PARSER_CONTEXT * parser,
    S_LINK_COLUMNS * plkcol,
    PT_QUERY_INFO * query,
    PT_NODE * on_cond
) 

function pt_get_column_name_pre

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

function pt_get_resolution

static PT_NODE * pt_get_resolution (
    PARSER_CONTEXT * parser,
    PT_BIND_NAMES_ARG * bind_arg,
    PT_NODE * scope,
    PT_NODE * in_node,
    PT_NODE ** p_entity,
    int col_name
) 

function pt_get_unique_exposed_name

static const  char * pt_get_unique_exposed_name (
    PARSER_CONTEXT * parser,
    PT_NODE * first_spec
) 

function pt_insert_conjunct

static PT_NODE * pt_insert_conjunct (
    PARSER_CONTEXT * parser,
    PT_NODE * path_dot,
    PT_NODE * prev_entity
) 

function pt_is_correlation_name

static PT_NODE * pt_is_correlation_name (
    PARSER_CONTEXT * parser,
    PT_NODE * scope,
    PT_NODE * nam
) 

function pt_is_on_list

static PT_NODE * pt_is_on_list (
    PARSER_CONTEXT * parser,
    const  PT_NODE * p,
    const  PT_NODE * list
) 

function pt_json_table_gather_attribs

static PT_NODE * pt_json_table_gather_attribs (
    PARSER_CONTEXT * parser,
    PT_NODE * json_table_node,
    void * args,
    int * continue_walk
) 

function pt_lookup_entity

static PT_NODE * pt_lookup_entity (
    PARSER_CONTEXT * parser,
    PT_NODE * path_entities,
    PT_NODE * expr
) 

function pt_make_flat_list_from_data_types

static PT_NODE * pt_make_flat_list_from_data_types (
    PARSER_CONTEXT * parser,
    PT_NODE * res_list,
    PT_NODE * entity
) 

function pt_make_flat_name_list

static PT_NODE * pt_make_flat_name_list (
    PARSER_CONTEXT * parser,
    PT_NODE * spec,
    PT_NODE * spec_parent,
    bool for_update
) 

function pt_make_method_call

static PT_NODE * pt_make_method_call (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    PT_BIND_NAMES_ARG * bind_arg
) 

function pt_make_subclass_list

static PT_NODE * pt_make_subclass_list (
    PARSER_CONTEXT * parser,
    DB_OBJECT * db,
    int line_num,
    int col_num,
    UINTPTR id,
    PT_MISC_TYPE meta_class,
    MHT_TABLE * names_mht
) 

function pt_mark_function_index_expression

static void pt_mark_function_index_expression (
    PARSER_CONTEXT * parser,
    PT_NODE * expr,
    PT_BIND_NAMES_ARG * bind_arg
) 

function pt_mark_group_having_pt_name

static PT_NODE * pt_mark_group_having_pt_name (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    void * chk_parent,
    int * continue_walk
) 

function pt_mark_location

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

function pt_mark_pt_name

static PT_NODE * pt_mark_pt_name (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    void * chk_parent,
    int * continue_walk
) 

function pt_mk_attr_def_node

static PT_NODE * pt_mk_attr_def_node (
    PARSER_CONTEXT * parser,
    PT_NODE * name_node,
    S_REMOTE_TBL_COLS * rmt_cols
) 

function pt_must_have_exposed_name

static int pt_must_have_exposed_name (
    PARSER_CONTEXT * parser,
    PT_NODE * p
) 

function pt_name_list_diff

static PT_NODE * pt_name_list_diff (
    PARSER_CONTEXT * parser,
    PT_NODE * list,
    PT_NODE * deletions
) 

function pt_name_list_union

static PT_NODE * pt_name_list_union (
    PARSER_CONTEXT * parser,
    PT_NODE * list,
    PT_NODE * additions
) 

function pt_object_to_data_type

static PT_NODE * pt_object_to_data_type (
    PARSER_CONTEXT * parser,
    PT_NODE * class_list
) 

function pt_parameterize_for_static_sql

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

function pt_print_pl_host_expr

static const  char * pt_print_pl_host_expr (
    PARSER_CONTEXT * parser,
    PT_NODE * node
) 

static int pt_remake_dblink_select_list (
    PARSER_CONTEXT * parser,
    PT_SPEC_INFO * class_spec,
    S_REMOTE_TBL_COLS * rmt_cols
) 

function pt_resolve_correlation

static PT_NODE * pt_resolve_correlation (
    PARSER_CONTEXT * parser,
    PT_NODE * in_node,
    PT_NODE * scope,
    PT_NODE * exposed_spec,
    int col_name,
    PT_NODE ** p_entity
) 

static int pt_resolve_dblink_check_owner_name (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    char ** server_owner_name
) 

static int pt_resolve_dblink_server_name (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    char ** server_owner_name
) 

function pt_resolve_group_having_alias

static PT_NODE * pt_resolve_group_having_alias (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    void * chk_parent,
    int * continue_walk
) 

function pt_resolve_group_having_alias_internal

static void pt_resolve_group_having_alias_internal (
    PARSER_CONTEXT * parser,
    PT_NODE ** node_p,
    PT_NODE * select_list
) 

function pt_resolve_group_having_alias_pt_expr

static void pt_resolve_group_having_alias_pt_expr (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    PT_NODE * select_list
) 

function pt_resolve_group_having_alias_pt_name

static void pt_resolve_group_having_alias_pt_name (
    PARSER_CONTEXT * parser,
    PT_NODE ** node_p,
    PT_NODE * select_list
) 

function pt_resolve_group_having_alias_pt_sort_spec

static void pt_resolve_group_having_alias_pt_sort_spec (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    PT_NODE * select_list
) 

function pt_resolve_hint

static int pt_resolve_hint (
    PARSER_CONTEXT * parser,
    PT_NODE * node
) 

function pt_resolve_hint_args

static int pt_resolve_hint_args (
    PARSER_CONTEXT * parser,
    PT_NODE ** arg_list,
    PT_NODE * spec_list,
    bool discard_no_match
) 

function pt_resolve_method

static PT_NODE * pt_resolve_method (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    PT_BIND_NAMES_ARG * bind_arg
) 

function pt_resolve_method_type

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

function pt_resolve_natural_join

static PT_NODE * pt_resolve_natural_join (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    void * chk_parent,
    int * continue_walk
) 

function pt_resolve_natural_join_internal

static void pt_resolve_natural_join_internal (
    PARSER_CONTEXT * parser,
    PT_NODE * join_lhs,
    PT_NODE * join_rhs
) 

function pt_resolve_partition_spec

static PT_NODE * pt_resolve_partition_spec (
    PARSER_CONTEXT * parser,
    PT_NODE * partition_spec,
    PT_NODE * spec_parent,
    bool fo_update
) 

function pt_resolve_spec_to_cte

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

function pt_resolve_spec_to_cte_and_count

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

function pt_resolve_star_reserved_names

static PT_NODE * pt_resolve_star_reserved_names (
    PARSER_CONTEXT * parser,
    PT_NODE * from
) 

function pt_resolve_stored_procedure

static PT_NODE * pt_resolve_stored_procedure (
    PARSER_CONTEXT * parser,
    PT_NODE * node,
    PT_BIND_NAMES_ARG * bind_arg
) 

function pt_resolve_vclass_args

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

function pt_set_attr_list_types

static void pt_set_attr_list_types (
    PARSER_CONTEXT * parser,
    PT_NODE * as_attr_list,
    PT_MISC_TYPE derived_table_type,
    PT_NODE * derived_table,
    PT_NODE * parent_spec
) 

function pt_set_reserved_name_key_type

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

function pt_spec_in_domain

static int pt_spec_in_domain (
    PT_NODE * cls,
    PT_NODE * lst
) 

function pt_undef_names_post

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

function pt_undef_names_pre

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

function pt_unwhacked_spec

static PT_NODE * pt_unwhacked_spec (
    PARSER_CONTEXT * parser,
    PT_NODE * scope,
    PT_NODE * spec
) 

function pt_write_semantic_warning

static void pt_write_semantic_warning (
    PARSER_CONTEXT * parser,
    PT_NODE * name,
    int line_no,
    int msg_no
) 

Macro Definition Documentation

define DBDEF_HEADER_

#define DBDEF_HEADER_ 

#define DBLINK_ATTR_CLASS_NAME `(11)`

#define DBLINK_ATTR_NAME `(1)`

#define DBLINK_ATTR_PRECISION `(4)`

#define DBLINK_ATTR_SCALE `(3)`

#define DBLINK_ATTR_TYPE `(2)`

define MAX_LEN_CONNECTION_URL

#define MAX_LEN_CONNECTION_URL `512`

define PT_NAMES_HASH_SIZE

#define PT_NAMES_HASH_SIZE `50`

define SQL_MAX_TEXT_LEN

#define SQL_MAX_TEXT_LEN `DB_MAX_IDENTIFIER_LENGTH * 2 + 16`


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