CUBRID Engine  latest
semantic_check.c File Reference
#include "config.h"
#include <assert.h>
#include "authenticate.h"
#include "error_manager.h"
#include "parser.h"
#include "parser_message.h"
#include "semantic_check.h"
#include "memory_alloc.h"
#include "jsp_cl.h"
#include "execute_schema.h"
#include "set_object.h"
#include "schema_manager.h"
#include "release_string.h"
#include "dbi.h"
#include "xasl_generation.h"
#include "view_transform.h"
#include "show_meta.h"
#include "partition.h"
#include "db_json.hpp"
#include "object_primitive.h"
#include "dbtype.h"

Go to the source code of this file.

Classes

struct  seman_compatible_info
 
struct  PT_VALUE_LINKS
 
struct  db_value_plist
 
struct  PT_CHAIN_INFO
 

Macros

#define PT_CHAIN_LENGTH   10
 

Typedefs

typedef struct seman_compatible_info SEMAN_COMPATIBLE_INFO
 
typedef struct PT_VALUE_LINKS PT_VALUE_LINKS
 
typedef struct db_value_plist DB_VALUE_PLIST
 

Enumerations

enum  PT_CAST_VAL { PT_CAST_VALID, PT_CAST_INVALID, PT_CAST_UNSUPPORTED }
 
enum  PT_UNION_COMPATIBLE { PT_UNION_COMP = 1, PT_UNION_INCOMP = 0, PT_UNION_INCOMP_CANNOT_FIX = -1, PT_UNION_ERROR = -2 }
 
enum  RANGE_MIN_MAX_ENUM { RANGE_MIN = 0, RANGE_MAX = 1 }
 

Functions

static PT_NODEpt_derive_attribute (PARSER_CONTEXT *parser, PT_NODE *c)
 
static PT_NODEpt_get_attributes (PARSER_CONTEXT *parser, const DB_OBJECT *c)
 
static PT_MISC_TYPE pt_get_class_type (PARSER_CONTEXT *parser, const DB_OBJECT *cls)
 
static int pt_number_of_attributes (PARSER_CONTEXT *parser, PT_NODE *stmt, PT_NODE **attrs)
 
static int pt_is_real_class_of_vclass (PARSER_CONTEXT *parser, const PT_NODE *s_class, const PT_NODE *d_class)
 
static int pt_objects_assignable (PARSER_CONTEXT *parser, const PT_NODE *d_class_dt, const PT_NODE *s_class)
 
static int pt_class_compatible (PARSER_CONTEXT *parser, const PT_NODE *class1, const PT_NODE *class2, bool view_definition_context)
 
static bool pt_vclass_compatible (PARSER_CONTEXT *parser, const PT_NODE *att, const PT_NODE *qcol)
 
static int pt_type_assignable (PARSER_CONTEXT *parser, const PT_NODE *d_type, const PT_NODE *s_type)
 
static int pt_collection_compatible (PARSER_CONTEXT *parser, const PT_NODE *col1, const PT_NODE *col2, bool view_definition_context)
 
static PT_UNION_COMPATIBLE pt_union_compatible (PARSER_CONTEXT *parser, PT_NODE *item1, PT_NODE *item2, bool view_definition_context, bool *is_object_type)
 
static bool pt_is_compatible_without_cast (PARSER_CONTEXT *parser, SEMAN_COMPATIBLE_INFO *dest_sci, PT_NODE *src, bool *is_cast_allowed)
 
static PT_NODEpt_to_compatible_cast (PARSER_CONTEXT *parser, PT_NODE *node, SEMAN_COMPATIBLE_INFO *cinfo, int num_cinfo)
 
static void pt_get_compatible_info_from_node (const PT_NODE *att, SEMAN_COMPATIBLE_INFO *cinfo)
 
static PT_NODEpt_get_common_type_for_union (PARSER_CONTEXT *parser, PT_NODE *att1, PT_NODE *att2, SEMAN_COMPATIBLE_INFO *cinfo, int idx, bool *need_cast)
 
static PT_NODEpt_append_statements_on_add_attribute (PARSER_CONTEXT *parser, PT_NODE *statement_list, PT_NODE *stmt_node, const char *class_name, const char *attr_name, PT_NODE *attr)
 
static PT_NODEpt_values_query_to_compatible_cast (PARSER_CONTEXT *parser, PT_NODE *node, SEMAN_COMPATIBLE_INFO *cinfo, int num_cinfo)
 
static PT_NODEpt_make_cast_with_compatible_info (PARSER_CONTEXT *parser, PT_NODE *att, PT_NODE *next_att, SEMAN_COMPATIBLE_INFO *cinfo, bool *new_cast_added)
 
static SEMAN_COMPATIBLE_INFOpt_get_values_query_compatible_info (PARSER_CONTEXT *parser, PT_NODE *node, bool *need_cast)
 
static SEMAN_COMPATIBLE_INFOpt_get_compatible_info (PARSER_CONTEXT *parser, PT_NODE *node, PT_NODE *select_list1, PT_NODE *select_list2, bool *need_cast)
 
static bool pt_combine_compatible_info (PARSER_CONTEXT *parser, SEMAN_COMPATIBLE_INFO *cinfo1, SEMAN_COMPATIBLE_INFO *cinfo2, PT_NODE *att1, PT_NODE *att2, int index)
 
static bool pt_update_compatible_info (PARSER_CONTEXT *parser, SEMAN_COMPATIBLE_INFO *cinfo, PT_TYPE_ENUM common_type, SEMAN_COMPATIBLE_INFO *att1_info, SEMAN_COMPATIBLE_INFO *att2_info)
 
static void pt_resolve_default_external (PARSER_CONTEXT *parser, PT_NODE *alter)
 
static PT_NODEpt_check_data_default (PARSER_CONTEXT *parser, PT_NODE *data_default_list)
 
static PT_NODEpt_find_query (PARSER_CONTEXT *parser, PT_NODE *tree, void *arg, int *continue_walk)
 
static PT_NODEpt_find_default_expression (PARSER_CONTEXT *parser, PT_NODE *tree, void *arg, int *continue_walk)
 
static PT_NODEpt_find_aggregate_function (PARSER_CONTEXT *parser, PT_NODE *tree, void *arg, int *continue_walk)
 
static PT_NODEpt_find_aggregate_analytic_pre (PARSER_CONTEXT *parser, PT_NODE *tree, void *arg, int *continue_walk)
 
static PT_NODEpt_find_aggregate_analytic_post (PARSER_CONTEXT *parser, PT_NODE *tree, void *arg, int *continue_walk)
 
static PT_NODEpt_find_aggregate_analytic_in_where (PARSER_CONTEXT *parser, PT_NODE *node)
 
static void pt_check_attribute_domain (PARSER_CONTEXT *parser, PT_NODE *attr_defs, PT_MISC_TYPE class_type, const char *self, const bool reuse_oid, PT_NODE *stmt)
 
static void pt_check_mutable_attributes (PARSER_CONTEXT *parser, DB_OBJECT *cls, PT_NODE *attr_defs)
 
static void pt_check_alter (PARSER_CONTEXT *parser, PT_NODE *alter)
 
static const char * attribute_name (PARSER_CONTEXT *parser, PT_NODE *att)
 
static int is_shared_attribute (PARSER_CONTEXT *parser, PT_NODE *att)
 
static int pt_find_partition_column_count_func (PT_NODE *func, PT_NODE **name_node)
 
static int pt_find_partition_column_count (PT_NODE *expr, PT_NODE **name_node)
 
static int pt_value_links_add (PARSER_CONTEXT *parser, PT_NODE *val, PT_NODE *parts, PT_VALUE_LINKS *ptl)
 
static int pt_check_partition_values (PARSER_CONTEXT *parser, PT_TYPE_ENUM desired_type, PT_NODE *data_type, PT_VALUE_LINKS *ptl, PT_NODE *parts)
 
static void pt_check_partitions (PARSER_CONTEXT *parser, PT_NODE *stmt, MOP dbobj)
 
static int partition_range_min_max (DB_VALUE **dest, DB_VALUE *inval, int min_max)
 
static int db_value_list_add (DB_VALUE_PLIST **ptail, DB_VALUE *val)
 
static int db_value_list_find (const DB_VALUE_PLIST *phead, const DB_VALUE *val)
 
static int db_value_list_finddel (DB_VALUE_PLIST **phead, DB_VALUE *val)
 
static void pt_check_alter_partition (PARSER_CONTEXT *parser, PT_NODE *stmt, MOP dbobj)
 
static bool pt_attr_refers_to_self (PARSER_CONTEXT *parser, PT_NODE *attr, const char *self)
 
static bool pt_is_compatible_type (const PT_TYPE_ENUM arg1_type, const PT_TYPE_ENUM arg2_type)
 
static PT_UNION_COMPATIBLE pt_check_vclass_attr_qspec_compatible (PARSER_CONTEXT *parser, PT_NODE *attr, PT_NODE *col)
 
static PT_NODEpt_check_vclass_query_spec (PARSER_CONTEXT *parser, PT_NODE *qry, PT_NODE *attrs, const char *self, const bool do_semantic_check)
 
static PT_NODEpt_type_cast_vclass_query_spec (PARSER_CONTEXT *parser, PT_NODE *qry, PT_NODE *attrs)
 
static PT_NODEpt_check_default_vclass_query_spec (PARSER_CONTEXT *parser, PT_NODE *qry, PT_NODE *attrs)
 
static void pt_check_create_view (PARSER_CONTEXT *parser, PT_NODE *stmt)
 
static void pt_check_create_entity (PARSER_CONTEXT *parser, PT_NODE *node)
 
static void pt_check_create_user (PARSER_CONTEXT *parser, PT_NODE *node)
 
static void pt_check_create_index (PARSER_CONTEXT *parser, PT_NODE *node)
 
static void pt_check_drop (PARSER_CONTEXT *parser, PT_NODE *node)
 
static void pt_check_grant_revoke (PARSER_CONTEXT *parser, PT_NODE *node)
 
static void pt_check_method (PARSER_CONTEXT *parser, PT_NODE *node)
 
static void pt_check_truncate (PARSER_CONTEXT *parser, PT_NODE *node)
 
static void pt_check_kill (PARSER_CONTEXT *parser, PT_NODE *node)
 
static PT_NODEpt_check_single_valued_node (PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
 
static PT_NODEpt_check_single_valued_node_post (PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
 
static void pt_check_into_clause (PARSER_CONTEXT *parser, PT_NODE *qry)
 
static int pt_normalize_path (PARSER_CONTEXT *parser, REFPTR(char, c))
 
static int pt_json_str_codeset_normalization (PARSER_CONTEXT *parser, REFPTR(char, c))
 
static int pt_check_json_table_node (PARSER_CONTEXT *parser, PT_NODE *node)
 
static PT_NODEpt_semantic_check_local (PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
 
static PT_NODEpt_gen_isnull_preds (PARSER_CONTEXT *parser, PT_NODE *pred, PT_CHAIN_INFO *chain)
 
static PT_NODEpt_path_chain (PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
 
static PT_NODEpt_expand_isnull_preds_helper (PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
 
static PT_NODEpt_expand_isnull_preds (PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
 
static PT_NODEpt_check_and_replace_hostvar (PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
 
static PT_NODEpt_check_with_clause (PARSER_CONTEXT *parser, PT_NODE *node)
 
static PT_NODEpt_check_with_info (PARSER_CONTEXT *parser, PT_NODE *node, SEMANTIC_CHK_INFO *info)
 
static DB_OBJECTpt_find_class (PARSER_CONTEXT *parser, PT_NODE *p, bool for_update)
 
static void pt_check_unique_attr (PARSER_CONTEXT *parser, const char *entity_name, PT_NODE *att, PT_NODE_TYPE att_type)
 
static void pt_check_function_index_expr (PARSER_CONTEXT *parser, PT_NODE *node)
 
static PT_NODEpt_check_function_index_expr_pre (PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
 
static void pt_check_assignments (PARSER_CONTEXT *parser, PT_NODE *stmt)
 
static PT_NODEpt_replace_names_in_update_values (PARSER_CONTEXT *parser, PT_NODE *update)
 
static PT_NODEpt_replace_referenced_attributes (PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
 
static PT_NODEpt_coerce_insert_values (PARSER_CONTEXT *parser, PT_NODE *stmt)
 
static void pt_check_xaction_list (PARSER_CONTEXT *parser, PT_NODE *node)
 
static PT_NODEpt_count_iso_nodes (PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
 
static PT_NODEpt_count_time_nodes (PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
 
static PT_NODEpt_check_isolation_lvl (PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
 
static PT_NODEpt_check_constraint (PARSER_CONTEXT *parser, const PT_NODE *create, const PT_NODE *constraint)
 
static PT_NODEpt_check_constraints (PARSER_CONTEXT *parser, const PT_NODE *create)
 
static int pt_check_auto_increment_table_option (PARSER_CONTEXT *parser, PT_NODE *create)
 
static DB_OBJECTpt_check_user_exists (PARSER_CONTEXT *parser, PT_NODE *cls_ref)
 
static int pt_collection_assignable (PARSER_CONTEXT *parser, const PT_NODE *d_col, const PT_NODE *s_col)
 
static int pt_assignment_class_compatible (PARSER_CONTEXT *parser, PT_NODE *lhs, PT_NODE *rhs)
 
static PT_NODEpt_assignment_compatible (PARSER_CONTEXT *parser, PT_NODE *lhs, PT_NODE *rhs)
 
static int pt_check_defaultf (PARSER_CONTEXT *parser, PT_NODE *node)
 
static PT_NODEpt_check_vclass_union_spec (PARSER_CONTEXT *parser, PT_NODE *qry, PT_NODE *attrds)
 
static int pt_check_group_concat_order_by (PARSER_CONTEXT *parser, PT_NODE *func)
 
static bool pt_has_parameters (PARSER_CONTEXT *parser, PT_NODE *stmt)
 
static PT_NODEpt_is_parameter_node (PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
 
static PT_NODEpt_resolve_sort_spec_expr (PARSER_CONTEXT *parser, PT_NODE *sort_spec, PT_NODE *select_list)
 
static bool pt_compare_sort_spec_expr (PARSER_CONTEXT *parser, PT_NODE *expr1, PT_NODE *expr2)
 
static PT_NODEpt_find_matching_sort_spec (PARSER_CONTEXT *parser, PT_NODE *spec, PT_NODE *spec_list, PT_NODE *select_list)
 
static PT_NODEpt_remove_unusable_sort_specs (PARSER_CONTEXT *parser, PT_NODE *list)
 
static PT_NODEpt_check_analytic_function (PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
 
static PT_NODEpt_check_filter_index_expr_pre (PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
 
static PT_NODEpt_check_filter_index_expr_post (PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
 
static void pt_check_filter_index_expr (PARSER_CONTEXT *parser, PT_NODE *atts, PT_NODE *node, MOP db_obj)
 
static PT_NODEpt_check_sub_insert (PARSER_CONTEXT *parser, PT_NODE *node, void *void_arg, int *continue_walk)
 
static PT_NODEpt_get_assignments (PT_NODE *node)
 
static int pt_check_cume_dist_percent_rank_order_by (PARSER_CONTEXT *parser, PT_NODE *func)
 
static PT_UNION_COMPATIBLE pt_get_select_list_coll_compat (PARSER_CONTEXT *parser, PT_NODE *query, SEMAN_COMPATIBLE_INFO *cinfo, int num_cinfo)
 
static PT_UNION_COMPATIBLE pt_apply_union_select_list_collation (PARSER_CONTEXT *parser, PT_NODE *query, SEMAN_COMPATIBLE_INFO *cinfo, int num_cinfo)
 
static PT_NODEpt_mark_union_leaf_nodes (PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
 
static void pt_check_vacuum (PARSER_CONTEXT *parser, PT_NODE *node)
 
static PT_NODEpt_check_where (PARSER_CONTEXT *parser, PT_NODE *node)
 
static int pt_check_range_partition_strict_increasing (PARSER_CONTEXT *parser, PT_NODE *stmt, PT_NODE *part, PT_NODE *part_next, PT_NODE *column_dt)
 
static int pt_coerce_partition_value_with_data_type (PARSER_CONTEXT *parser, PT_NODE *value, PT_NODE *data_type)
 
bool pt_check_compatible_node_for_orderby (PARSER_CONTEXT *parser, PT_NODE *order, PT_NODE *column)
 
bool pt_check_cast_op (PARSER_CONTEXT *parser, PT_NODE *node)
 
DB_OBJECTpt_check_user_owns_class (PARSER_CONTEXT *parser, PT_NODE *cls_ref)
 
int pt_class_assignable (PARSER_CONTEXT *parser, const PT_NODE *d_class_dt, const PT_NODE *s_class)
 
PT_NODEpt_check_union_compatibility (PARSER_CONTEXT *parser, PT_NODE *node)
 
PT_NODEpt_check_type_compatibility_of_values_query (PARSER_CONTEXT *parser, PT_NODE *node)
 
PT_NODEpt_check_union_type_compatibility_of_values_query (PARSER_CONTEXT *parser, PT_NODE *node)
 
int pt_attr_check_default_cs_coll (PARSER_CONTEXT *parser, PT_NODE *attr, int default_cs, int default_coll)
 
PT_NODEpt_check_cyclic_reference_in_view_spec (PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
 
PT_NODEpt_type_cast_vclass_query_spec_column (PARSER_CONTEXT *parser, PT_NODE *attr, PT_NODE *col)
 
PT_NODEpt_semantic_quick_check_node (PARSER_CONTEXT *parser, PT_NODE **spec_p, PT_NODE **node_p)
 
PT_NODEpt_semantic_check (PARSER_CONTEXT *parser, PT_NODE *node)
 
void pt_no_attr_and_meta_attr_updates (PARSER_CONTEXT *parser, PT_NODE *statement)
 
void pt_no_double_insert_assignments (PARSER_CONTEXT *parser, PT_NODE *stmt)
 
void pt_no_double_updates (PARSER_CONTEXT *parser, PT_NODE *stmt)
 
PT_NODEpt_invert (PARSER_CONTEXT *parser, PT_NODE *name_expr, PT_NODE *result)
 
int pt_find_var (PT_NODE *p, PT_NODE **result)
 
PT_NODEpt_remove_from_list (PARSER_CONTEXT *parser, PT_NODE *node, PT_NODE *list)
 
PT_NODEpt_find_order_value_in_list (PARSER_CONTEXT *parser, const PT_NODE *sort_value, const PT_NODE *order_list)
 
int pt_check_order_by (PARSER_CONTEXT *parser, PT_NODE *query)
 
int pt_check_path_eq (PARSER_CONTEXT *parser, const PT_NODE *p, const PT_NODE *q)
 
int pt_check_class_eq (PARSER_CONTEXT *parser, PT_NODE *p, PT_NODE *q)
 
PT_NODEpt_count_input_markers (PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
 
PT_NODEpt_count_output_markers (PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
 
PT_NODEpt_has_using_index_clause (PARSER_CONTEXT *parser, PT_NODE *node, void *arg, int *continue_walk)
 
int pt_validate_query_spec (PARSER_CONTEXT *parser, PT_NODE *s, DB_OBJECT *c)
 
PT_NODEpt_find_class_of_index (PARSER_CONTEXT *parser, const char *const index_name, const DB_CONSTRAINT_TYPE index_type)
 
PT_NODEpt_check_odku_assignments (PARSER_CONTEXT *parser, PT_NODE *insert)
 
void pt_try_remove_order_by (PARSER_CONTEXT *parser, PT_NODE *query)
 
STATEMENT_SET_FOLD pt_check_union_is_foldable (PARSER_CONTEXT *parser, PT_NODE *union_node)
 
PT_NODEpt_fold_union (PARSER_CONTEXT *parser, PT_NODE *union_node, STATEMENT_SET_FOLD fold_as)
 

Macro Definition Documentation

#define PT_CHAIN_LENGTH   10

Definition at line 49 of file semantic_check.c.

Referenced by pt_expand_isnull_preds_helper().

Typedef Documentation

Enumeration Type Documentation

Enumerator
PT_CAST_VALID 
PT_CAST_INVALID 
PT_CAST_UNSUPPORTED 

Definition at line 51 of file semantic_check.c.

Enumerator
PT_UNION_COMP 
PT_UNION_INCOMP 
PT_UNION_INCOMP_CANNOT_FIX 
PT_UNION_ERROR 

Definition at line 54 of file semantic_check.c.

Enumerator
RANGE_MIN 
RANGE_MAX 

Definition at line 70 of file semantic_check.c.

Function Documentation

static const char * attribute_name ( PARSER_CONTEXT parser,
PT_NODE att 
)
static
static int db_value_list_add ( DB_VALUE_PLIST **  ptail,
DB_VALUE val 
)
static

Definition at line 6169 of file semantic_check.c.

References db_make_null(), db_value_copy(), db_value_plist::next, NULL, and db_value_plist::val.

Referenced by pt_check_alter_partition().

Here is the caller graph for this function:

static int db_value_list_find ( const DB_VALUE_PLIST phead,
const DB_VALUE val 
)
static

Definition at line 6218 of file semantic_check.c.

References DB_EQ, DB_IS_NULL, db_make_null(), db_value_compare(), db_value_plist::next, NULL, and db_value_plist::val.

Referenced by pt_check_alter_partition().

Here is the caller graph for this function:

static int db_value_list_finddel ( DB_VALUE_PLIST **  phead,
DB_VALUE val 
)
static

Definition at line 6256 of file semantic_check.c.

References DB_EQ, DB_IS_NULL, db_make_null(), db_value_compare(), free_and_init, db_value_plist::next, NULL, pr_free_ext_value(), and db_value_plist::val.

Referenced by pt_check_alter_partition().

Here is the caller graph for this function:

static int is_shared_attribute ( PARSER_CONTEXT parser,
PT_NODE att 
)
static
static int partition_range_min_max ( DB_VALUE **  dest,
DB_VALUE inval,
int  min_max 
)
static

Definition at line 6099 of file semantic_check.c.

References DB_EQ, DB_GT, DB_IS_NULL, DB_LT, db_make_null(), db_value_compare(), db_value_copy(), NULL, pr_free_ext_value(), and RANGE_MIN.

Referenced by pt_check_alter_partition().

Here is the caller graph for this function:

static PT_NODE* pt_append_statements_on_add_attribute ( PARSER_CONTEXT parser,
PT_NODE statement_list,
PT_NODE stmt_node,
const char *  class_name,
const char *  attr_name,
PT_NODE attr 
)
static

Referenced by pt_check_attribute_domain(), and pt_check_union_type_compatibility_of_values_query().

Here is the caller graph for this function:

static PT_NODE * pt_assignment_compatible ( PARSER_CONTEXT parser,
PT_NODE lhs,
PT_NODE rhs 
)
static

Definition at line 11351 of file semantic_check.c.

References assert, assert_release, tp_domain::codeset, pt_coll_infer::codeset, pt_coll_infer::coll_id, seman_compatible_info::coll_infer, pt_data_type_info::collation_flag, tp_domain::collation_id, pt_data_type_info::collation_id, pt_statement_info::data_type, parser_node::data_type, DB_TYPE_UNKNOWN, pt_data_type_info::dec_precision, parser_node::expected_domain, seman_compatible_info::force_cast, pt_statement_info::host_var, parser_context::host_var_count, parser_context::host_var_expected_domains, pr_type::id, pt_host_var_info::index, parser_node::info, pt_data_type_info::json_schema, lang_charset(), LANG_SYS_COLLATION, parser_node::next, NO_ERROR, parser_node::node_type, NULL, parser_copy_tree_list(), parser_free_tree(), seman_compatible_info::prec, pt_data_type_info::precision, pt_assignment_class_compatible(), pt_data_type_to_db_domain(), pt_get_collation_info(), PT_HAS_COLLATION, PT_HOST_VAR, PT_IS_CHAR_STRING_TYPE, PT_IS_COLLECTION_TYPE, pt_is_compatible_without_cast(), PT_IS_STRING_TYPE, PT_NAME, pt_preset_hostvar(), pt_set_expected_domain(), pt_type_enum_to_db(), PT_TYPE_ENUMERATION, PT_TYPE_JSON, PT_TYPE_MAYBE, PT_TYPE_NONE, PT_TYPE_NULL, PT_TYPE_NUMERIC, PT_TYPE_OBJECT, pt_wrap_with_cast_op(), seman_compatible_info::scale, tp_domain_cache(), TP_DOMAIN_COLL_NORMAL, tp_domain_copy(), tp_domain_resolve(), tp_domain_resolve_default(), TP_DOMAIN_TYPE, TP_TYPE_HAS_COLLATION, tp_domain::type, seman_compatible_info::type_enum, parser_node::type_enum, and pt_data_type_info::units.

Referenced by pt_coerce_insert_values().

Here is the caller graph for this function:

static void pt_check_alter ( PARSER_CONTEXT parser,
PT_NODE alter 
)
static

Definition at line 4697 of file semantic_check.c.

References pt_statement_info::alter, pt_alter_info::alter_clause, ARG_FILE_LINE, assert, pt_statement_info::attr_def, pt_alter_info::attr_mthd, sm_attribute::auto_increment, pt_attr_def_info::auto_increment, pt_alter_info::ch_attr_def, pt_alter_info::code, pt_attr_def_info::data_default, db_attribute_class(), db_attribute_domain(), db_domain_class(), db_get_attribute_force(), db_get_attributes(), db_get_class_attribute(), db_get_class_method(), db_get_class_name(), db_get_method(), db_get_subclasses(), db_get_superclasses(), db_is_class(), db_is_subclass(), db_is_superclass(), db_is_vclass(), DB_MAX_IDENTIFIER_LENGTH, pt_name_info::db_object, DB_PARTITION_CLASS, do_is_partitioned_subclass(), pt_alter_info::entity_name, pt_alter_info::entity_type, er_msg(), ER_REGU_NOT_IMPLEMENTED, er_set(), ER_WARNING_SEVERITY, sm_attribute::header, ID_SHARED_ATTRIBUTE, parser_node::info, pt_alter_info::internal_stmts, pt_name_info::meta_class, MSGCAT_SEMANTIC_ALREADY_PARTITIONED_CLASS, MSGCAT_SEMANTIC_ALREADY_SUBCLASS, MSGCAT_SEMANTIC_ALREADY_SUPERCLASS, MSGCAT_SEMANTIC_ALTER_CHANGE_ONLY_TABLE, MSGCAT_SEMANTIC_ALTER_VIEW_IN_HIERARCHY, MSGCAT_SEMANTIC_CANT_PARTITION_MNG_TRIGGERS, MSGCAT_SEMANTIC_CLASS_DOES_NOT_EXIST, MSGCAT_SEMANTIC_HAVE_NO_QUERY_SPEC, MSGCAT_SEMANTIC_HEIR_CANT_CHANGE_IT, MSGCAT_SEMANTIC_INVALID_AUTO_INCREMENT_ON_DEFAULT_SHARED, MSGCAT_SEMANTIC_INVALID_PARTITION_REQUEST, MSGCAT_SEMANTIC_IS_NOT_A, MSGCAT_SEMANTIC_IS_NOT_PARTITIONED_CLASS, MSGCAT_SEMANTIC_NONCLASS_PARENT, MSGCAT_SEMANTIC_NONVCLASS_PARENT, MSGCAT_SEMANTIC_NOT_CLASS_ATTR_MTHD, MSGCAT_SEMANTIC_NOT_METHOD_OR_ATTR, MSGCAT_SEMANTIC_NOT_SUPERCLASS_OF, MSGCAT_SEMANTIC_OUT_OF_MEMORY, MSGCAT_SEMANTIC_PARTITION_KEY_COLUMN, MSGCAT_SEMANTIC_SUPERCLASS_CYCLE, MSGCAT_SEMANTIC_VCLASS_ATT_CANT_BE_AUTOINC, MSGCAT_SET_PARSER_SEMANTIC, pt_statement_info::name, sm_component::name_space, parser_node::next, NO_ERROR, parser_node::node_type, NULL, pt_name_info::original, pt_alter_info::partition, PT_ADD_ATTR_MTHD, PT_ADD_HASHPARTITION, PT_ADD_INDEX_CLAUSE, PT_ADD_PARTITION, PT_ADD_QUERY, PT_ADD_SUPCLASS, PT_ALTER_DEFAULT, PT_ANALYZE_PARTITION, pt_append_string(), PT_APPLY_PARTITION, pt_attr_check_default_cs_coll(), PT_ATTR_DEF, PT_ATTRIBUTE, PT_CHANGE_ATTR, pt_check_alter_partition(), pt_check_attribute_domain(), pt_check_create_view(), pt_check_data_default(), pt_check_mutable_attributes(), pt_check_partitions(), pt_check_user_owns_class(), PT_CLASS, PT_COALESCE_PARTITION, PT_DROP_ATTR_MTHD, PT_DROP_PARTITION, PT_DROP_QUERY, PT_DROP_SUPCLASS, PT_ERROR, PT_ERRORm, PT_ERRORmf, PT_ERRORmf2, pt_find_class(), pt_get_class_type(), PT_HAS_COLLATION, PT_META_ATTR, PT_MISC_DUMMY, PT_MODIFY_ATTR_MTHD, PT_MODIFY_DEFAULT, PT_MODIFY_QUERY, PT_NAME, PT_PROMOTE_PARTITION, PT_REMOVE_PARTITION, PT_RENAME_ATTR_MTHD, PT_REORG_PARTITION, PT_RESET_QUERY, pt_resolve_default_external(), pt_show_misc_type(), pt_validate_query_spec(), PT_VCLASS, pt_alter_info::query, rel_major_release_string(), pt_alter_info::rename, sm_class_has_triggers(), sm_get_class_collation(), sm_is_reuse_oid_class(), sm_partitioned_class_type(), pt_alter_info::sup_class_list, pt_alter_info::super, TR_EVENT_ALL, and parser_node::type_enum.

Referenced by pt_check_with_info().

Here is the caller graph for this function:

static void pt_check_alter_partition ( PARSER_CONTEXT parser,
PT_NODE stmt,
MOP  dbobj 
)
static

Definition at line 6314 of file semantic_check.c.

References pt_statement_info::alter, pt_alter_info::alter_clause, assert, au_fetch_class(), AU_FETCH_READ, AU_SELECT, pt_alter_info::code, db_value::data, parser_node::data_type, DB_GT, DB_IS_NULL, DB_LT, db_make_null(), pt_name_info::db_object, DB_PARTITION_LIST, DB_PARTITION_RANGE, db_value_compare(), db_value_list_add(), db_value_list_find(), db_value_list_finddel(), pt_alter_info::entity_name, er_errid(), er_msg(), error(), sm_partition::expr, parser_node::flag, free_and_init, parser_context::host_var_count, i, db_data::i, if(), parser_node::info, intl_identifier_casecmp(), pt_select_info::list, MAX_PARTITIONS, MSGCAT_SEMANTIC_CANNOT_DROP_ALL_PARTITIONS, MSGCAT_SEMANTIC_CONSTANT_TYPE_MISMATCH, MSGCAT_SEMANTIC_DATA_LOSS_IS_NOT_ALLOWED, MSGCAT_SEMANTIC_DUPLICATE_PARTITION_DEF, MSGCAT_SEMANTIC_HOSTVAR_IN_DDL, MSGCAT_SEMANTIC_INVALID_PARTITION_INFO, MSGCAT_SEMANTIC_INVALID_PARTITION_REQUEST, MSGCAT_SEMANTIC_INVALID_PARTITION_SIZE, MSGCAT_SEMANTIC_IS_NOT_END_OF_PARTITION, MSGCAT_SEMANTIC_OUT_OF_MEMORY, MSGCAT_SEMANTIC_PARTITION_DOES_NOT_EXIST, MSGCAT_SEMANTIC_PARTITION_RANGE_INVALID, MSGCAT_SEMANTIC_PARTITION_TYPE_MISMATCH, MSGCAT_SEMANTIC_SELECT_AUTH_FAILURE, MSGCAT_SET_PARSER_SEMANTIC, pt_parts_info::name, pt_statement_info::name, db_value_plist::next, db_objlist::next, parser_node::next, NO_ERROR, parser_node::node_type, NULL, db_objlist::op, pt_name_info::original, p, parser_copy_tree(), parser_create_parser(), parser_free_parser(), parser_free_tree(), parser_parse_string(), parser_walk_tree(), sm_class::partition, pt_alter_info::partition, parser_node::partition_pruned, partition_range_min_max(), sm_partition::partition_type, pt_statement_info::parts, sm_partition::pname, pr_clear_value(), pr_free_ext_value(), PT_ADD_HASHPARTITION, PT_ADD_PARTITION, PT_ANALYZE_PARTITION, pt_check_and_replace_hostvar(), pt_check_range_partition_strict_increasing(), PT_COALESCE_PARTITION, pt_coerce_partition_value_with_data_type(), pt_compile(), pt_dbval_to_value(), pt_domain_to_data_type(), PT_DROP_PARTITION, PT_ERRORc, PT_ERRORm, PT_ERRORmf, pt_has_error, PT_PARTITION_HASH, PT_PARTITION_RANGE, PT_PROMOTE_PARTITION, PT_REORG_PARTITION, PT_SELECT, pt_type_enum_to_db(), PT_TYPE_NULL, PT_VALUE, pt_value_to_db(), pt_query_info::q, pt_statement_info::query, RANGE_MAX, RANGE_MIN, pt_query_info::select, set_get_element_nocopy(), set_size(), tp_domain_resolve_default(), pt_parts_info::type, parser_node::type_enum, sm_class::users, db_value_plist::val, sm_partition::values, and pt_parts_info::values.

Referenced by pt_check_alter().

Here is the caller graph for this function:

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

Definition at line 14630 of file semantic_check.c.

References pt_function_info::analytic, pt_function_info::arg_list, pt_sort_spec_info::asc_or_desc, pt_value_info::data_value, qfile_tuple_value_position::dom, pt_sort_spec_info::expr, parser_node::flag, pt_statement_info::function, pt_function_info::function_type, pt_data_value::i, parser_node::info, pt_function_info::is_analytic, parser_node::is_hidden_column, pt_select_info::list, MSGCAT_SEMANTIC_FUNCTION_NO_ARGS, MSGCAT_SEMANTIC_MEDIAN_FUNC_NOT_ALLOW_ORDER_BY, MSGCAT_SEMANTIC_NESTED_ANALYTIC_FUNCTIONS, MSGCAT_SEMANTIC_NOT_ALLOWED_HERE, MSGCAT_SEMANTIC_OUT_OF_MEMORY, MSGCAT_SEMANTIC_SORT_DIR_CONFLICT, MSGCAT_SET_PARSER_SEMANTIC, parser_node::next, parser_node::node_type, NULL, pt_sort_spec_info::nulls_first_or_last, pt_function_info::order_by, parser_copy_tree(), parser_free_tree(), parser_new_node(), pt_function_info::partition_by, pt_sort_spec_info::pos_descr, qfile_tuple_value_position::pos_no, PT_ASC, pt_compare_sort_spec_expr(), PT_COUNT_STAR, PT_CUME_DIST, PT_DENSE_RANK, PT_ERRORm, PT_ERRORmf, pt_find_matching_sort_spec(), PT_FUNCTION, pt_has_analytic(), PT_IS_CONST, PT_MEDIAN, PT_NULLS_DEFAULT, PT_PERCENT_RANK, PT_RANK, pt_remove_from_list(), pt_remove_unusable_sort_specs(), pt_resolve_sort_spec_expr(), PT_ROW_NUMBER, PT_SELECT, pt_short_print(), PT_SORT_SPEC, pt_to_null_ordering(), PT_TYPE_INTEGER, PT_TYPE_MAYBE, PT_TYPE_NONE, PT_VALUE, pt_value_to_db(), pt_xasl_node_to_domain(), pt_query_info::q, pt_statement_info::query, pt_query_info::select, pt_statement_info::sort_spec, parser_node::type_enum, and pt_statement_info::value.

Referenced by pt_semantic_check_local().

Here is the caller graph for this function:

static void pt_check_attribute_domain ( PARSER_CONTEXT parser,
PT_NODE attr_defs,
PT_MISC_TYPE  class_type,
const char *  self,
const bool  reuse_oid,
PT_NODE stmt 
)
static

Definition at line 4477 of file semantic_check.c.

References pt_statement_info::alter, ARG_FILE_LINE, pt_statement_info::attr_def, pt_attr_def_info::attr_name, pt_attr_def_info::attr_type, pt_attr_def_info::auto_increment, pt_attr_def_info::constrain_not_null, pt_statement_info::create_entity, pt_attr_def_info::data_default, pt_statement_info::data_type, parser_node::data_type, db_find_class(), db_is_vclass(), pt_name_info::db_object, pt_data_type_info::dec_precision, pt_data_type_info::entity, pt_alter_info::entity_name, er_msg(), ER_REGU_NOT_IMPLEMENTED, er_set(), ER_WARNING_SEVERITY, parser_node::info, pt_alter_info::internal_stmts, pt_create_entity_info::internal_stmts, intl_identifier_casecmp(), MSGCAT_SEMANTIC_CAN_NOT_BE_VCLASS, MSGCAT_SEMANTIC_INVALID_AUTO_INCREMENT_DOMAIN, MSGCAT_SEMANTIC_IS_NOT_DEFINED, MSGCAT_SEMANTIC_NON_REFERABLE_VIOLATION, MSGCAT_SEMANTIC_WANT_NO_VOBJ_IN_SETS, MSGCAT_SET_PARSER_SEMANTIC, pt_statement_info::name, parser_node::next, parser_node::node_type, NULL, pt_name_info::original, PT_ALTER, pt_append_statements_on_add_attribute(), PT_ATTR_DEF, pt_check_enum_data_type(), pt_check_user_owns_class(), PT_CLASS, PT_CREATE_ENTITY, PT_DATA_TYPE, PT_ERROR, PT_ERRORm, PT_ERRORmf, pt_is_set_type, PT_NAME, PT_NAME_INFO_EXTERNAL, PT_NAME_INFO_IS_FLAGED, PT_NORMAL, PT_TYPE_BIGINT, PT_TYPE_ENUMERATION, PT_TYPE_INTEGER, PT_TYPE_NUMERIC, PT_TYPE_OBJECT, PT_TYPE_SMALLINT, PT_VCLASS, rel_major_release_string(), sm_is_reuse_oid_class(), and parser_node::type_enum.

Referenced by pt_check_alter(), and pt_check_create_entity().

Here is the caller graph for this function:

bool pt_check_cast_op ( PARSER_CONTEXT parser,
PT_NODE node 
)

Definition at line 937 of file semantic_check.c.

References pt_expr_info::arg1, assert, pt_expr_info::cast_type, lang_collation::codeset, pt_statement_info::data_type, parser_node::data_type, pt_statement_info::expr, parser_node::info, lang_get_codeset_name(), lang_get_collation(), MSGCAT_SEMANTIC_CANT_COERCE_TO, MSGCAT_SEMANTIC_COERCE_UNSUPPORTED, MSGCAT_SEMANTIC_COLLATE_NOT_ALLOWED, MSGCAT_SEMANTIC_CS_MATCH_COLLATE, MSGCAT_SET_PARSER_SEMANTIC, parser_node::node_type, NULL, pt_expr_info::op, PT_CAST, PT_CAST_INVALID, PT_CAST_UNSUPPORTED, PT_CAST_VALID, PT_ERRORm, PT_ERRORmf2, PT_EXPR, PT_EXPR_INFO_CAST_COLL_MODIFIER, PT_EXPR_INFO_CAST_SHOULD_FOLD, PT_EXPR_INFO_IS_FLAGED, PT_GET_COLLATION_MODIFIER, PT_HAS_COLLATION, pt_has_error, PT_INTERNAL_ERROR, PT_IS_NATIONAL_CHAR_STRING_TYPE, PT_IS_SIMPLE_CHAR_STRING_TYPE, pt_short_print(), pt_show_type_enum(), PT_TYPE_BIGINT, PT_TYPE_BIT, PT_TYPE_BLOB, PT_TYPE_CHAR, PT_TYPE_CLOB, PT_TYPE_DATE, PT_TYPE_DATETIME, PT_TYPE_DATETIMELTZ, PT_TYPE_DATETIMETZ, PT_TYPE_DOUBLE, PT_TYPE_ENUMERATION, PT_TYPE_FLOAT, PT_TYPE_INTEGER, PT_TYPE_MONETARY, PT_TYPE_MULTISET, PT_TYPE_NCHAR, PT_TYPE_NONE, PT_TYPE_NUMERIC, PT_TYPE_OBJECT, PT_TYPE_SEQUENCE, PT_TYPE_SET, PT_TYPE_SMALLINT, PT_TYPE_TIME, PT_TYPE_TIMESTAMP, PT_TYPE_TIMESTAMPLTZ, PT_TYPE_TIMESTAMPTZ, PT_TYPE_VARBIT, PT_TYPE_VARCHAR, PT_TYPE_VARNCHAR, parser_node::type_enum, and pt_data_type_info::units.

Referenced by pt_eval_expr_type(), and pt_semantic_check_local().

Here is the caller graph for this function:

static PT_NODE * pt_check_constraints ( PARSER_CONTEXT parser,
const PT_NODE create 
)
static

Definition at line 13809 of file semantic_check.c.

References pt_create_entity_info::constraint_list, pt_statement_info::create_entity, parser_node::info, parser_node::next, and pt_check_constraint().

Referenced by pt_check_create_entity().

Here is the caller graph for this function:

static void pt_check_create_entity ( PARSER_CONTEXT parser,
PT_NODE node 
)
static

Definition at line 8187 of file semantic_check.c.

References parser_node::alias_print, ARG_FILE_LINE, pt_create_entity_info::as_query_list, assert, pt_statement_info::attr_def, pt_create_entity_info::attr_def_list, pt_attr_def_info::auto_increment, CASE_INSENSITIVE, pt_statement_info::create_entity, pt_create_entity_info::create_like, pt_create_entity_info::create_select, pt_attr_def_info::data_default, db_get_attributes(), db_is_class(), db_is_vclass(), DB_NOT_PARTITIONED_CLASS, pt_name_info::db_object, DB_PARTITION_CLASS, pt_create_entity_info::entity_name, pt_create_entity_info::entity_type, er_clear(), er_errid(), er_get_severity(), ER_LC_UNKNOWN_CLASSNAME, er_msg(), ER_REGU_NOT_IMPLEMENTED, er_set(), ER_WARNING_SEVERITY, error(), pt_create_entity_info::if_not_exists, parser_node::info, LANG_SYS_CODESET, LANG_SYS_COLLATION, MSGCAT_RUNTIME_NOT_ALLOWED_ACCESS_TO_PARTITION, MSGCAT_SEMANTIC_CLASS_DOES_NOT_EXIST, MSGCAT_SEMANTIC_CLASS_EXISTS, MSGCAT_SEMANTIC_CLASS_NO_QUERY_SPEC, MSGCAT_SEMANTIC_DUPLICATE_TABLE_OPTION, MSGCAT_SEMANTIC_IS_NOT_A, MSGCAT_SEMANTIC_MISSING_ATTR_NAME, MSGCAT_SEMANTIC_NONEXISTENT_SUPCLASS, MSGCAT_SEMANTIC_NOT_IN_SUBCLASS_LIST, MSGCAT_SEMANTIC_VARIABLE_NOT_ALLOWED, MSGCAT_SEMANTIC_VCLASS_ATT_CANT_BE_AUTOINC, MSGCAT_SEMANTIC_WANT_SUBCLASS_CLAUSE, MSGCAT_SET_PARSER_RUNTIME, MSGCAT_SET_PARSER_SEMANTIC, pt_statement_info::name, parser_node::next, NO_ERROR, parser_node::node_type, NULL, pt_resolution_info::of_sup_class_name, pt_table_option_info::option, pt_create_entity_info::or_replace, pt_name_info::original, parser_print_tree(), pt_create_entity_info::partition_info, prm_get_bool_value(), PRM_ID_TB_DEFAULT_REUSE_OID, pt_attr_check_default_cs_coll(), PT_ATTR_DEF, pt_check_attribute_domain(), pt_check_auto_increment_table_option(), pt_check_constraints(), pt_check_create_view(), pt_check_data_default(), pt_check_grammar_charset_collation(), pt_check_partitions(), pt_check_unique_attr(), pt_check_user_exists(), pt_check_user_owns_class(), pt_check_with_clause(), PT_CLASS, PT_DOT_, PT_ERROR, PT_ERRORm, PT_ERRORmf, PT_ERRORmf2, pt_find_class(), pt_get_select_list(), PT_HAS_COLLATION, pt_has_error, pt_has_parameters(), PT_NAME, pt_semantic_check(), pt_short_print(), pt_short_print_l(), pt_show_misc_type(), pt_str_compare(), pt_table_option(), PT_TABLE_OPTION, PT_TABLE_OPTION_AUTO_INCREMENT, PT_TABLE_OPTION_CHARSET, PT_TABLE_OPTION_COLLATION, PT_TABLE_OPTION_COMMENT, PT_TABLE_OPTION_DONT_REUSE_OID, PT_TABLE_OPTION_ENCRYPT, PT_TABLE_OPTION_REUSE_OID, PT_TYPE_NUMERIC, PT_VALUE, PT_VCLASS, pt_statement_info::query, rel_major_release_string(), pt_statement_info::resolution, pt_create_entity_info::resolution_list, sm_partitioned_class_type(), pt_create_entity_info::supclass_list, pt_statement_info::table_option, pt_create_entity_info::table_option_list, parser_node::type_enum, pt_table_option_info::val, and pt_query_info::with.

Referenced by pt_check_with_info().

Here is the caller graph for this function:

static void pt_check_create_index ( PARSER_CONTEXT parser,
PT_NODE node 
)
static

Definition at line 8608 of file semantic_check.c.

References coll_opt::allow_prefix_index, assert, assert_release, pt_data_type_info::collation_id, pt_index_info::column_names, pt_statement_info::data_type, parser_node::data_type, pt_value_info::data_value, db_find_class(), db_is_class(), DB_NOT_PARTITIONED_CLASS, pt_name_info::db_object, DB_PARTITION_CLASS, pt_spec_info::entity_name, er_msg(), pt_sort_spec_info::expr, pt_index_info::function_expr, pt_data_value::i, pt_statement_info::index, pt_index_info::indexed_class, parser_node::info, lang_get_collation(), pt_name_info::meta_class, MSGCAT_SEMANTIC_INVALID_CREATE_INDEX, MSGCAT_SEMANTIC_INVALID_INDEX_COLUMN, MSGCAT_SEMANTIC_INVALID_PARTITION_REQUEST, MSGCAT_SEMANTIC_INVALID_PREFIX_LENGTH, MSGCAT_SEMANTIC_IS_NOT_A_CLASS, MSGCAT_SEMANTIC_NO_INDEX_ON_VCLASS, MSGCAT_SEMANTIC_PREFIX_LENGTH_COLLATION, MSGCAT_SET_PARSER_SEMANTIC, pt_statement_info::name, parser_node::next, NO_ERROR, parser_node::node_type, NULL, lang_collation::options, pt_name_info::original, pt_index_info::prefix_length, pt_check_filter_index_expr(), pt_check_function_index_expr(), pt_check_unique_attr(), pt_check_user_owns_class(), PT_ERROR, PT_ERRORm, PT_ERRORmf, PT_EXPR, PT_HAS_COLLATION, pt_has_error, PT_NAME, PT_NORMAL, pt_short_print(), PT_SORT_SPEC, PT_TYPE_INTEGER, sm_partitioned_class_type(), pt_statement_info::sort_spec, pt_statement_info::spec, pt_value_info::text, parser_node::type_enum, pt_statement_info::value, and pt_index_info::where.

Referenced by pt_check_with_info().

Here is the caller graph for this function:

static void pt_check_create_view ( PARSER_CONTEXT parser,
PT_NODE stmt 
)
static
static PT_NODE * pt_check_default_vclass_query_spec ( PARSER_CONTEXT parser,
PT_NODE qry,
PT_NODE attrs 
)
static
static PT_NODE * pt_check_filter_index_expr_post ( PARSER_CONTEXT parser,
PT_NODE node,
void *  arg,
int *  continue_walk 
)
static
static PT_NODE * pt_check_filter_index_expr_pre ( PARSER_CONTEXT parser,
PT_NODE node,
void *  arg,
int *  continue_walk 
)
static

Definition at line 15134 of file semantic_check.c.

References pt_expr_info::arg1, assert, pt_statement_info::attr_def, pt_attr_def_info::attr_name, pt_filter_index_info::atts, pt_filter_index_info::atts_count, CASE_INSENSITIVE, db_get_int(), DB_TYPE_INTEGER, pt_value_info::db_value, pt_value_info::db_value_is_initialized, DB_VALUE_TYPE, pt_filter_index_info::depth, pt_sort_spec_info::expr, pt_statement_info::expr, F_ELT, F_INSERT_SUBSTRING, F_JSON_ARRAY, F_JSON_ARRAY_APPEND, F_JSON_ARRAY_INSERT, F_JSON_CONTAINS, F_JSON_CONTAINS_PATH, F_JSON_DEPTH, F_JSON_EXTRACT, F_JSON_GET_ALL_PATHS, F_JSON_INSERT, F_JSON_KEYS, F_JSON_LENGTH, F_JSON_MERGE, F_JSON_MERGE_PATCH, F_JSON_OBJECT, F_JSON_PRETTY, F_JSON_QUOTE, F_JSON_REMOVE, F_JSON_REPLACE, F_JSON_SEARCH, F_JSON_SET, F_JSON_TYPE, F_JSON_UNQUOTE, F_JSON_VALID, F_MULTISET, F_SEQUENCE, F_SET, fcode_get_lowercase_name(), pt_statement_info::function, pt_function_info::function_type, pt_filter_index_info::has_keys_in_expression, pt_filter_index_info::has_not, i, parser_node::info, pt_filter_index_info::is_constant_expression, pt_filter_index_info::is_null_atts, pt_filter_index_info::is_valid_expr, pt_name_info::meta_class, MSGCAT_SEMANTIC_FUNCTION_CANNOT_BE_USED_FOR_FILTER_INDEX, MSGCAT_SEMANTIC_NO_LTZ_IN_FUNCTION_FILTER_INDEX, MSGCAT_SET_PARSER_SEMANTIC, pt_statement_info::name, parser_node::next, parser_node::node_type, NULL, pt_expr_info::op, pt_name_info::original, PT_ABS, PT_ACOS, PT_ADD_MONTHS, PT_ADDDATE, PT_ADDTIME, PT_AND, PT_ASCII, PT_ASIN, PT_ATAN, PT_ATAN2, PT_ATTR_DEF, PT_BETWEEN, PT_BETWEEN_AND, PT_BETWEEN_EQ_NA, PT_BETWEEN_GE_INF, PT_BETWEEN_GE_LE, PT_BETWEEN_GE_LT, PT_BETWEEN_GT_INF, PT_BETWEEN_GT_LE, PT_BETWEEN_GT_LT, PT_BETWEEN_INF_LE, PT_BETWEEN_INF_LT, PT_BIN, PT_BIT_AND, PT_BIT_COUNT, PT_BIT_LENGTH, PT_BIT_NOT, PT_BIT_OR, PT_BIT_XOR, PT_BITSHIFT_LEFT, PT_BITSHIFT_RIGHT, PT_BLOB_LENGTH, PT_BLOB_TO_BIT, PT_CAST, PT_CEIL, PT_CHAR_LENGTH, PT_CHR, PT_CLOB_LENGTH, PT_CLOB_TO_CHAR, PT_CONCAT, PT_CONCAT_WS, PT_CONTINUE_WALK, PT_CONV, PT_CONV_TZ, PT_COS, PT_COT, PT_DATA_TYPE, PT_DATE_ADD, PT_DATE_FORMAT, PT_DATE_SUB, PT_DATEDIFF, PT_DATEF, PT_DAYF, PT_DAYOFMONTH, PT_DAYOFWEEK, PT_DAYOFYEAR, PT_DECODE, PT_DEFAULTF, PT_DEGREES, PT_DIV, PT_DIVIDE, PT_EQ, PT_EQ_ALL, PT_EQ_SOME, PT_ERRORm, PT_ERRORmf, PT_EXP, PT_EXPR, PT_EXTRACT, PT_FIELD, PT_FINDINSET, PT_FLOOR, PT_FORMAT, PT_FROM_TZ, PT_FROM_UNIXTIME, PT_FROMDAYS, PT_FUNCTION, PT_FUNCTION_HOLDER, PT_GE, PT_GE_ALL, PT_GE_SOME, PT_GREATEST, PT_GT, PT_GT_ALL, PT_GT_SOME, PT_HEX, PT_HOURF, PT_INET_ATON, PT_INET_NTOA, PT_INSTR, PT_IS, PT_IS_IN, PT_IS_LTZ_TYPE, PT_IS_NOT, PT_IS_NOT_IN, PT_IS_NOT_NULL, PT_IS_NULL, PT_LAST_DAY, PT_LE, PT_LE_ALL, PT_LE_SOME, PT_LEAST, PT_LEFT, PT_LIKE, PT_LIKE_ESCAPE, PT_LIKE_LOWER_BOUND, PT_LIKE_UPPER_BOUND, PT_LN, PT_LOCATE, PT_LOG, PT_LOG10, PT_LOG2, PT_LOWER, PT_LPAD, PT_LT, PT_LT_ALL, PT_LT_SOME, PT_LTRIM, PT_MAKEDATE, PT_MAKETIME, PT_META_ATTR, PT_MID, PT_MINUS, PT_MINUTEF, PT_MOD, PT_MODULUS, PT_MONTHF, PT_MONTHS_BETWEEN, PT_NAME, PT_NE, PT_NE_ALL, PT_NE_SOME, PT_NEW_TIME, PT_NORMAL, PT_NOT, PT_NOT_BETWEEN, PT_NOT_LIKE, PT_NOT_RLIKE, PT_NOT_RLIKE_BINARY, PT_NULLSAFE_EQ, PT_OCTET_LENGTH, PT_PI, PT_PLUS, PT_POSITION, PT_POWER, PT_QUARTERF, PT_RADIANS, PT_RANGE, PT_REPEAT, PT_REPLACE, PT_REVERSE, PT_RIGHT, PT_RLIKE, PT_RLIKE_BINARY, PT_ROUND, PT_RPAD, PT_RTRIM, PT_SECONDF, PT_SECTOTIME, pt_show_binopcode(), PT_SIGN, PT_SIN, PT_SORT_SPEC, PT_SPACE, PT_SQRT, PT_STOP_WALK, pt_str_compare(), PT_STR_TO_DATE, PT_STRCAT, PT_STRCMP, PT_SUBDATE, PT_SUBSTRING, PT_SUBSTRING_INDEX, PT_TAN, PT_TIME_FORMAT, PT_TIMEDIFF, PT_TIMEF, PT_TIMES, PT_TIMESTAMP, PT_TIMETOSEC, PT_TO_CHAR, PT_TO_DATE, PT_TO_DATETIME, PT_TO_DATETIME_TZ, PT_TO_NUMBER, PT_TO_TIME, PT_TO_TIMESTAMP, PT_TO_TIMESTAMP_TZ, PT_TODAYS, PT_TRANSLATE, PT_TRIM, PT_TRUNC, PT_TZ_OFFSET, PT_UNARY_MINUS, PT_UPPER, PT_USER, PT_VALUE, PT_WEEKDAY, PT_WEEKF, PT_XOR, PT_YEARF, pt_statement_info::sort_spec, parser_node::type_enum, and pt_statement_info::value.

Referenced by pt_check_filter_index_expr().

Here is the caller graph for this function:

static PT_NODE * pt_check_function_index_expr_pre ( PARSER_CONTEXT parser,
PT_NODE node,
void *  arg,
int *  continue_walk 
)
static
static void pt_check_kill ( PARSER_CONTEXT parser,
PT_NODE node 
)
static
int pt_check_order_by ( PARSER_CONTEXT parser,
PT_NODE query 
)

Definition at line 12646 of file semantic_check.c.

References pt_query_info::all_distinct, pt_union_info::arg1, pt_union_info::arg2, pt_sort_spec_info::asc_or_desc, assert, CASE_INSENSITIVE, pt_value_info::data_value, parser_node::do_not_replace_orderby, qfile_tuple_value_position::dom, semantic_chk_info::donot_fold, ER_FAILED, error(), EXCLUDE_HIDDEN_COLUMNS, pt_sort_spec_info::expr, pt_statement_info::expr, parser_node::flag, pt_select_info::from, i, pt_data_value::i, INCLUDE_HIDDEN_COLUMNS, parser_node::info, parser_node::is_hidden_column, pt_query_info::limit, pt_select_info::list, mq_clear_ids(), mq_rewrite_aggregate_as_derived(), MSGCAT_SEMANTIC_INVALID_ORDERBY_WITH_DISTINCT, MSGCAT_SEMANTIC_NO_ORDERBY_ALLOWED, MSGCAT_SEMANTIC_ORDERBY_IS_NOT_INT, MSGCAT_SEMANTIC_ORDERBYNUM_SELECT_LIST_ERR, MSGCAT_SEMANTIC_OUT_OF_MEMORY, MSGCAT_SEMANTIC_SORT_DIR_CONFLICT, MSGCAT_SEMANTIC_SORT_SPEC_NAN_PATH, MSGCAT_SEMANTIC_SORT_SPEC_NOT_EXIST, MSGCAT_SEMANTIC_SORT_SPEC_RANGE_ERR, MSGCAT_SEMANTIC_SORT_SPEC_WANT_NUM, MSGCAT_SEMANTIC_UNION_INCOMPATIBLE, MSGCAT_SET_PARSER_SEMANTIC, db_value_plist::next, parser_node::next, NO_ERROR, parser_node::node_type, NULL, pt_expr_info::op, pt_query_info::order_by, parser_append_node(), parser_copy_tree(), parser_free_node(), parser_free_tree(), parser_new_node(), parser_print_tree(), parser_walk_leaves(), pt_sort_spec_info::pos_descr, qfile_tuple_value_position::pos_no, pt_check_compatible_node_for_orderby(), pt_check_orderbynum_post(), pt_check_orderbynum_pre(), pt_check_path_eq(), PT_DIFFERENCE, PT_DISTINCT, PT_DOT_, PT_ERRORm, PT_ERRORmf, PT_ERRORmf2, PT_EXPR, pt_find_order_value_in_list(), pt_has_error, PT_HOST_VAR, PT_INTERSECTION, PT_IS_QUERY, PT_IS_QUERY_NODE_TYPE, pt_is_single_tuple(), pt_length_of_select_list(), PT_NAME, PT_ORDERBY_NUM, pt_remove_from_list(), pt_resolve_names(), PT_SELECT, pt_short_print(), pt_str_compare(), pt_to_null_ordering(), PT_TYPE_INTEGER, PT_TYPE_MAYBE, PT_TYPE_NONE, PT_UNION, PT_VALUE, pt_value_to_db(), pt_xasl_node_to_domain(), pt_query_info::q, pt_statement_info::query, pt_query_info::select, pt_statement_info::sort_spec, semantic_chk_info::top_node, parser_node::type_enum, pt_query_info::union_, and pt_statement_info::value.

Referenced by pt_fold_union(), pt_semantic_check_local(), and pt_to_upd_del_query().

Here is the caller graph for this function:

static void pt_check_partitions ( PARSER_CONTEXT parser,
PT_NODE stmt,
MOP  dbobj 
)
static

Definition at line 5728 of file semantic_check.c.

References pt_statement_info::alter, pt_alter_info::alter_clause, assert, pt_statement_info::attr_def, pt_create_entity_info::attr_def_list, pt_attr_def_info::attr_name, pt_attr_def_info::attr_type, sm_class::attributes, au_fetch_class(), AU_FETCH_READ, AU_SELECT, sm_attribute::class_mop, pt_statement_info::create_entity, pt_create_entity_info::create_select, parser_node::data_type, pt_value_info::data_value, db_free_query_format(), pt_name_info::db_object, db_query_format_next(), sm_attribute::domain, semantic_chk_info::donot_fold, pt_alter_info::entity_name, error(), pt_partition_info::expr, free_and_init, pt_partition_info::hashsize, sm_attribute::header, parser_context::host_var_count, pt_data_value::i, pr_type::id, parser_node::info, intl_identifier_casecmp(), pt_partition_info::keycol, MAX_PARTITIONS, MSGCAT_SEMANTIC_CONSTANT_TYPE_MISMATCH, MSGCAT_SEMANTIC_DUPLICATE_PARTITION_DEF, MSGCAT_SEMANTIC_HOSTVAR_IN_DDL, MSGCAT_SEMANTIC_INVALID_PARTITION_COLUMN_TYPE, MSGCAT_SEMANTIC_INVALID_PARTITION_DEFINITION, MSGCAT_SEMANTIC_INVALID_PARTITION_INHERITED_ATTR, MSGCAT_SEMANTIC_INVALID_PARTITION_SIZE, MSGCAT_SEMANTIC_NO_PARTITION_COLUMN, MSGCAT_SEMANTIC_ONLYONE_PARTITION_COLUMN, MSGCAT_SET_PARSER_SEMANTIC, sm_component::name, pt_parts_info::name, pt_statement_info::name, PT_VALUE_LINKS::next, sm_component::next, parser_node::next, NO_ERROR, parser_node::node_type, NULL, pt_name_info::original, parser_copy_tree(), parser_walk_tree(), pt_alter_info::partition, pt_statement_info::partition, pt_create_entity_info::partition_info, pt_partition_info::parts, pt_statement_info::parts, PT_ALTER, PT_ATTR_DEF, pt_check_and_replace_hostvar(), pt_check_partition_values(), pt_check_range_partition_strict_increasing(), PT_CREATE_ENTITY, pt_db_to_type_enum(), pt_domain_to_data_type(), PT_ERRORm, PT_ERRORmf, PT_EXPR, pt_find_partition_column_count(), pt_get_select_query_columns(), pt_has_error, PT_NAME, PT_NORMAL, PT_PARTITION, PT_PARTITION_HASH, PT_PARTITION_LIST, PT_PARTITION_RANGE, PT_PARTS, pt_semantic_type(), PT_TYPE_BIGINT, PT_TYPE_CHAR, PT_TYPE_DATE, PT_TYPE_DATETIME, PT_TYPE_DATETIMELTZ, PT_TYPE_DATETIMETZ, pt_type_enum_to_db_domain(), PT_TYPE_INTEGER, PT_TYPE_NCHAR, PT_TYPE_NULL, PT_TYPE_SMALLINT, PT_TYPE_TIME, PT_TYPE_TIMESTAMP, PT_TYPE_TIMESTAMPLTZ, PT_TYPE_TIMESTAMPTZ, PT_TYPE_VARCHAR, PT_TYPE_VARNCHAR, SM_COMPARE_NAMES, pt_create_entity_info::supclass_list, semantic_chk_info::top_node, tp_domain_cache(), sm_attribute::type, pt_partition_info::type, pt_parts_info::type, parser_node::type_enum, pt_statement_info::value, and pt_parts_info::values.

Referenced by pt_check_alter(), and pt_check_create_entity().

Here is the caller graph for this function:

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

Definition at line 9338 of file semantic_check.c.

References pt_agg_check_info::depth, parser_node::node_type, PT_CONTINUE_WALK, and PT_SELECT.

Referenced by pt_check_single_valued_node(), and pt_semantic_check_local().

Here is the caller graph for this function:

PT_NODE* pt_check_union_type_compatibility_of_values_query ( PARSER_CONTEXT parser,
PT_NODE node 
)

Definition at line 2800 of file semantic_check.c.

References pt_expr_info::arg1, pt_union_info::arg1, pt_expr_info::arg2, pt_union_info::arg2, assert, pt_update_info::assignment, pt_statement_info::attr_def, pt_insert_info::attr_list, au_get_user_name(), Au_user, pt_attr_def_info::constrain_not_null, pt_statement_info::cte, parser_context::custom_print, pt_attr_def_info::data_default, pt_statement_info::data_type, parser_node::data_type, db_attribute_default(), db_attribute_name(), db_attribute_next(), db_find_class(), db_get_attribute(), db_get_attributes_force(), db_get_string(), db_make_set(), db_set_create_basic(), db_value_create(), pt_statement_info::delete_, pt_data_type_info::entity, pt_spec_info::entity_name, parser_node::etc, EXCLUDE_HIDDEN_COLUMNS, pt_statement_info::expr, free_and_init, i, parser_node::info, pt_statement_info::insert, pt_delete_info::internal_stmts, pt_insert_info::internal_stmts, pt_update_info::internal_stmts, pt_insert_info::into_var, pt_name_info::meta_class, MSGCAT_SEMANTIC_ARITY_MISMATCH, MSGCAT_SEMANTIC_CANT_COERCE_TO, MSGCAT_SEMANTIC_CLASS_DOES_NOT_EXIST, MSGCAT_SEMANTIC_CLASS_EXISTS, MSGCAT_SEMANTIC_OUT_OF_MEMORY, MSGCAT_SET_PARSER_SEMANTIC, pt_statement_info::name, parser_node::next, NO_ERROR, parser_node::node_type, pt_cte_info::non_recursive_part, NULL, pt_name_info::original, parser_free_subtrees(), parser_free_tree(), parser_new_node(), parser_print_tree(), parser_reinit_node(), pt_data_type_info::precision, pt_append_statements_on_add_attribute(), pt_append_string(), pt_associate_label_with_value(), pt_combine_compatible_info(), PT_CTE, PT_DIFFERENCE, PT_ERRORm, PT_ERRORmf, PT_ERRORmf2, PT_EXPR, pt_get_compatible_info(), pt_get_select_list(), pt_get_values_query_compatible_info(), PT_INTERSECTION, PT_IS_ASSIGN_NODE, PT_IS_DEFAULT_VALUE, PT_IS_DOT_NODE, PT_IS_IN, PT_IS_NAME_NODE, PT_IS_SUBQUERY, PT_IS_VALUE_QUERY, pt_length_of_select_list(), pt_make_string_value(), pt_name(), PT_NAME, PT_NAME_INFO_EXTERNAL, PT_NAME_INFO_IS_FLAGED, PT_NAME_INFO_SET_FLAG, PT_NORMAL, PT_PARAMETER, pt_to_compatible_cast(), PT_TYPE_NULL, PT_TYPE_OBJECT, PT_UNION, PT_VALUE, pt_query_info::q, pt_statement_info::query, pt_spec_info::range_var, pt_cte_info::recursive_part, pt_name_info::resolved, pt_update_info::search_cond, pt_delete_info::spec, pt_insert_info::spec, pt_update_info::spec, pt_statement_info::spec, pt_name_info::spec_id, TEXT_CONSTRAINT_PREFIX, parser_node::type_enum, pt_query_info::union_, pt_data_type_info::units, and pt_statement_info::update.

Referenced by pt_eval_type().

Here is the caller graph for this function:

static DB_OBJECT * pt_check_user_exists ( PARSER_CONTEXT parser,
PT_NODE cls_ref 
)
static
static void pt_check_vacuum ( PARSER_CONTEXT parser,
PT_NODE node 
)
static

Definition at line 15647 of file semantic_check.c.

References assert, pt_flat_spec_info::for_update, NULL, parser_walk_tree(), pt_continue_walk(), pt_flat_spec_pre(), PT_IS_VACUUM_NODE, and pt_flat_spec_info::spec_parent.

Referenced by pt_check_with_info().

Here is the caller graph for this function:

static PT_UNION_COMPATIBLE pt_check_vclass_attr_qspec_compatible ( PARSER_CONTEXT parser,
PT_NODE attr,
PT_NODE col 
)
static

Definition at line 7178 of file semantic_check.c.

References pt_is_compatible_type(), PT_UNION_COMP, pt_union_compatible(), PT_UNION_INCOMP, and parser_node::type_enum.

Referenced by pt_check_vclass_query_spec().

Here is the caller graph for this function:

static PT_NODE * pt_check_vclass_query_spec ( PARSER_CONTEXT parser,
PT_NODE qry,
PT_NODE attrs,
const char *  self,
const bool  do_semantic_check 
)
static
static PT_NODE * pt_check_where ( PARSER_CONTEXT parser,
PT_NODE node 
)
static
static PT_NODE * pt_check_with_info ( PARSER_CONTEXT parser,
PT_NODE node,
SEMANTIC_CHK_INFO info 
)
static

Definition at line 10775 of file semantic_check.c.

References pt_statement_info::alter, assert, parser_node::cannot_prepare, pt_alter_info::code, pt_index_info::column_names, pt_alter_info::create_index, db_error_string(), db_find_class(), pt_query_info::do_cache, pt_query_info::do_not_cache, semantic_chk_info::donot_fold, pt_spec_info::entity_name, er_errid(), ER_LK_UNILATERALLY_ABORTED, pt_sort_spec_info::expr, pt_query_info::flag, parser_node::flag, pt_index_info::function_expr, pt_query_info::has_system_class, parser_context::host_var_count, pt_statement_info::index, pt_index_info::indexed_class, parser_node::info, pt_name_info::meta_class, MSGCAT_SEMANTIC_HOSTVAR_IN_DDL, MSGCAT_SEMANTIC_INVALID_FILTER_INDEX, MSGCAT_SEMANTIC_IS_NOT_A_CLASS, MSGCAT_SET_PARSER_SEMANTIC, pt_statement_info::name, db_value_plist::next, parser_node::next, parser_node::node_type, NULL, pt_update_info::object_parameter, pt_name_info::original, p, parent_parser, parser_walk_tree(), PT_ADD_ATTR_MTHD, PT_ADD_INDEX_CLAUSE, PT_ALTER, PT_ALTER_INDEX, PT_ALTER_SERIAL, PT_ALTER_TRIGGER, PT_ALTER_USER, PT_AUTH_CMD, pt_check_alter(), pt_check_and_replace_hostvar(), pt_check_create_entity(), pt_check_create_index(), pt_check_create_user(), pt_check_drop(), pt_check_filter_index_expr(), pt_check_function_index_expr(), pt_check_grant_revoke(), pt_check_kill(), pt_check_truncate(), pt_check_vacuum(), pt_check_where(), pt_continue_walk(), PT_CREATE_ENTITY, PT_CREATE_INDEX, PT_CREATE_SERIAL, PT_CREATE_TRIGGER, PT_CREATE_USER, PT_DELETE, PT_DIFFERENCE, PT_DO, PT_DROP, PT_DROP_INDEX, PT_DROP_SERIAL, PT_DROP_TRIGGER, PT_DROP_USER, PT_ERRORc, PT_ERRORm, PT_ERRORmf, PT_EVALUATE, pt_expand_isnull_preds(), PT_EXPR, pt_false_search_condition(), PT_FUNCTION, PT_GRANT, pt_has_error, PT_HOST_VAR, PT_INSERT, PT_INTERSECTION, pt_is_function_index_expr(), PT_IS_QUERY, PT_KILL_STMT, pt_mark_union_leaf_nodes(), PT_MERGE, PT_METHOD_CALL, PT_NAME, PT_PARAMETER, pt_register_orphan(), PT_RENAME, PT_RENAME_TRIGGER, pt_resolve_names(), pt_resolve_object(), PT_REVOKE, PT_ROLLBACK_WORK, PT_SAVEPOINT, PT_SCOPE, PT_SELECT, pt_semantic_check_local(), pt_semantic_type(), PT_SET_SESSION_VARIABLES, PT_SET_XACTION, pt_short_print(), PT_TRUNCATE, PT_UNION, PT_UPDATE, PT_UPDATE_STATS, PT_VACUUM, PT_VALUE, pt_statement_info::query, pt_query_info::reexecute, RESET_HOST_VARIABLES_IF_INTERNAL_STATEMENT, pt_statement_info::rollback_work, pt_rollback_work_info::save_name, pt_savepoint_info::save_name, pt_statement_info::savepoint, SET_HOST_VARIABLES_IF_INTERNAL_STATEMENT, pt_statement_info::sort_spec, pt_statement_info::spec, semantic_chk_info::system_class, semantic_chk_info::top_node, pt_statement_info::update, and pt_index_info::where.

Referenced by pt_semantic_check().

Here is the caller graph for this function:

static void pt_check_xaction_list ( PARSER_CONTEXT parser,
PT_NODE node 
)
static
static int pt_class_compatible ( PARSER_CONTEXT parser,
const PT_NODE class1,
const PT_NODE class2,
bool  view_definition_context 
)
static

Definition at line 1877 of file semantic_check.c.

References parser_node::data_type, pt_class_assignable(), PT_TYPE_OBJECT, and parser_node::type_enum.

Referenced by pt_union_compatible().

Here is the caller graph for this function:

static int pt_coerce_partition_value_with_data_type ( PARSER_CONTEXT parser,
PT_NODE value,
PT_NODE data_type 
)
static
static int pt_collection_assignable ( PARSER_CONTEXT parser,
const PT_NODE d_col,
const PT_NODE s_col 
)
static
static int pt_collection_compatible ( PARSER_CONTEXT parser,
const PT_NODE col1,
const PT_NODE col2,
bool  view_definition_context 
)
static

Definition at line 2095 of file semantic_check.c.

References pt_collection_assignable(), PT_IS_COLLECTION_TYPE, and parser_node::type_enum.

Referenced by pt_union_compatible().

Here is the caller graph for this function:

static bool pt_combine_compatible_info ( PARSER_CONTEXT parser,
SEMAN_COMPATIBLE_INFO cinfo1,
SEMAN_COMPATIBLE_INFO cinfo2,
PT_NODE att1,
PT_NODE att2,
int  index 
)
static
static bool pt_compare_sort_spec_expr ( PARSER_CONTEXT parser,
PT_NODE expr1,
PT_NODE expr2 
)
static

Definition at line 14469 of file semantic_check.c.

References CASE_INSENSITIVE, parser_node::node_type, NULL, parser_print_tree(), pt_check_path_eq(), PT_DOT_, PT_NAME, and pt_str_compare().

Referenced by pt_check_analytic_function(), and pt_find_matching_sort_spec().

Here is the caller graph for this function:

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

Definition at line 13373 of file semantic_check.c.

References pt_statement_info::host_var, pt_host_var_info::index, parser_node::info, and pt_is_input_hostvar.

Referenced by pt_transform_cnf_post().

Here is the caller graph for this function:

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

Definition at line 13572 of file semantic_check.c.

References parser_node::node_type, and PT_ISOLATION_LVL.

Referenced by pt_check_xaction_list().

Here is the caller graph for this function:

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

Definition at line 13401 of file semantic_check.c.

References pt_statement_info::host_var, pt_host_var_info::index, parser_node::info, and pt_is_output_hostvar.

Referenced by db_number_of_output_markers().

Here is the caller graph for this function:

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

Definition at line 13593 of file semantic_check.c.

References parser_node::node_type, and PT_TIMEOUT.

Referenced by pt_check_xaction_list().

Here is the caller graph for this function:

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

Definition at line 4343 of file semantic_check.c.

References parser_node::node_type, NULL, PT_CONTINUE_WALK, and PT_IS_QUERY_NODE_TYPE.

Referenced by pt_find_aggregate_analytic_in_where().

Here is the caller graph for this function:

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

Definition at line 4261 of file semantic_check.c.

References NULL, pt_is_aggregate_function(), PT_IS_EXPR_NODE, PT_IS_FUNCTION, and PT_STOP_WALK.

Referenced by pt_check_data_default().

Here is the caller graph for this function:

static DB_OBJECT * pt_find_class ( PARSER_CONTEXT parser,
PT_NODE p,
bool  for_update 
)
static

Definition at line 11206 of file semantic_check.c.

References db_find_class_with_purpose(), parser_node::info, pt_statement_info::name, parser_node::node_type, pt_name_info::original, and PT_NAME.

Referenced by pt_check_alter(), and pt_check_create_entity().

Here is the caller graph for this function:

PT_NODE* pt_find_class_of_index ( PARSER_CONTEXT parser,
const char *const  index_name,
const DB_CONSTRAINT_TYPE  index_type 
)
static PT_NODE * pt_find_default_expression ( PARSER_CONTEXT parser,
PT_NODE tree,
void *  arg,
int *  continue_walk 
)
static
static PT_NODE * pt_find_matching_sort_spec ( PARSER_CONTEXT parser,
PT_NODE spec,
PT_NODE spec_list,
PT_NODE select_list 
)
static

Definition at line 14512 of file semantic_check.c.

References parser_node::next, NULL, pt_compare_sort_spec_expr(), and pt_resolve_sort_spec_expr().

Referenced by pt_check_analytic_function().

Here is the caller graph for this function:

PT_NODE* pt_find_order_value_in_list ( PARSER_CONTEXT parser,
const PT_NODE sort_value,
const PT_NODE order_list 
)
static int pt_find_partition_column_count ( PT_NODE expr,
PT_NODE **  name_node 
)
static

Definition at line 5280 of file semantic_check.c.

References pt_expr_info::arg1, pt_expr_info::arg2, pt_expr_info::arg3, assert, parser_node::column_number, pt_statement_info::expr, parser_node::info, parser_node::line_number, parser_node::node_type, NULL, pt_expr_info::op, PT_ABS, PT_ACOS, PT_ADD_MONTHS, PT_ADDDATE, PT_ADDTIME, PT_ASCII, PT_ASIN, PT_ATAN, PT_ATAN2, PT_BIN, PT_BIT_AND, PT_BIT_COUNT, PT_BIT_LENGTH, PT_BIT_NOT, PT_BIT_OR, PT_BIT_TO_BLOB, PT_BIT_XOR, PT_BITSHIFT_LEFT, PT_BITSHIFT_RIGHT, PT_BLOB_FROM_FILE, PT_BLOB_LENGTH, PT_BLOB_TO_BIT, PT_CAST, PT_CEIL, PT_CHAR_LENGTH, PT_CHAR_TO_BLOB, PT_CHAR_TO_CLOB, PT_CLOB_FROM_FILE, PT_CLOB_LENGTH, PT_CLOB_TO_CHAR, PT_CONCAT, PT_CONCAT_WS, PT_CONV, PT_CONV_TZ, PT_COS, PT_COT, PT_CURRENT_DATE, PT_CURRENT_DATETIME, PT_CURRENT_TIME, PT_CURRENT_TIMESTAMP, PT_DATABASE, PT_DATE_ADD, PT_DATE_FORMAT, PT_DATE_SUB, PT_DATEDIFF, PT_DATEF, PT_DAYF, PT_DAYOFMONTH, PT_DAYOFWEEK, PT_DAYOFYEAR, PT_DBTIMEZONE, PT_DEGREES, PT_DIV, PT_DIVIDE, PT_EXP, PT_EXPR, PT_EXTRACT, PT_FIELD, pt_find_partition_column_count_func(), PT_FINDINSET, PT_FLOOR, PT_FORMAT, PT_FROM_BASE64, PT_FROM_TZ, PT_FROM_UNIXTIME, PT_FROMDAYS, PT_FUNCTION_HOLDER, PT_HEX, PT_HOURF, PT_INET_ATON, PT_INET_NTOA, PT_LAST_DAY, PT_LEFT, PT_LIKE_LOWER_BOUND, PT_LIKE_UPPER_BOUND, PT_LN, PT_LOCATE, PT_LOG, PT_LOG10, PT_LOG2, PT_LOWER, PT_LPAD, PT_LTRIM, PT_MAKEDATE, PT_MAKETIME, PT_MD5, PT_MID, PT_MINUS, PT_MINUTEF, PT_MOD, PT_MODULUS, PT_MONTHF, PT_MONTHS_BETWEEN, PT_NAME, PT_NEW_TIME, PT_OCTET_LENGTH, PT_PI, PT_PLUS, PT_POSITION, PT_POWER, PT_QUARTERF, PT_RADIANS, PT_RAND, PT_RANDOM, PT_REPEAT, PT_REPLACE, PT_REVERSE, PT_RIGHT, PT_ROUND, PT_RPAD, PT_RTRIM, PT_SCHEMA, PT_SECONDF, PT_SECTOTIME, PT_SESSIONTIMEZONE, PT_SIN, PT_SPACE, PT_SQRT, PT_STR_TO_DATE, PT_STRCAT, PT_STRCMP, PT_SUBDATE, PT_SUBSTRING, PT_SUBSTRING_INDEX, PT_SYS_DATE, PT_SYS_DATETIME, PT_SYS_TIME, PT_SYS_TIMESTAMP, PT_TAN, PT_TIME_FORMAT, PT_TIMEDIFF, PT_TIMEF, PT_TIMES, PT_TIMESTAMP, PT_TIMETOSEC, PT_TO_BASE64, PT_TO_CHAR, PT_TO_DATE, PT_TO_DATETIME, PT_TO_DATETIME_TZ, PT_TO_NUMBER, PT_TO_TIME, PT_TO_TIMESTAMP, PT_TO_TIMESTAMP_TZ, PT_TODAYS, PT_TRANSLATE, PT_TRIM, PT_TRUNC, PT_TYPE_NULL, PT_TYPEOF, PT_TZ_OFFSET, PT_UNARY_MINUS, PT_UNIX_TIMESTAMP, PT_UPPER, PT_UTC_DATE, PT_UTC_TIME, PT_UTC_TIMESTAMP, PT_VALUE, PT_VERSION, PT_WEEKDAY, PT_WEEKF, PT_YEARF, and parser_node::type_enum.

Referenced by pt_check_partitions(), and pt_find_partition_column_count_func().

Here is the caller graph for this function:

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

Definition at line 4180 of file semantic_check.c.

References assert, NULL, PT_IS_QUERY, and PT_STOP_WALK.

Referenced by pt_check_data_default().

Here is the caller graph for this function:

int pt_find_var ( PT_NODE p,
PT_NODE **  result 
)

Definition at line 12529 of file semantic_check.c.

References pt_expr_info::arg1, pt_expr_info::arg2, pt_statement_info::expr, parser_node::info, parser_node::node_type, p, PT_DOT_, PT_EXPR, and PT_NAME.

Referenced by mq_invert_insert_subquery(), and pt_invert().

Here is the caller graph for this function:

static PT_MISC_TYPE pt_get_class_type ( PARSER_CONTEXT parser,
const DB_OBJECT cls 
)
static

Definition at line 1532 of file semantic_check.c.

References db_is_class(), db_is_vclass(), PT_CLASS, PT_MISC_DUMMY, and PT_VCLASS.

Referenced by pt_check_alter().

Here is the caller graph for this function:

static PT_NODE * pt_get_common_type_for_union ( PARSER_CONTEXT parser,
PT_NODE att1,
PT_NODE att2,
SEMAN_COMPATIBLE_INFO cinfo,
int  idx,
bool need_cast 
)
static
static bool pt_has_parameters ( PARSER_CONTEXT parser,
PT_NODE stmt 
)
static

Definition at line 14358 of file semantic_check.c.

References NULL, parser_walk_tree(), and pt_is_parameter_node().

Referenced by pt_check_create_entity(), and pt_check_create_view().

Here is the caller graph for this function:

PT_NODE* pt_has_using_index_clause ( PARSER_CONTEXT parser,
PT_NODE node,
void *  arg,
int *  continue_walk 
)
static bool pt_is_compatible_type ( const PT_TYPE_ENUM  arg1_type,
const PT_TYPE_ENUM  arg2_type 
)
static
static PT_NODE * pt_is_parameter_node ( PARSER_CONTEXT parser,
PT_NODE node,
void *  arg,
int *  continue_walk 
)
static
static int pt_is_real_class_of_vclass ( PARSER_CONTEXT parser,
const PT_NODE s_class,
const PT_NODE d_class 
)
static

Definition at line 1771 of file semantic_check.c.

References pt_statement_info::data_type, pt_data_type_info::entity, parser_node::info, mq_is_real_class_of_vclass(), parser_node::node_type, and PT_DATA_TYPE.

Referenced by pt_class_assignable().

Here is the caller graph for this function:

static int pt_json_str_codeset_normalization ( PARSER_CONTEXT parser,
REFPTR(char, c)   
)
static
static PT_NODE * pt_mark_union_leaf_nodes ( PARSER_CONTEXT parser,
PT_NODE node,
void *  arg,
int *  continue_walk 
)
static
static int pt_normalize_path ( PARSER_CONTEXT parser,
REFPTR(char, c)   
)
static

Definition at line 9390 of file semantic_check.c.

References db_json_normalize_path_string(), NO_ERROR, and parser_alloc().

Referenced by pt_check_json_table_node().

Here is the caller graph for this function:

static int pt_objects_assignable ( PARSER_CONTEXT parser,
const PT_NODE d_class_dt,
const PT_NODE s_class 
)
static
PT_NODE* pt_remove_from_list ( PARSER_CONTEXT parser,
PT_NODE node,
PT_NODE list 
)

Definition at line 12559 of file semantic_check.c.

References parser_node::next, NULL, and parser_free_tree().

Referenced by pt_check_analytic_function(), pt_check_function_index_expr(), pt_check_order_by(), and qo_reduce_order_by().

Here is the caller graph for this function:

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

Definition at line 9529 of file semantic_check.c.

References parser_node::alias_print, pt_union_info::arg1, ARG_FILE_LINE, pt_function_info::arg_list, pt_method_call_info::arg_list, pt_spec_info::as_attr_list, assert, ASSERT_ERROR, pt_update_info::assignment, pt_merge_info::assignment, pt_merge_info::attr_list, pt_method_call_info::call_or_expr, pt_coll_infer::can_force_cs, parser_node::cannot_prepare, CASE_INSENSITIVE, pt_select_info::check_cycles, pt_coll_infer::codeset, pt_coll_infer::coerc_level, pt_coll_infer::coll_id, seman_compatible_info::coll_infer, pt_select_info::connect_by, CONNECT_BY_CYCLES_IGNORE, CONNECT_BY_CYCLES_NONE, CONNECT_BY_CYCLES_NONE_IGNORE, pt_statement_info::data_type, parser_node::data_type, pt_value_info::data_value, DB_DEFAULT_PRECISION, DB_DEFAULT_SCALE, db_error_string(), db_find_class(), db_is_vclass(), pt_name_info::db_object, pt_statement_info::delete_, pt_agg_check_info::depth, pt_spec_info::derived_table, pt_spec_info::derived_table_type, pt_data_type_info::entity, ER_DO_INSERT_TOO_MANY, ER_ERROR_SEVERITY, er_msg(), er_set(), EXCLUDE_HIDDEN_COLUMNS, pt_sort_spec_info::expr, pt_json_table_info::expr, pt_statement_info::expr, pt_query_info::flag, parser_node::flag, pt_spec_info::flat_entity_list, pt_select_info::from, pt_agg_check_info::from, pt_statement_info::function, pt_function_info::function_type, pt_function_info::generic_name, pt_select_info::group_by, pt_agg_check_info::group_by, pt_select_info::having, i, pt_data_value::i, pt_spec_info::id, seman_compatible_info::idx, INCLUDE_HIDDEN_COLUMNS, parser_node::info, pt_merge_info::insert, pt_statement_info::insert, pt_merge_info::into, pt_insert_info::into_var, pt_union_info::is_leaf_node, pt_statement_info::json_table_info, LANG_SYS_CODESET, LANG_SYS_COLLATION, pt_select_info::list, pt_node_list_info::list_type, pt_statement_info::merge, pt_statement_info::method_call, mq_generate_name(), MSGCAT_SEMANTIC_AMBIGUOUS_REF_TO, MSGCAT_SEMANTIC_CANNOT_USE_GROUPBYNUM_WITH_ROLLUP, MSGCAT_SEMANTIC_DELETE_DERIVED_TABLE, MSGCAT_SEMANTIC_GEN_FUNC_TOO_MANY_ARGS, MSGCAT_SEMANTIC_INS_EXPR_IN_INSERT, MSGCAT_SEMANTIC_INSTNUM_COMPATIBILITY_ERR, MSGCAT_SEMANTIC_IS_NOT_DEFINED, MSGCAT_SEMANTIC_MERGE_CANT_AFFECT_SOURCE_TABLE, MSGCAT_SEMANTIC_MERGE_DERIVED_TABLE, MSGCAT_SEMANTIC_NO_GROUPBY_ALLOWED, MSGCAT_SEMANTIC_NO_ORDERBY_ALLOWED, MSGCAT_SEMANTIC_NON_REFERABLE_VIOLATION, MSGCAT_SEMANTIC_NOT_SINGLE_COL, MSGCAT_SEMANTIC_OUT_OF_MEMORY, MSGCAT_SEMANTIC_RESOLUTION_FAILED, MSGCAT_SEMANTIC_SORT_SPEC_RANGE_ERR, MSGCAT_SEMANTIC_SORT_SPEC_WANT_NUM, MSGCAT_SEMANTIC_UPDATE_DERIVED_TABLE, MSGCAT_SEMANTIC_UPDATE_NO_AGGREGATE, MSGCAT_SEMANTIC_UPDATE_SUBVCLASS_NOT_ALLOWED, MSGCAT_SEMANTIC_WANT_NO_AGGREGATE, MSGCAT_SEMANTIC_WANT_TYPE, MSGCAT_SET_PARSER_SEMANTIC, pt_statement_info::name, db_value_plist::next, parser_node::next, NO_ERROR, pt_statement_info::node_list, parser_node::node_type, NULL, NUM_F_GENERIC_ARGS, pt_insert_info::odku_assignments, pt_method_call_info::on_call_target, pt_spec_info::only_all, pt_expr_info::op, pt_query_info::order_by, pt_update_info::order_by, pt_name_info::original, parser, parser_append_node(), parser_copy_tree(), parser_free_node(), parser_walk_tree(), pt_sort_spec_info::pos_descr, qfile_tuple_value_position::pos_no, seman_compatible_info::prec, prm_get_bool_value(), PRM_ID_ONLY_FULL_GROUP_BY, PT_ALL, pt_apply_union_select_list_collation(), PT_CAST, pt_check_analytic_function(), pt_check_assignments(), pt_check_cast_op(), pt_check_cume_dist_percent_rank_order_by(), pt_check_defaultf(), pt_check_group_concat_order_by(), pt_check_groupbynum_post(), pt_check_groupbynum_pre(), pt_check_into_clause(), pt_check_isolation_lvl(), pt_check_json_table_node(), pt_check_level_expr(), pt_check_method(), pt_check_odku_assignments(), pt_check_order_by(), pt_check_single_valued_node(), pt_check_single_valued_node_post(), pt_check_sub_insert(), pt_check_union_is_foldable(), pt_check_xaction_list(), pt_coerce_insert_values(), PT_COLLATION_NOT_COERC, PT_CONNECT_BY_ISCYCLE, PT_CONNECT_BY_ISLEAF, PT_CUME_DIST, PT_DEFAULTF, PT_DEFINE_VARIABLE, PT_DELETE, PT_DIFFERENCE, PT_DO, PT_ERRORc, PT_ERRORm, PT_ERRORmf, PT_ERRORmf2, PT_EVALUATE, PT_EXPR, pt_expr_disallow_op_pre(), PT_EXPR_INFO_INSTNUM_NC, PT_EXPR_INFO_IS_FLAGED, pt_find_op_type_pre(), pt_find_spec_in_statement(), pt_fold_union(), PT_FUNCTION, PT_GENERIC, pt_get_next_assignment(), pt_get_select_list(), pt_get_select_list_coll_compat(), PT_GROUP_CONCAT, pt_has_aggregate(), pt_has_analytic(), pt_has_error, PT_HOST_VAR, pt_init_assignments_helper(), PT_INSERT, PT_INTERSECTION, PT_IS_CALL_STMT, pt_is_instnum, pt_is_json_doc_type(), PT_IS_MTHD_EXPR, PT_IS_OID_NAME, PT_IS_SHOWSTMT, PT_IS_SUBQUERY, PT_JSON_TABLE, pt_length_of_list(), pt_length_of_select_list(), PT_MERGE, PT_METHOD_CALL, pt_name(), PT_NAME, PT_NAME_ALLOW_REUSABLE_OID, PT_NAME_INFO_GENERATED_OID, PT_NAME_INFO_IS_FLAGED, pt_no_double_updates(), PT_PERCENT_RANK, pt_register_orphan(), pt_replace_names_in_update_values(), PT_SCOPE, PT_SELECT, PT_SELECT_INFO_DISABLE_LOOSE_SCAN, PT_SELECT_INFO_SET_FLAG, pt_semantic_type(), PT_SET_SESSION_VARIABLES, PT_SET_XACTION, pt_short_print(), pt_show_type_enum(), PT_SHOWSTMT, PT_SPEC, PT_SPEC_IS_CTE, pt_str_compare(), pt_to_pos_descr(), PT_TYPE_INTEGER, PT_TYPE_JSON, PT_TYPE_NONE, PT_TYPE_OBJECT, PT_UNION, PT_UNION_INCOMP, PT_UPDATE, PT_VALUE, pt_query_info::q, pt_statement_info::query, seman_compatible_info::ref_att, seman_compatible_info::scale, pt_query_info::select, showstmt_metadata::semantic_check_func, pt_statement_info::set_xaction, pt_showstmt_info::show_type, pt_statement_info::showstmt, showstmt_get_metadata(), pt_query_info::single_tuple, sm_is_reuse_oid_class(), pt_statement_info::sort_spec, pt_delete_info::spec, pt_statement_info::spec, pt_name_info::spec_id, STATEMENT_SET_FOLD_NOTHING, pt_delete_info::target_classes, semantic_chk_info::top_node, pt_json_table_info::tree, seman_compatible_info::type_enum, parser_node::type_enum, pt_query_info::union_, pt_merge_info::update, pt_statement_info::update, pt_statement_info::value, pt_insert_info::value_clauses, pt_merge_info::value_clauses, pt_select_info::with_increment, parser_node::with_rollup, and pt_set_xaction_info::xaction_modes.

Referenced by pt_check_with_info().

Here is the caller graph for this function:

PT_NODE* pt_semantic_quick_check_node ( PARSER_CONTEXT parser,
PT_NODE **  spec_p,
PT_NODE **  node_p 
)

Definition at line 11157 of file semantic_check.c.

References error(), NO_ERROR, NULL, pt_has_error, pt_quick_resolve_names(), and pt_semantic_type().

Referenced by compile_partition_expression().

Here is the caller graph for this function: