CUBRID Engine
latest
|
Go to the source code of this file.
Enumerations | |
enum | STATEMENT_SET_FOLD { STATEMENT_SET_FOLD_NOTHING = 0, STATEMENT_SET_FOLD_AS_NULL, STATEMENT_SET_FOLD_AS_ARG1, STATEMENT_SET_FOLD_AS_ARG2 } |
enum STATEMENT_SET_FOLD |
Enumerator | |
---|---|
STATEMENT_SET_FOLD_NOTHING | |
STATEMENT_SET_FOLD_AS_NULL | |
STATEMENT_SET_FOLD_AS_ARG1 | |
STATEMENT_SET_FOLD_AS_ARG2 |
Definition at line 29 of file semantic_check.h.
int pt_attr_check_default_cs_coll | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | attr, | ||
int | default_cs, | ||
int | default_coll | ||
) |
Definition at line 4071 of file semantic_check.c.
References assert, lang_collation::codeset, pt_data_type_info::collation_id, pt_statement_info::data_type, parser_node::data_type, pt_value_info::data_value, DB_DEFAULT_PRECISION, db_get_string_size(), pt_value_info::db_value, pt_value_info::db_value_is_initialized, pt_data_type_info::enumeration, err, pt_data_type_info::has_coll_spec, pt_data_type_info::has_cs_spec, parser_node::info, INTL_CODESET_RAW_BYTES, LANG_GET_BINARY_COLLATION, lang_get_collation(), LANG_SYS_CODESET, parser_varchar::length, parser_node::next, NO_ERROR, parser_node::node_type, NULL, parser_copy_tree(), parser_free_tree(), parser_new_node(), pt_data_type_info::precision, pt_coerce_value(), PT_DATA_TYPE, PT_HAS_COLLATION, PT_TYPE_ENUMERATION, PT_VALUE, pt_data_value::str, parser_node::type_enum, pt_data_type_info::units, and pt_statement_info::value.
Referenced by do_add_attribute(), pt_check_alter(), and pt_check_create_entity().
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().
bool pt_check_compatible_node_for_orderby | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | order, | ||
PT_NODE * | column | ||
) |
Definition at line 871 of file semantic_check.c.
References pt_expr_info::arg1, assert, pt_expr_info::cast_type, pt_data_type_info::collation_id, pt_statement_info::data_type, parser_node::data_type, pt_statement_info::expr, parser_node::info, parser_node::node_type, NULL, pt_expr_info::op, PT_CAST, pt_check_path_eq(), PT_DOT_, PT_EXPR, PT_IS_DATE_TIME_TYPE, PT_IS_NUMERIC_TYPE, PT_IS_STRING_TYPE, PT_NAME, PT_TYPE_TIME, and parser_node::type_enum.
Referenced by pt_check_order_by(), and pt_to_pos_descr().
PT_NODE* pt_check_cyclic_reference_in_view_spec | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | node, | ||
void * | arg, | ||
int * | continue_walk | ||
) |
Definition at line 7291 of file semantic_check.c.
References CASE_INSENSITIVE, db_get_query_specs(), db_is_vclass(), pt_name_info::db_object, db_query_spec_next(), db_query_spec_string(), pt_spec_info::entity_name, PT_ZZ_ERROR_MSG_INFO::error_message, pt_statement_info::error_msg, parser_context::error_msgs, parser_node::info, MSGCAT_SEMANTIC_CYCLIC_REFERENCE_VIEW_SPEC, MSGCAT_SET_PARSER_SEMANTIC, pt_statement_info::name, parser_node::node_type, NULL, parser_create_parser(), parser_free_parser(), parser_parse_string_use_sys_charset(), parser_walk_tree(), pt_check_cyclic_reference_in_view_spec(), PT_ERROR, PT_ERRORmf, pt_get_name(), pt_has_error, PT_NAME, PT_SPEC, PT_STOP_WALK, pt_str_compare(), and pt_statement_info::spec.
Referenced by pt_check_cyclic_reference_in_view_spec(), and pt_check_vclass_query_spec().
PT_NODE* pt_check_odku_assignments | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | insert | ||
) |
Definition at line 15590 of file semantic_check.c.
References pt_expr_info::arg1, assert, pt_statement_info::expr, pt_spec_info::id, parser_node::info, pt_statement_info::insert, MSGCAT_SEMANTIC_ILLEGAL_LHS, MSGCAT_SET_PARSER_SEMANTIC, pt_statement_info::name, parser_node::next, parser_node::node_type, NULL, pt_insert_info::odku_assignments, pt_expr_info::op, PT_ASSIGN, pt_check_assignments(), PT_ERRORm, PT_EXPR, pt_has_error, PT_INSERT, PT_INTERNAL_ERROR, PT_NAME, pt_no_double_updates(), pt_insert_info::spec, pt_statement_info::spec, and pt_name_info::spec_id.
Referenced by mq_resolve_insert_statement(), mq_translate_insert(), and pt_semantic_check_local().
PT_NODE* pt_check_type_compatibility_of_values_query | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | node | ||
) |
Definition at line 2733 of file semantic_check.c.
References assert, cubregex::count(), EXCLUDE_HIDDEN_COLUMNS, free_and_init, parser_node::info, pt_node_list_info::list, pt_select_info::list, parser_node::next, pt_statement_info::node_list, parser_node::node_type, NULL, pt_get_values_query_compatible_info(), PT_IS_VALUE_QUERY, pt_length_of_select_list(), PT_SELECT, pt_values_query_to_compatible_cast(), pt_query_info::q, pt_statement_info::query, and pt_query_info::select.
Referenced by pt_eval_type().
PT_NODE* pt_check_union_compatibility | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | node | ||
) |
Definition at line 2638 of file semantic_check.c.
References pt_union_info::arg1, pt_union_info::arg2, assert, pt_statement_info::cte, parser_node::data_type, EXCLUDE_HIDDEN_COLUMNS, free_and_init, parser_node::info, MSGCAT_SEMANTIC_ARITY_MISMATCH, MSGCAT_SET_PARSER_SEMANTIC, parser_node::node_type, pt_cte_info::non_recursive_part, NULL, parser_copy_tree(), parser_free_tree(), PT_CTE, PT_DIFFERENCE, PT_ERRORmf2, pt_get_compatible_info(), pt_get_select_list(), PT_INTERSECTION, pt_length_of_select_list(), pt_to_compatible_cast(), PT_UNION, pt_query_info::q, pt_statement_info::query, pt_cte_info::recursive_part, and pt_query_info::union_.
Referenced by pt_eval_type().
STATEMENT_SET_FOLD pt_check_union_is_foldable | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | union_node | ||
) |
Definition at line 16135 of file semantic_check.c.
References pt_union_info::arg1, pt_union_info::arg2, assert, parser_node::info, parser_node::node_type, NULL, PT_CTE, PT_DIFFERENCE, pt_false_where(), PT_INTERSECTION, PT_IS_QUERY_NODE_TYPE, PT_UNION, pt_query_info::q, pt_statement_info::query, STATEMENT_SET_FOLD_AS_ARG1, STATEMENT_SET_FOLD_AS_ARG2, STATEMENT_SET_FOLD_AS_NULL, STATEMENT_SET_FOLD_NOTHING, pt_query_info::union_, and pt_query_info::with.
Referenced by pt_eval_type(), and pt_semantic_check_local().
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().
int pt_class_assignable | ( | PARSER_CONTEXT * | parser, |
const PT_NODE * | d_class, | ||
const PT_NODE * | s_class | ||
) |
Definition at line 1836 of file semantic_check.c.
References pt_statement_info::data_type, parser_node::data_type, pt_data_type_info::entity, parser_node::info, parser_node::node_type, PT_DATA_TYPE, pt_is_real_class_of_vclass(), pt_objects_assignable(), PT_TYPE_NA, PT_TYPE_NULL, PT_TYPE_OBJECT, and parser_node::type_enum.
Referenced by pt_assignment_class_compatible(), pt_check_vclass_query_spec(), pt_check_vclass_union_spec(), and pt_class_compatible().
PT_NODE* pt_find_class_of_index | ( | PARSER_CONTEXT * | parser, |
const char *const | index_name, | ||
const DB_CONSTRAINT_TYPE | index_type | ||
) |
Definition at line 13834 of file semantic_check.c.
References db_find_class_of_index(), db_get_class_name(), NULL, PT_INTERNAL_ERROR, and pt_name().
PT_NODE* pt_find_order_value_in_list | ( | PARSER_CONTEXT * | parser, |
const PT_NODE * | sort_value, | ||
const PT_NODE * | order_list | ||
) |
Definition at line 12600 of file semantic_check.c.
References pt_value_info::data_value, pt_sort_spec_info::expr, pt_data_value::i, parser_node::info, parser_node::next, parser_node::node_type, NULL, pt_check_path_eq(), PT_NAME, PT_VALUE, pt_statement_info::sort_spec, and pt_statement_info::value.
Referenced by pt_check_order_by(), and qo_reduce_order_by().
PT_NODE* pt_fold_union | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | union_node, | ||
STATEMENT_SET_FOLD | fold_as | ||
) |
Definition at line 16216 of file semantic_check.c.
References parser_node::alias_print, pt_union_info::arg1, pt_union_info::arg2, assert, parser_node::column_number, pt_query_info::flag, parser_node::info, pt_query_info::limit, parser_node::line_number, mq_rewrite_query_as_derived(), db_value_plist::next, parser_node::next, parser_node::node_type, NULL, pt_query_info::order_by, pt_query_info::orderby_for, parser_free_tree(), parser_new_node(), pt_check_order_by(), PT_DIFFERENCE, pt_has_error, PT_INTERSECTION, pt_move_node(), PT_TYPE_NULL, PT_UNION, PT_VALUE, pt_query_info::q, pt_statement_info::query, pt_query_info::rewrite_limit, STATEMENT_SET_FOLD_AS_ARG1, STATEMENT_SET_FOLD_AS_ARG2, STATEMENT_SET_FOLD_AS_NULL, STATEMENT_SET_FOLD_NOTHING, parser_node::type_enum, pt_query_info::union_, and pt_query_info::with.
Referenced by pt_eval_type(), and pt_semantic_check_local().
int pt_has_text_domain | ( | PARSER_CONTEXT * | parser, |
DB_ATTRIBUTE * | attribute | ||
) |
PT_NODE* pt_insert_entity | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | node, | ||
PT_NODE * | prev_entity, | ||
PT_NODE * | correlation_spec | ||
) |
Definition at line 8495 of file name_resolution.c.
References pt_dot_info::arg1, pt_dot_info::arg2, assert, parser_node::column_number, pt_statement_info::data_type, parser_node::data_type, pt_spec_info::derived_table_type, pt_statement_info::dot, pt_data_type_info::entity, pt_spec_info::entity_name, pt_spec_info::flat_entity_list, pt_spec_info::flavor, pt_spec_info::id, parser_node::info, parser_node::line_number, pt_spec_info::meta_class, pt_name_info::meta_class, mq_regenerate_if_ambiguous(), MSGCAT_CATALOG_CUBRID, msgcat_message(), MSGCAT_SEMANTIC_INCONSISTENT_PATH, MSGCAT_SEMANTIC_OUT_OF_MEMORY, MSGCAT_SET_PARSER_SEMANTIC, pt_statement_info::name, parser_node::next, parser_node::node_type, NULL, pt_spec_info::only_all, pt_name_info::original, parser_copy_tree(), parser_free_tree(), parser_new_node(), pt_spec_info::path_entities, PT_ALL, PT_CLASS, pt_copy_data_type_entity(), PT_DATA_TYPE, PT_DOT_, PT_ERROR, PT_ERRORmf3, pt_insert_conjunct(), PT_INTERNAL_ERROR, pt_lookup_entity(), pt_make_flat_list_from_data_types(), PT_METHOD_CALL, PT_METHOD_ENTITY, PT_NAME, PT_NORMAL, PT_PATH_INNER, pt_short_print(), PT_SPEC, pt_spec_info::range_var, pt_name_info::resolved, pt_statement_info::spec, and pt_name_info::spec_id.
Referenced by mq_push_arg2(), mq_push_dot_in_query(), pt_expand_external_path(), and pt_get_resolution().
PT_NODE* pt_invert | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | name_expr, | ||
PT_NODE * | result | ||
) |
Definition at line 12101 of file semantic_check.c.
References pt_expr_info::arg1, pt_expr_info::arg2, assert, semantic_chk_info::donot_fold, parser_context::error_msgs, pt_statement_info::expr, parser_node::info, parser_node::next, parser_node::node_type, NULL, pt_expr_info::op, pt_expr_info::paren_type, parser_copy_tree(), parser_new_node(), PT_CAST, PT_DIVIDE, PT_EXPR, pt_find_var(), pt_has_error, PT_INTERNAL_ERROR, PT_MINUS, PT_NAME, PT_PLUS, pt_semantic_type(), PT_TIMES, PT_TYPE_NULL, PT_UNARY_MINUS, semantic_chk_info::top_node, and parser_node::type_enum.
Referenced by mq_class_lambda(), mq_invert_insert_select(), and mq_invert_subqueries().
PT_NODE* pt_semantic_check | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | statement | ||
) |
Definition at line 11190 of file semantic_check.c.
References NULL, and pt_check_with_info().
Referenced by check_default_on_update_clause(), do_alter_one_clause_with_template(), do_create_entity(), get_att_default_from_def(), pt_check_create_entity(), pt_check_create_view(), pt_check_vclass_query_spec(), and pt_compile().
PT_NODE* pt_semantic_quick_check_node | ( | PARSER_CONTEXT * | parser, |
PT_NODE ** | spec, | ||
PT_NODE ** | node | ||
) |
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().
void pt_try_remove_order_by | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | query | ||
) |
Definition at line 16083 of file semantic_check.c.
References assert, pt_statement_info::expr, pt_query_info::flag, parser_node::flag, parser_node::info, parser_node::is_hidden_column, pt_query_info::limit, db_value_plist::next, parser_node::next, parser_node::node_type, NULL, pt_expr_info::op, pt_query_info::order_by, pt_query_info::order_siblings, pt_query_info::orderby_for, parser_free_tree(), PT_EXPR, pt_get_select_list(), PT_IS_QUERY_NODE_TYPE, PT_ORDERBY_NUM, and pt_statement_info::query.
Referenced by mq_make_derived_spec(), and pt_coerce_range_expr_arguments().
PT_NODE* pt_type_cast_vclass_query_spec_column | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | attr, | ||
PT_NODE * | col | ||
) |
Definition at line 7515 of file semantic_check.c.
References parser_node::alias_print, pt_expr_info::arg1, assert, pt_expr_info::cast_type, pt_data_type_info::collation_id, parser_node::column_number, pt_statement_info::data_type, parser_node::data_type, pt_data_type_info::dec_precision, pt_data_type_info::enumeration, pt_statement_info::expr, parser_node::info, parser_node::line_number, MSGCAT_SEMANTIC_OUT_OF_MEMORY, MSGCAT_SET_PARSER_SEMANTIC, parser_node::next, NULL, pt_expr_info::op, parser_copy_tree_list(), parser_free_tree(), parser_new_node(), pt_data_type_info::precision, PT_CAST, PT_DATA_TYPE, PT_ERRORm, PT_EXPR, PT_EXPR_INFO_CAST_SHOULD_FOLD, PT_EXPR_INFO_SET_FLAG, PT_IS_COLLECTION_TYPE, PT_IS_PARAMETERIZED_TYPE, PT_TYPE_OBJECT, PT_UNION_COMP, pt_union_compatible(), PT_UNION_INCOMP, parser_node::type_enum, and pt_data_type_info::units.
Referenced by mq_set_types(), and pt_type_cast_vclass_query_spec().