CUBRID Engine
latest
|
#include "config.h"
#include <assert.h>
#include <stdarg.h>
#include <ctype.h>
#include <float.h>
#include <math.h>
#include <limits.h>
#include <vector>
#include <sys/time.h>
#include "authenticate.h"
#include "error_manager.h"
#include "parser.h"
#include "parser_message.h"
#include "parse_type.hpp"
#include "set_object.h"
#include "arithmetic.h"
#include "string_opfunc.h"
#include "object_domain.h"
#include "object_primitive.h"
#include "object_representation.h"
#include "semantic_check.h"
#include "xasl_generation.h"
#include "language_support.h"
#include "schema_manager.h"
#include "system_parameter.h"
#include "network_interface_cl.h"
#include "object_template.h"
#include "db.h"
#include "tz_support.h"
#include "func_type.hpp"
#include "dbtype.h"
Go to the source code of this file.
Classes | |
struct | compare_between_operator |
struct | expression_signature |
struct | expression_definition |
Typedefs | |
typedef struct compare_between_operator | COMPARE_BETWEEN_OPERATOR |
typedef struct expression_signature | EXPRESSION_SIGNATURE |
typedef struct expression_definition | EXPRESSION_DEFINITION |
typedef enum collation_result | COLLATION_RESULT |
Enumerations | |
enum | collation_result { ERROR_COLLATION = -1, NO_COLLATION = 0, HAS_COLLATION = 1 } |
Variables | |
static COMPARE_BETWEEN_OPERATOR | pt_Compare_between_operator_table [] |
#define COMPARE_BETWEEN_OPERATOR_COUNT |
Definition at line 159 of file type_checking.c.
Referenced by pt_between_to_comp_op(), and pt_comp_to_between_op().
#define MAX_OVERLOADS 16 |
Definition at line 167 of file type_checking.c.
Referenced by pt_get_expression_definition().
#define MORE_COERCIBLE | ( | arg1_coll_infer, | |
arg2_coll_infer | |||
) |
Referenced by pt_common_collation().
#define PT_ARE_COMPARABLE | ( | typ1, | |
typ2 | |||
) | ((typ1 == typ2) || PT_ARE_COMPARABLE_CHAR_TYPE (typ1, typ2) || PT_ARE_COMPARABLE_NUMERIC_TYPE (typ1, typ2)) |
Definition at line 112 of file type_checking.c.
Referenced by pt_coerce_expr_arguments().
#define PT_ARE_COMPARABLE_CHAR_TYPE | ( | typ1, | |
typ2 | |||
) |
Definition at line 102 of file type_checking.c.
#define PT_ARE_COMPARABLE_NUMERIC_TYPE | ( | typ1, | |
typ2 | |||
) |
Definition at line 106 of file type_checking.c.
#define PT_COLL_WRAP_TYPE_FOR_MAYBE | ( | type | ) | ((PT_IS_CHAR_STRING_TYPE (type)) ? (type) : PT_TYPE_VARCHAR) |
Definition at line 163 of file type_checking.c.
Referenced by pt_check_expr_collation(), pt_check_function_collation(), pt_check_recursive_expr_collation(), and pt_eval_function_type_old().
#define PT_IS_CAST_MAYBE | ( | node | ) |
Definition at line 124 of file type_checking.c.
Referenced by pt_check_function_collation(), and pt_eval_function_type_old().
#define PT_IS_LEFT_RECURSIVE_EXPRESSION | ( | node | ) | ((node)->info.expr.op == PT_GREATEST || (node)->info.expr.op == PT_LEAST || (node)->info.expr.op == PT_COALESCE) |
Definition at line 118 of file type_checking.c.
Referenced by pt_eval_recursive_expr_type(), and pt_eval_type_pre().
#define PT_IS_RECURSIVE_EXPRESSION | ( | node | ) | ((node)->node_type == PT_EXPR && (PT_IS_LEFT_RECURSIVE_EXPRESSION (node) || PT_IS_RIGHT_RECURSIVE_EXPRESSION (node))) |
Definition at line 115 of file type_checking.c.
Referenced by pt_apply_expressions_definition(), pt_check_recursive_expr_collation(), pt_coerce_expr_arguments(), pt_eval_recursive_expr_type(), and pt_eval_type_pre().
#define PT_IS_RIGHT_RECURSIVE_EXPRESSION | ( | node | ) | ((node)->info.expr.op == PT_CASE || (node)->info.expr.op == PT_DECODE) |
Definition at line 121 of file type_checking.c.
Referenced by pt_check_recursive_expr_collation().
#define PT_NODE_IS_SESSION_VARIABLE | ( | node | ) |
Definition at line 128 of file type_checking.c.
Referenced by pt_upd_domain_info().
#define SET_EXPECTED_DOMAIN | ( | node, | |
dom | |||
) |
Definition at line 66 of file type_checking.c.
Referenced by pt_coerce_expression_argument(), pt_coerce_node_collation(), pt_coerce_range_expr_arguments(), pt_eval_expr_type(), and pt_eval_type().
typedef enum collation_result COLLATION_RESULT |
typedef struct compare_between_operator COMPARE_BETWEEN_OPERATOR |
typedef struct expression_definition EXPRESSION_DEFINITION |
typedef struct expression_signature EXPRESSION_SIGNATURE |
enum collation_result |
Enumerator | |
---|---|
ERROR_COLLATION | |
NO_COLLATION | |
HAS_COLLATION |
Definition at line 187 of file type_checking.c.
|
static |
Definition at line 5926 of file type_checking.c.
References prm_get_bool_value(), PRM_ID_ORACLE_STYLE_EMPTY_STRING, PT_COALESCE, PT_CONCAT, PT_CONCAT_WS, PT_DRAND, PT_DRANDOM, PT_IFNULL, pt_is_operator_logical(), PT_ISNULL, PT_NULLIF, PT_NVL, PT_NVL2, PT_RAND, PT_RANDOM, PT_REPLACE, PT_TO_CHAR, and PT_TRANSLATE.
Referenced by pt_apply_expressions_definition().
PT_NODE* pt_append_query_select_list | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | query, | ||
PT_NODE * | attrs | ||
) |
Definition at line 8090 of file type_checking.c.
References pt_union_info::arg1, pt_union_info::arg2, parser_node::info, pt_select_info::list, parser_node::node_type, parser_append_node(), PT_DIFFERENCE, PT_INTERSECTION, PT_SELECT, PT_UNION, pt_query_info::q, pt_statement_info::query, pt_query_info::select, and pt_query_info::union_.
Referenced by pt_resolve_vclass_args().
|
static |
Definition at line 5967 of file type_checking.c.
References pt_expr_info::arg1, expression_signature::arg1_type, pt_expr_info::arg2, expression_signature::arg2_type, pt_expr_info::arg3, expression_signature::arg3_type, does_op_specially_treat_null_arg(), ER_FAILED, pt_statement_info::expr, parser_node::flag, i, parser_node::info, parser_node::is_added_by_parser, NO_ERROR, parser_node::node_type, NULL, pt_expr_info::op, expression_definition::overloads, expression_definition::overloads_count, pt_are_equivalent_types(), pt_are_unmatchable_types(), pt_coerce_expr_arguments(), pt_coerce_range_expr_arguments(), PT_EXPR, pt_expr_get_return_type(), pt_get_common_arg_type_of_width_bucket(), pt_get_expression_definition(), pt_is_op_hv_late_bind(), PT_IS_PARAMETERIZED_TYPE, pt_is_range_expression(), PT_IS_RECURSIVE_EXPRESSION, PT_NODE_NONE, PT_TYPE_MAYBE, PT_TYPE_NONE, PT_TYPE_NULL, pt_upd_domain_info(), PT_WIDTH_BUCKET, pt_expr_info::recursive_type, and parser_node::type_enum.
Referenced by pt_eval_expr_type().
|
static |
Definition at line 4975 of file type_checking.c.
References pt_arg_type::NORMAL, PT_TYPE_NONE, pt_arg_type::type, pt_arg_type::pt_arg_type_val::type, and pt_arg_type::val.
Referenced by pt_apply_expressions_definition().
int pt_between_to_comp_op | ( | PT_OP_TYPE | between, |
PT_OP_TYPE * | left, | ||
PT_OP_TYPE * | right | ||
) |
Definition at line 21277 of file type_checking.c.
References COMPARE_BETWEEN_OPERATOR_COUNT, i, compare_between_operator::left, and compare_between_operator::right.
Referenced by qo_apply_range_intersection(), qo_apply_range_intersection_helper(), and qo_merge_range_helper().
|
static |
Definition at line 24891 of file type_checking.c.
References pt_expr_info::arg1, assert, pt_expr_info::cast_type, 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_EXPR, PT_HAS_COLLATION, parser_node::type_enum, and pt_data_type_info::units.
Referenced by pt_coerce_node_collation().
|
static |
Definition at line 12291 of file type_checking.c.
References pt_statement_info::data_type, parser_node::data_type, DB_DEFAULT_NUMERIC_PRECISION, DB_DEFAULT_NUMERIC_SCALE, DB_DEFAULT_PRECISION, DB_DEFAULT_SCALE, DB_MAX_CHAR_PRECISION, DB_MAX_NCHAR_PRECISION, DB_MAX_VARCHAR_PRECISION, DB_MAX_VARNCHAR_PRECISION, pt_data_type_info::dec_precision, parser_node::info, NULL, pt_data_type_info::precision, PT_TYPE_BIGINT, PT_TYPE_CHAR, PT_TYPE_DATE, PT_TYPE_DATETIME, PT_TYPE_DATETIMELTZ, PT_TYPE_DATETIMETZ, PT_TYPE_DOUBLE, PT_TYPE_FLOAT, PT_TYPE_INTEGER, PT_TYPE_MONETARY, PT_TYPE_NA, PT_TYPE_NCHAR, PT_TYPE_NULL, PT_TYPE_NUMERIC, PT_TYPE_SMALLINT, PT_TYPE_TIME, PT_TYPE_TIMESTAMP, PT_TYPE_TIMESTAMPLTZ, PT_TYPE_TIMESTAMPTZ, PT_TYPE_VARCHAR, PT_TYPE_VARNCHAR, TP_BIGINT_AS_CHAR_LENGTH, TP_DATE_AS_CHAR_LENGTH, TP_DATETIME_AS_CHAR_LENGTH, TP_DATETIMETZ_AS_CHAR_LENGTH, TP_DOUBLE_AS_CHAR_LENGTH, TP_FLOAT_AS_CHAR_LENGTH, TP_FLOATING_PRECISION_VALUE, TP_INTEGER_AS_CHAR_LENGTH, TP_MONETARY_AS_CHAR_LENGTH, TP_SMALLINT_AS_CHAR_LENGTH, TP_TIME_AS_CHAR_LENGTH, TP_TIMESTAMP_AS_CHAR_LENGTH, TP_TIMESTAMPTZ_AS_CHAR_LENGTH, and parser_node::type_enum.
Referenced by pt_eval_function_type_old().
|
static |
Definition at line 12109 of file type_checking.c.
References assert, db_get_string(), db_get_string_size(), DB_IS_NULL, db_string_check_explicit_date(), ER_DATE_CONVERSION, NULL, pt_coerce_value(), PT_IS_CHAR_STRING_TYPE, PT_TYPE_DATE, pt_value_to_db(), and parser_node::type_enum.
Referenced by pt_coerce_str_to_time_date_utime_datetime(), and pt_eval_expr_type().
|
static |
Definition at line 12067 of file type_checking.c.
References db_get_string(), db_get_string_size(), db_string_check_explicit_time(), DB_TYPE_CHAR, DB_TYPE_NCHAR, DB_TYPE_VARCHAR, DB_TYPE_VARNCHAR, DB_VALUE_TYPE, ER_TIME_CONVERSION, NULL, pt_coerce_value(), PT_TYPE_TIME, and pt_value_to_db().
Referenced by pt_coerce_str_to_time_date_utime_datetime(), and pt_eval_expr_type().
|
static |
Definition at line 21464 of file type_checking.c.
References db_get_bigint(), db_get_int(), db_get_short(), db_get_string_size(), DB_TYPE_BIGINT, DB_TYPE_BLOB, DB_TYPE_CLOB, DB_TYPE_INTEGER, DB_TYPE_SHORT, DB_VALUE_DOMAIN_TYPE, NULL, PT_CAST, PT_LPAD, PT_REPEAT, PT_RPAD, PT_SPACE, QSTR_IS_ANY_CHAR, and TP_DOMAIN_TYPE.
Referenced by pt_fold_const_expr().
|
static |
Definition at line 23133 of file type_checking.c.
References pt_expr_info::arg1, pt_expr_info::arg2, pt_expr_info::arg3, assert, pt_coll_infer::can_force_cs, lang_collation::codeset, pt_coll_infer::codeset, pt_coll_infer::coerc_level, pt_coll_infer::coll_id, pt_data_type_info::collation_id, pt_statement_info::data_type, parser_node::data_type, ER_FAILED, error(), ERROR_COLLATION, parser_node::expected_domain, pt_statement_info::expr, parser_node::flag, HAS_COLLATION, parser_node::info, INTL_CODESET_NONE, parser_node::is_wrapped_res_for_coll, LANG_COERCIBLE_CODESET, LANG_COERCIBLE_COLL, lang_get_codeset_name(), lang_get_collation(), MSGCAT_SEMANTIC_COLLATE_NOT_ALLOWED, MSGCAT_SEMANTIC_COLLATION_OP_ERROR, MSGCAT_SEMANTIC_CS_MATCH_COLLATE, MSGCAT_SET_PARSER_SEMANTIC, NO_ERROR, parser_node::node_type, NULL, pt_expr_info::op, prm_get_bool_value(), PRM_ID_PLUS_AS_CONCAT, PT_BETWEEN, PT_CHR, PT_CLOB_TO_CHAR, PT_COALESCE, pt_coerce_node_collation(), PT_COLL_WRAP_TYPE_FOR_MAYBE, PT_COLLATION_NOT_APPLICABLE, pt_common_collation(), PT_CONCAT, PT_CONCAT_WS, PT_CONNECT_BY_ROOT, PT_DATE_FORMAT, PT_DATEF, PT_ERRORm, PT_ERRORmf, PT_ERRORmf2, PT_EVALUATE_VARIABLE, PT_EXPR, PT_FIELD, pt_fix_arguments_collation_flag(), pt_get_collation_info(), pt_get_collation_info_for_collection_type(), PT_GET_COLLATION_MODIFIER, PT_GREATEST, PT_HAS_COLLATION, PT_IF, PT_IFNULL, PT_INDEX_PREFIX, pt_is_between_range_op(), PT_IS_COLLECTION_TYPE, pt_is_comp_op(), pt_is_op_w_collation(), PT_LEAST, PT_LEFT, PT_LOWER, PT_LPAD, PT_LTRIM, PT_MID, PT_MINUS, PT_NOT_BETWEEN, PT_NULLIF, PT_NVL, PT_NVL2, PT_PLUS, PT_PRIOR, PT_QPRIOR, PT_REPEAT, PT_REPLACE, PT_REVERSE, PT_RIGHT, PT_RPAD, PT_RTRIM, pt_show_binopcode(), PT_STRCAT, PT_SUBSTRING, PT_SUBSTRING_INDEX, PT_TIME_FORMAT, PT_TIMEF, PT_TRANSLATE, PT_TRIM, PT_TYPE_MAYBE, PT_TYPE_NONE, PT_TYPE_NULL, PT_UPPER, pt_wrap_type_for_collation(), TP_DOMAIN_TYPE, TP_IS_SET_TYPE, parser_node::type_enum, and pt_data_type_info::units.
Referenced by pt_eval_expr_type().
|
static |
Definition at line 24643 of file type_checking.c.
References pt_function_info::arg_list, assert, pt_coll_infer::can_force_cs, pt_coll_infer::codeset, pt_coll_infer::coerc_level, pt_coll_infer::coll_id, pt_data_type_info::collation_flag, pt_statement_info::data_type, parser_node::data_type, F_ELT, F_MULTISET, F_SEQUENCE, F_SET, fcode_get_lowercase_name(), pt_statement_info::function, pt_function_info::function_type, parser_node::info, INTL_CODESET_NONE, MSGCAT_SEMANTIC_COLLATION_OP_ERROR, MSGCAT_SET_PARSER_SEMANTIC, parser_node::next, parser_node::node_type, NULL, pt_add_type_to_set(), pt_coerce_node_collation(), PT_COLL_WRAP_TYPE_FOR_MAYBE, PT_COLLATION_NOT_APPLICABLE, pt_common_collation(), PT_ERRORmf, PT_FUNCTION, pt_get_collation_info(), PT_HAS_COLLATION, PT_IS_CAST_MAYBE, PT_TYPE_MAYBE, PT_TYPE_NONE, TP_DOMAIN_COLL_LEAVE, TP_DOMAIN_COLL_NORMAL, and parser_node::type_enum.
Referenced by pt_eval_function_type_old().
|
static |
Definition at line 23728 of file type_checking.c.
References pt_expr_info::arg1, pt_expr_info::arg2, assert, pt_coll_infer::can_force_cs, pt_coll_infer::codeset, pt_coll_infer::coerc_level, pt_coll_infer::coll_id, ER_FAILED, error(), pt_statement_info::expr, parser_node::info, INTL_CODESET_NONE, MSGCAT_SEMANTIC_COLLATION_OP_ERROR, MSGCAT_SET_PARSER_SEMANTIC, NO_ERROR, parser_node::node_type, NULL, pt_expr_info::op, PT_CASE, pt_coerce_node_collation(), PT_COLL_WRAP_TYPE_FOR_MAYBE, PT_COLLATION_NOT_APPLICABLE, PT_DECODE, PT_ERRORmf, PT_EXPR, pt_get_collation_info(), PT_HAS_COLLATION, PT_IS_RECURSIVE_EXPRESSION, PT_IS_RIGHT_RECURSIVE_EXPRESSION, pt_show_binopcode(), PT_TYPE_MAYBE, PT_TYPE_NONE, and parser_node::type_enum.
Referenced by pt_eval_type_pre().
|
static |
Definition at line 8053 of file type_checking.c.
References pt_union_info::arg1, pt_union_info::arg2, pt_select_info::connect_by, parser_node::info, pt_select_info::list, parser_node::next, parser_node::node_type, NULL, pt_query_info::order_by, parser_free_tree(), pt_is_query, PT_SELECT, pt_query_info::q, pt_statement_info::query, pt_query_info::select, and pt_query_info::union_.
Referenced by pt_eval_expr_type().
Definition at line 20209 of file type_checking.c.
References pt_statement_info::data_type, pt_data_type_info::entity, parser_node::info, pt_statement_info::name, parser_node::node_type, NULL, pt_name_info::original, PT_DATA_TYPE, and PT_NAME.
Referenced by pt_coerce_value_internal().
|
static |
Definition at line 12218 of file type_checking.c.
References parser_node::data_type, NO_ERROR, NULL, pt_coerce_value(), pt_common_type(), PT_IS_COLLECTION_TYPE, PT_IS_NUMERIC_TYPE, PT_IS_STRING_TYPE, PT_TYPE_NONE, and parser_node::type_enum.
|
static |
Definition at line 5588 of file type_checking.c.
References pt_expr_info::arg1, expression_signature::arg1_type, pt_expr_info::arg2, expression_signature::arg2_type, pt_expr_info::arg3, expression_signature::arg3_type, assert, error(), parser_node::expected_domain, pt_statement_info::expr, parser_node::info, NO_ERROR, parser_node::node_type, pt_arg_type::NORMAL, NULL, pt_expr_info::op, PT_ARE_COMPARABLE, PT_BETWEEN, PT_BETWEEN_GE_LT, pt_coerce_expression_argument(), pt_coerce_value(), PT_EQ, PT_EQ_ALL, PT_EQ_SOME, PT_EXPR, pt_get_common_arg_type_of_width_bucket(), pt_get_equivalent_type_with_op(), pt_infer_common_type(), PT_IS_COLLECTION_TYPE, pt_is_comp_op(), pt_is_enumeration_special_comparison(), PT_IS_NAME_NODE, PT_IS_NUMERIC_TYPE, pt_is_range_or_comp(), PT_IS_RECURSIVE_EXPRESSION, pt_is_symmetric_op(), pt_is_symmetric_type(), PT_IS_VALUE_NODE, PT_NODE_DATA_TYPE, pt_propagate_types(), PT_TYPE_DOUBLE, PT_TYPE_ENUMERATION, PT_TYPE_NONE, PT_TYPE_NUMERIC, PT_WIDTH_BUCKET, pt_expr_info::recursive_type, pt_arg_type::type, pt_arg_type::pt_arg_type_val::type, parser_node::type_enum, and pt_arg_type::val.
Referenced by pt_apply_expressions_definition().
|
static |
Definition at line 4772 of file type_checking.c.
References pt_expr_info::arg1, pt_expr_info::arg2, pt_expr_info::arg3, assert, parser_node::data_type, DB_DEFAULT_NUMERIC_DIVISION_SCALE, DB_DEFAULT_NUMERIC_PRECISION, DB_DEFAULT_PRECISION, DB_DEFAULT_SCALE, ER_FAILED, parser_node::expected_domain, pt_statement_info::expr, parser_node::info, pt_query_info::is_subquery, LANG_SYS_COLLATION, MSGCAT_SEMANTIC_OP_NOT_DEFINED_ON_1, MSGCAT_SET_PARSER_SEMANTIC, NO_ERROR, parser_node::node_type, NULL, pt_expr_info::op, parser_copy_tree_list(), prm_get_bool_value(), PRM_ID_RETURN_NULL_ON_FUNCTION_ERRORS, pt_data_type_to_db_domain(), PT_ERRORmf2, PT_EXPR, PT_EXPR_INFO_CAST_NOFAIL, PT_EXPR_INFO_SET_FLAG, PT_HOST_VAR, PT_IS_COLLECTION_TYPE, PT_IS_DISCRETE_NUMBER_TYPE, pt_is_op_hv_late_bind(), PT_IS_SUBQUERY, pt_is_symmetric_op(), pt_preset_hostvar(), PT_SELECT, pt_show_binopcode(), pt_show_type_enum(), PT_TYPE_BIGINT, pt_type_enum_to_db(), PT_TYPE_ENUMERATION, PT_TYPE_LOGICAL, PT_TYPE_MAYBE, PT_TYPE_NONE, PT_TYPE_NULL, PT_TYPE_NUMERIC, PT_TYPE_VARCHAR, PT_TYPE_VARNCHAR, pt_wrap_collection_with_cast_op(), pt_wrap_with_cast_op(), pt_statement_info::query, SET_EXPECTED_DOMAIN, tp_domain_cache(), TP_DOMAIN_COLL_LEAVE, tp_domain_resolve_default_w_coll(), TP_FLOATING_PRECISION_VALUE, and parser_node::type_enum.
Referenced by pt_coerce_expr_arguments(), pt_coerce_range_expr_arguments(), and pt_eval_expr_type().
PT_NODE* pt_coerce_node_collation | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | node, | ||
const int | coll_id, | ||
const INTL_CODESET | codeset, | ||
bool | force_mode, | ||
bool | use_collate_modifier, | ||
PT_TYPE_ENUM | wrap_type_for_maybe, | ||
PT_TYPE_ENUM | wrap_type_collection | ||
) |
Definition at line 22319 of file type_checking.c.
References pt_union_info::arg2, pt_function_info::arg_list, assert, pt_expr_info::cast_type, tp_domain::codeset, tp_domain::collation_flag, 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, pt_value_info::data_value, db_get_set(), db_get_string_size(), db_string_put_cs_and_collation(), pt_value_info::db_value, pt_value_info::db_value_is_initialized, DB_VALUE_TYPE, pt_data_type_info::dec_precision, parser_node::expected_domain, pt_statement_info::expr, F_MULTISET, F_SEQUENCE, F_SET, pt_statement_info::function, pt_function_info::function_type, i, parser_node::info, INTL_CODESET_RAW_BYTES, tp_domain::is_cached, pt_value_info::is_collate_allowed, LANG_COERCIBLE_CODESET, LANG_IS_COERCIBLE_COLL, LANG_SYS_CODESET, LANG_SYS_COLLATION, parser_varchar::length, pt_select_info::list, tp_domain::next, parser_node::next, NO_ERROR, parser_node::node_type, NULL, pt_expr_info::op, parser_copy_tree_list(), parser_free_node(), parser_new_node(), pt_data_type_info::precision, pt_value_info::print_charset, PT_CAST, pt_cast_needs_wrap_for_collation(), pt_coerce_node_collection_of_collection(), PT_DATA_TYPE, PT_DIFFERENCE, PT_DOT_, PT_EXPR, PT_EXPR_INFO_CAST_COLL_MODIFIER, PT_EXPR_INFO_CAST_SHOULD_FOLD, PT_EXPR_INFO_IS_FLAGED, PT_EXPR_INFO_SET_FLAG, pt_fold_const_expr(), PT_FUNCTION, PT_HAS_COLLATION, PT_HOST_VAR, PT_INTERSECTION, PT_IS_CHAR_STRING_TYPE, PT_IS_COLLECTION_TYPE, pt_length_of_list(), PT_METHOD_CALL, PT_NAME, PT_NODE_PRINT_VALUE_TO_TEXT, pt_preset_hostvar(), PT_SELECT, PT_SET_NODE_COLL_MODIFIER, pt_type_enum_to_db(), PT_TYPE_MAYBE, PT_UNION, PT_VALUE, pt_wrap_collection_with_cast_op(), pt_wrap_select_list_with_cast_op(), pt_wrap_with_cast_op(), pt_query_info::q, pt_statement_info::query, pt_query_info::select, db_set::set, SET_EXPECTED_DOMAIN, set_size(), tp_domain::setdomain, setobj_get_element_ptr(), setobj_size(), pt_data_value::str, pt_value_info::text, tp_domain_add(), tp_domain_cache(), TP_DOMAIN_COLL_ENFORCE, TP_DOMAIN_COLL_LEAVE, TP_DOMAIN_COLL_NORMAL, TP_DOMAIN_COLLATION, TP_DOMAIN_COLLATION_FLAG, tp_domain_copy(), tp_domain_resolve_default(), tp_domain_resolve_default_w_coll(), TP_DOMAIN_TYPE, TP_FLOATING_PRECISION_VALUE, TP_IS_CHAR_TYPE, TP_IS_SET_TYPE, TP_TYPE_HAS_COLLATION, parser_node::type_enum, pt_query_info::union_, pt_data_type_info::units, and pt_statement_info::value.
Referenced by func_type::Node::apply_argument(), pt_check_expr_collation(), pt_check_function_collation(), pt_check_recursive_expr_collation(), pt_coerce_node_collection_of_collection(), pt_eval_function_type_old(), and func_type::Node::set_return_type().
|
static |
Definition at line 22176 of file type_checking.c.
References pt_function_info::arg_list, assert, parser_node::data_type, pt_value_info::data_value, pt_value_info::db_value_is_initialized, F_MULTISET, F_SEQUENCE, F_SET, F_TABLE_MULTISET, F_TABLE_SEQUENCE, F_TABLE_SET, pt_statement_info::function, pt_function_info::function_type, parser_node::info, LANG_COERCIBLE_CODESET, LANG_IS_COERCIBLE_COLL, pt_select_info::list, parser_node::next, parser_node::node_type, NULL, pt_coerce_node_collation(), PT_FUNCTION, PT_IS_COLLECTION_TYPE, PT_SELECT, PT_VALUE, pt_value_to_db(), pt_query_info::q, pt_statement_info::query, pt_query_info::select, pt_data_value::set, parser_node::type_enum, and pt_statement_info::value.
Referenced by pt_coerce_node_collation().
|
static |
Definition at line 5230 of file type_checking.c.
References pt_query_info::all_distinct, pt_expr_info::arg1, expression_signature::arg1_type, pt_expr_info::arg2, expression_signature::arg2_type, pt_expr_info::arg3, expression_signature::arg3_type, assert, pt_data_type_info::collation_id, pt_statement_info::data_type, parser_node::data_type, pt_value_info::data_value, pt_data_type_info::dec_precision, error(), parser_context::error_msgs, EXCLUDE_HIDDEN_COLUMNS, pt_statement_info::expr, parser_node::info, LANG_SYS_CODESET, LANG_SYS_COLLATION, MSGCAT_SEMANTIC_NOT_SINGLE_COL, MSGCAT_SET_PARSER_SEMANTIC, parser_node::next, NO_ERROR, parser_node::node_type, NULL, pt_expr_info::op, parser_free_tree(), parser_new_node(), pt_data_type_info::precision, pt_coerce_expression_argument(), pt_coerce_value(), pt_common_type_op(), PT_DATA_TYPE, PT_DISTINCT, PT_ERRORm, PT_FUNCTION, pt_get_common_collection_type(), pt_get_equivalent_type(), pt_get_select_list(), pt_has_error, PT_IS_BIT_STRING_TYPE, PT_IS_CHAR_STRING_TYPE, PT_IS_COLLECTION_TYPE, PT_IS_DISCRETE_NUMBER_TYPE, pt_is_enumeration_special_comparison(), PT_IS_HOSTVAR, PT_IS_NUMERIC_TYPE, PT_IS_PARAMETERIZED_TYPE, PT_IS_QUERY_NODE_TYPE, PT_IS_STRING_TYPE, pt_length_of_select_list(), pt_preset_hostvar(), pt_try_remove_order_by(), PT_TYPE_BIT, PT_TYPE_CHAR, pt_type_enum_to_db(), PT_TYPE_ENUMERATION, PT_TYPE_LOGICAL, PT_TYPE_MAYBE, PT_TYPE_NCHAR, PT_TYPE_NONE, PT_TYPE_NULL, PT_TYPE_NUMERIC, PT_TYPE_OBJECT, PT_TYPE_SET, PT_TYPE_VARBIT, PT_TYPE_VARCHAR, PT_TYPE_VARNCHAR, PT_VALUE, pt_wrap_collection_with_cast_op(), pt_wrap_select_list_with_cast_op(), pt_statement_info::query, pt_data_value::set, SET_EXPECTED_DOMAIN, TP_BIGINT_PRECISION, tp_domain_resolve_default(), TP_FLOATING_PRECISION_VALUE, pt_arg_type::pt_arg_type_val::type, parser_node::type_enum, pt_data_type_info::units, pt_arg_type::val, and pt_statement_info::value.
Referenced by pt_apply_expressions_definition().
|
static |
Definition at line 12151 of file type_checking.c.
References parser_context::error_msgs, NO_ERROR, NULL, parser_free_tree(), pt_check_and_coerce_to_date(), pt_check_and_coerce_to_time(), pt_coerce_value(), pt_has_error, PT_IS_CHAR_STRING_TYPE, PT_TYPE_DATE, PT_TYPE_DATETIME, PT_TYPE_TIME, PT_TYPE_TIMESTAMP, and parser_node::type_enum.
Referenced by pt_get_common_datetime_type().
int pt_coerce_value | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | src, | ||
PT_NODE * | dest, | ||
PT_TYPE_ENUM | desired_type, | ||
PT_NODE * | data_type | ||
) |
Definition at line 20318 of file type_checking.c.
References pt_coerce_value_internal().
Referenced by do_alter_one_clause_with_template(), mq_set_types(), pt_attr_check_default_cs_coll(), pt_check_and_coerce_to_date(), pt_check_and_coerce_to_time(), pt_check_partition_values(), pt_coerce_3args(), pt_coerce_expr_arguments(), pt_coerce_partition_value_with_data_type(), pt_coerce_range_expr_arguments(), pt_coerce_str_to_time_date_utime_datetime(), pt_eval_expr_type(), and pt_get_common_datetime_type().
|
static |
Definition at line 20333 of file type_checking.c.
References pt_coerce_value_internal().
Referenced by pt_eval_expr_type().
int pt_coerce_value_for_default_value | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | src, | ||
PT_NODE * | dest, | ||
PT_TYPE_ENUM | desired_type, | ||
PT_NODE * | data_type, | ||
DB_DEFAULT_EXPR_TYPE | default_expr_type | ||
) |
Definition at line 20350 of file type_checking.c.
References assert, DB_DEFAULT_NONE, parser_node::node_type, NULL, pt_coerce_value_internal(), pt_is_explicit_coerce_allowed_for_default_value(), PT_VALUE, and parser_node::type_enum.
Referenced by check_default_on_update_clause(), do_alter_one_clause_with_template(), and get_att_default_from_def().
|
static |
Definition at line 20382 of file type_checking.c.
References parser_node::alias_print, assert, pt_data_type_info::collation_id, parser_node::column_number, pt_statement_info::data_type, parser_node::data_type, db_make_null(), pt_value_info::db_value_is_in_workspace, pt_data_type_info::dec_precision, DOMAIN_COMPATIBLE, DOMAIN_ERROR, DOMAIN_INCOMPATIBLE, DOMAIN_OVERFLOW, er_errid(), ER_GENERIC_ERROR, ER_IT_DATA_OVERFLOW, ER_IT_INCOMPATIBLE_DATATYPE, err, F_MULTISET, F_SEQUENCE, F_SET, F_TABLE_MULTISET, F_TABLE_SEQUENCE, F_TABLE_SET, parser_context::flag, pt_statement_info::function, pt_function_info::function_type, parser_node::info, intl_identifier_casecmp(), pt_value_info::is_collate_allowed, parser_node::line_number, MSGCAT_SEMANTIC_CANT_COERCE_TO, MSGCAT_SEMANTIC_OVERFLOW_COERCING_TO, MSGCAT_SET_PARSER_SEMANTIC, parser_node::next, NO_ERROR, parser_node::node_type, NULL, parser_clear_node(), parser_copy_tree_list(), parser_free_node(), pr_clear_value(), pt_data_type_info::precision, pt_value_info::print_charset, pt_value_info::print_collation, prm_get_bool_value(), PRM_ID_HOSTVAR_LATE_BINDING, pt_class_name(), pt_common_type(), pt_dbval_to_value(), PT_ERRORmf2, PT_FUNCTION, PT_HAS_COLLATION, PT_HOST_VAR, PT_IS_PARAMETERIZED_TYPE, PT_IS_STRING_TYPE, pt_node_data_type_to_db_domain(), pt_set_default_data_type(), pt_short_print(), pt_show_type_enum(), PT_TYPE_MULTISET, PT_TYPE_NA, PT_TYPE_NONE, PT_TYPE_NULL, PT_TYPE_NUMERIC, PT_TYPE_OBJECT, PT_TYPE_SEQUENCE, PT_TYPE_SET, PT_VALUE, pt_value_to_db(), pt_xasl_type_enum_to_domain(), parser_context::set_host_var, tp_domain_cache(), tp_value_cast(), parser_node::type_enum, and pt_statement_info::value.
Referenced by pt_coerce_value(), pt_coerce_value_explicit(), and pt_coerce_value_for_default_value().
int pt_common_collation | ( | PT_COLL_INFER * | arg1_coll_infer, |
PT_COLL_INFER * | arg2_coll_infer, | ||
PT_COLL_INFER * | arg3_coll_infer, | ||
const int | args_w_coll, | ||
bool | op_has_3_args, | ||
int * | common_coll, | ||
INTL_CODESET * | common_cs | ||
) |
Definition at line 22968 of file type_checking.c.
References assert, pt_coll_infer::can_force_cs, pt_coll_infer::codeset, pt_coll_infer::coerc_level, pt_coll_infer::coll_id, ER_FAILED, error(), INTL_CAN_COERCE_CS, MORE_COERCIBLE, NO_ERROR, and NULL.
Referenced by func_type::Node::check_arg_compat(), pt_apply_union_select_list_collation(), pt_check_expr_collation(), pt_check_function_collation(), and pt_eval_function_type_old().
PT_TYPE_ENUM pt_common_type | ( | PT_TYPE_ENUM | arg1_type, |
PT_TYPE_ENUM | arg2_type | ||
) |
Definition at line 10418 of file type_checking.c.
References COMPAT_MYSQL, prm_get_integer_value(), PRM_ID_COMPAT_MODE, PT_IS_NUMERIC_TYPE, PT_IS_STRING_TYPE, PT_TYPE_BIGINT, PT_TYPE_BIT, PT_TYPE_CHAR, 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_JSON, PT_TYPE_LOGICAL, PT_TYPE_MAYBE, PT_TYPE_MONETARY, PT_TYPE_MULTISET, PT_TYPE_NA, PT_TYPE_NCHAR, PT_TYPE_NONE, PT_TYPE_NULL, 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, and PT_TYPE_VARNCHAR.
Referenced by pt_coerce_3args(), pt_coerce_value_internal(), pt_combine_compatible_info(), pt_common_type_op(), pt_eval_expr_type(), pt_eval_type_pre(), pt_evaluate_db_value_expr(), pt_expr_get_return_type(), pt_get_common_arg_type_of_width_bucket(), pt_get_common_collection_type(), pt_get_common_datetime_type(), pt_get_common_type_for_union(), pt_get_select_list(), and pt_union_compatible().
|
static |
Definition at line 11144 of file type_checking.c.
References PT_COALESCE, pt_common_type(), PT_IFNULL, pt_is_comp_op(), PT_IS_DATE_TIME_TYPE, PT_IS_IN, PT_IS_NOT_IN, PT_IS_NUMERIC_TYPE, pt_is_op_hv_late_bind(), pt_is_operator_logical(), PT_IS_STRING_TYPE, PT_MINUS, PT_SUBSET, PT_SUBSETEQ, PT_SUPERSET, PT_SUPERSETEQ, PT_TIMES, PT_TYPE_DATETIME, PT_TYPE_INTEGER, PT_TYPE_JSON, PT_TYPE_LOGICAL, PT_TYPE_MAYBE, PT_TYPE_MULTISET, PT_TYPE_NONE, PT_TYPE_NULL, PT_TYPE_SEQUENCE, and PT_TYPE_VARCHAR.
Referenced by pt_coerce_range_expr_arguments(), pt_eval_expr_type(), and pt_infer_common_type().
int pt_comp_to_between_op | ( | PT_OP_TYPE | left, |
PT_OP_TYPE | right, | ||
PT_COMP_TO_BETWEEN_OP_CODE_TYPE | type, | ||
PT_OP_TYPE * | between | ||
) |
Definition at line 21242 of file type_checking.c.
References compare_between_operator::between, COMPARE_BETWEEN_OPERATOR_COUNT, i, PT_BETWEEN_EQ_NA, PT_EQ, PT_GE, PT_LE, and PT_RANGE_INTERSECTION.
Referenced by qo_apply_range_intersection_helper(), qo_merge_range_helper(), and qo_reduce_comp_pair_terms().
|
static |
Definition at line 20764 of file type_checking.c.
References pt_value_info::data_value, DB_BIGINT_MAX, DB_BIGINT_MIN, db_get_bigint(), db_get_double(), db_get_float(), db_get_int(), db_get_monetary(), DB_INT16_MAX, DB_INT16_MIN, DB_INT32_MAX, DB_INT32_MIN, DB_IS_NULL, db_locate_numeric, DB_VALUE_SCALE, pt_statement_info::expr, pt_data_value::i, parser_node::info, pt_expr_info::location, pt_value_info::location, NULL, numeric_coerce_num_to_double(), parser_new_node(), PT_EQ, PT_GE, PT_GT, PT_INTERNAL_ERROR, PT_IS_NOT_NULL, PT_IS_NULL, PT_LE, PT_LT, PT_TYPE_BIGINT, PT_TYPE_DOUBLE, PT_TYPE_FLOAT, PT_TYPE_INTEGER, PT_TYPE_LOGICAL, PT_TYPE_MONETARY, PT_TYPE_MULTISET, PT_TYPE_NULL, PT_TYPE_NUMERIC, PT_TYPE_SEQUENCE, PT_TYPE_SET, PT_TYPE_SMALLINT, PT_VALUE, pt_value_to_db(), parser_node::type_enum, and pt_statement_info::value.
Referenced by pt_fold_const_expr().
PT_OP_TYPE pt_converse_op | ( | PT_OP_TYPE | op | ) |
Definition at line 21042 of file type_checking.c.
References PT_EQ, PT_GE, PT_GT, PT_LE, PT_LT, and PT_NE.
Referenced by pt_to_range_key(), qo_analyze_term(), and qo_converse_sarg_terms().
|
static |
Definition at line 6632 of file type_checking.c.
References assert, db_error_string(), db_get_set(), error(), NULL, PT_ERRORc, pt_has_error, set_difference(), and set_make_collection().
Referenced by pt_evaluate_db_value_expr().
|
static |
Definition at line 8727 of file type_checking.c.
References parser_node::alias_print, pt_expr_info::arg1, pt_expr_info::arg2, pt_expr_info::arg3, pt_function_info::arg_list, assert, pt_expr_info::cast_type, lang_collation::codeset, pt_data_type_info::collation_id, parser_node::column_number, COMPAT_MYSQL, pt_statement_info::data_type, parser_node::data_type, pt_value_info::data_value, DATE_SPECIFIER, DATETIME_SPECIFIER, DATETIMETZ_SPECIFIER, db_check_time_date_format(), db_make_int(), DB_TYPE_STRING, DB_TYPE_UNKNOWN, DB_TYPE_VARCHAR, pt_value_info::db_value, pt_data_type_info::dec_precision, err, error(), parser_context::error_msgs, parser_node::expected_domain, pt_statement_info::expr, pt_statement_info::function, parser_node::info, lang_get_collation(), lang_get_lang_id_from_flag(), lang_set_flag_from_lang(), parser_node::line_number, pt_expr_info::location, pt_value_info::location, MSGCAT_SEMANTIC_CANT_EXTRACT_FROM, MSGCAT_SEMANTIC_COLLATE_NOT_ALLOWED, MSGCAT_SEMANTIC_OP_NOT_DEFINED_ON, MSGCAT_SEMANTIC_OP_NOT_DEFINED_ON_1, MSGCAT_SEMANTIC_OP_NOT_DEFINED_ON_3, MSGCAT_SEMANTIC_WANT_LOGICAL_CASE_COND, MSGCAT_SET_PARSER_SEMANTIC, parser_node::next, NO_ERROR, parser_node::node_type, NULL, pt_expr_info::op, parser_node::or_next, p, parser_copy_tree(), parser_copy_tree_list(), parser_free_node(), parser_free_tree(), parser_new_node(), pt_data_type_info::precision, prm_get_bool_value(), prm_get_integer_value(), prm_get_string_value(), PRM_ID_COMPAT_MODE, PRM_ID_INTL_NUMBER_LANG, PRM_ID_ORACLE_STYLE_EMPTY_STRING, PRM_ID_RETURN_NULL_ON_FUNCTION_ERRORS, pt_apply_expressions_definition(), PT_ASSIGN, PT_BETWEEN, PT_BETWEEN_AND, PT_BETWEEN_GE_LE, PT_BETWEEN_GE_LT, PT_BETWEEN_GT_LE, PT_BETWEEN_GT_LT, PT_BIT_COUNT, PT_BIT_NOT, PT_CASE, PT_CAST, pt_check_and_coerce_to_date(), pt_check_and_coerce_to_time(), pt_check_cast_op(), pt_check_expr_collation(), pt_chop_to_one_select_item(), PT_COALESCE, pt_coerce_expression_argument(), pt_coerce_value(), pt_coerce_value_explicit(), pt_common_type(), pt_common_type_op(), PT_CONNECT_BY_ROOT, PT_DATA_TYPE, PT_DATE_ADD, PT_DATE_SUB, PT_DAY, pt_db_to_type_enum(), PT_DECODE, PT_DOES_FUNCTION_HAVE_DIFFERENT_ARGS, pt_domain_to_data_type(), PT_DRAND, PT_DRANDOM, PT_EQ, PT_ERRORm, PT_ERRORmf2, PT_ERRORmf3, PT_ERRORmf4, pt_eval_function_type(), PT_EVALUATE_VARIABLE, PT_EXISTS, PT_EXPR, PT_EXPR_INFO_CAST_COLL_MODIFIER, PT_EXPR_INFO_CAST_NOFAIL, PT_EXPR_INFO_IS_FLAGED, PT_EXPR_INFO_SET_FLAG, PT_EXTRACT, PT_FIELD, pt_fix_enumeration_comparison(), PT_FROM_TZ, PT_FUNCTION, PT_FUNCTION_HOLDER, PT_GET_COLLATION_MODIFIER, PT_HAS_COLLATION, PT_HAS_DATE_PART, pt_has_error, PT_HAS_TIME_PART, PT_HOST_VAR, PT_HOUR, PT_IF, pt_is_able_to_determine_return_type(), pt_is_between_range_op(), PT_IS_CHAR_STRING_TYPE, PT_IS_COLLECTION_TYPE, PT_IS_COMPLEX_TYPE, PT_IS_DATE_TIME_TYPE, PT_IS_DISCRETE_NUMBER_TYPE, pt_is_enumeration_special_comparison(), PT_IS_FUNCTION, PT_IS_HOSTVAR, PT_IS_IN, PT_IS_INPUT_HOSTVAR, PT_IS_NOT_IN, PT_IS_NULL_NODE, PT_IS_NUMERIC_TYPE, PT_IS_PARAMETERIZED_TYPE, pt_is_query, pt_is_set_type, PT_IS_STRING_TYPE, pt_is_symmetric_op(), pt_is_symmetric_type(), PT_IS_VALUE_NODE, PT_LIKE, PT_LIKE_ESCAPE, PT_LIKE_LOWER_BOUND, PT_LIKE_UPPER_BOUND, pt_list_has_logical_nodes(), pt_make_prim_data_type(), PT_MILLISECOND, PT_MINUS, PT_MINUTE, PT_MONTH, PT_NAME, PT_NE, PT_NEW_TIME, pt_node_to_db_domain(), PT_NOT_BETWEEN, PT_NOT_LIKE, PT_OID_OF_DUPLICATE_KEY, PT_PATH_EXPR_SET, PT_PLUS, pt_preset_hostvar(), PT_PRIOR, pt_propagate_types(), PT_QPRIOR, PT_QUARTER, PT_RAND, PT_RANDOM, PT_RANGE, PT_SECOND, pt_show_binopcode(), pt_show_misc_type(), pt_show_type_enum(), PT_STR_TO_DATE, PT_TIMEDIFF, PT_TO_CHAR, pt_to_variable_size_type(), PT_TYPE_BIGINT, PT_TYPE_CHAR, PT_TYPE_DATE, PT_TYPE_DATETIME, PT_TYPE_DATETIMELTZ, PT_TYPE_DATETIMETZ, pt_type_enum_to_db(), PT_TYPE_ENUMERATION, PT_TYPE_INTEGER, PT_TYPE_LOGICAL, PT_TYPE_MAYBE, PT_TYPE_NA, PT_TYPE_NCHAR, PT_TYPE_NONE, PT_TYPE_NULL, PT_TYPE_OBJECT, PT_TYPE_TIME, PT_TYPE_TIMESTAMP, PT_TYPE_TIMESTAMPLTZ, PT_TYPE_TIMESTAMPTZ, PT_TYPE_VARCHAR, PT_TYPE_VARNCHAR, PT_UNARY_MINUS, pt_upd_domain_info(), PT_VALUE, pt_value_to_db(), PT_WEEK, pt_wrap_expr_w_exp_dom_cast(), pt_wrap_with_cast_op(), pt_xasl_type_enum_to_domain(), PT_YEAR, PT_YEAR_MONTH, pt_expr_info::qualifier, pt_expr_info::recursive_type, pt_data_value::set, SET_EXPECTED_DOMAIN, TIME_SPECIFIER, tp_domain_cache(), tp_domain_resolve_default(), TP_DOMAIN_TYPE, TP_FLOATING_PRECISION_VALUE, TP_IS_NUMERIC_TYPE, TP_IS_STRING_TYPE, tp_more_general_type(), TP_TYPE_HAS_COLLATION, parser_node::type_enum, pt_data_type_info::units, and pt_statement_info::value.
Referenced by pt_eval_recursive_expr_type(), and pt_eval_type().
|
static |
Definition at line 12426 of file type_checking.c.
References F_BENCHMARK, 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_REGEXP_COUNT, F_REGEXP_INSTR, F_REGEXP_LIKE, F_REGEXP_REPLACE, F_REGEXP_SUBSTR, pt_statement_info::function, pt_function_info::function_type, parser_node::info, pt_eval_function_type_new(), pt_eval_function_type_old(), PT_JSON_ARRAYAGG, and PT_JSON_OBJECTAGG.
Referenced by pt_eval_expr_type(), and pt_eval_type().
|
static |
Definition at line 12478 of file type_checking.c.
References pt_function_info::arg_list, assert, F_JSON_ARRAY, F_JSON_OBJECT, F_MIDXKEY, F_TOP_TABLE_FUNC, F_VID, fcode_get_lowercase_name(), pt_statement_info::function, pt_function_info::function_type, parser_node::info, MSGCAT_SEMANTIC_FUNC_NOT_DEFINED_ON, MSGCAT_SEMANTIC_FUNCTION_NO_ARGS, MSGCAT_SET_PARSER_SEMANTIC, parser_node::next, NULL, pt_cat_error, PT_COUNT_STAR, PT_CUME_DIST, PT_DENSE_RANK, pt_frob_error(), PT_GROUPBY_NUM, pt_list_has_logical_nodes(), PT_PERCENT_RANK, PT_RANK, PT_ROW_NUMBER, pt_short_print(), PT_TOP_AGG_FUNC, PT_TYPE_INTEGER, PT_TYPE_LOGICAL, PT_TYPE_NONE, pt_wrap_with_cast_op(), func_type::Node::type_checking(), and parser_node::type_enum.
Referenced by pt_eval_function_type().
|
static |
Definition at line 12551 of file type_checking.c.
References pt_function_info::arg_list, assert, pt_coll_infer::can_force_cs, pt_coll_infer::codeset, pt_coll_infer::coerc_level, pt_coll_infer::coll_id, pt_data_type_info::collation_flag, pt_statement_info::data_type, parser_node::data_type, DB_MAX_NUMERIC_PRECISION, pt_data_type_info::dec_precision, F_ELT, F_INSERT_SUBSTRING, F_MULTISET, F_SEQUENCE, F_SET, F_TABLE_MULTISET, F_TABLE_SEQUENCE, F_TABLE_SET, fcode_get_lowercase_name(), pt_statement_info::function, pt_function_info::function_type, i, if(), parser_node::info, pt_function_info::is_type_checked, LANG_SYS_CODESET, LANG_SYS_COLLATION, MSGCAT_SEMANTIC_AGG_FUN_WANT_1_ARG, MSGCAT_SEMANTIC_COLLATION_OP_ERROR, MSGCAT_SEMANTIC_FUNC_NOT_DEFINED_ON, MSGCAT_SEMANTIC_FUNC_NOT_DEFINED_ON_2, MSGCAT_SEMANTIC_FUNC_NOT_DEFINED_ON_3, MSGCAT_SEMANTIC_FUNC_NOT_DEFINED_ON_4, MSGCAT_SEMANTIC_FUNC_NOT_DEFINED_ON_INDEX, MSGCAT_SEMANTIC_FUNCTION_NO_ARGS, MSGCAT_SEMANTIC_INCOMPATIBLE_OPDS, MSGCAT_SEMANTIC_OP_NOT_DEFINED_ON, MSGCAT_SET_PARSER_SEMANTIC, parser_node::next, NO_ERROR, NULL, NUM_F_INSERT_SUBSTRING_ARGS, parser_copy_tree_list(), pt_data_type_info::precision, pt_add_type_to_set(), PT_AGG_BIT_AND, PT_AGG_BIT_OR, PT_AGG_BIT_XOR, PT_AVG, pt_character_length_for_node(), pt_check_function_collation(), pt_coerce_node_collation(), PT_COLL_WRAP_TYPE_FOR_MAYBE, PT_COLLATION_NOT_APPLICABLE, pt_common_collation(), PT_COUNT, PT_COUNT_STAR, PT_CUME_DIST, PT_DENSE_RANK, PT_ERRORmf, PT_ERRORmf2, PT_ERRORmf3, PT_ERRORmf4, PT_ERRORmf5, PT_FIRST_VALUE, pt_get_collation_info(), pt_get_select_list(), PT_GROUP_CONCAT, PT_GROUPBY_NUM, PT_HAS_COLLATION, pt_is_aggregate_function(), PT_IS_CAST_MAYBE, PT_IS_CHAR_STRING_TYPE, PT_IS_DATE_TIME_TYPE, PT_IS_DISCRETE_NUMBER_TYPE, PT_IS_NUMERIC_TYPE, pt_is_set_type, PT_IS_STRING_TYPE, PT_LAG, PT_LAST_VALUE, PT_LEAD, pt_list_has_logical_nodes(), pt_make_prim_data_type(), PT_MAX, PT_MEDIAN, PT_MIN, pt_node_list_to_array(), PT_NTH_VALUE, PT_NTILE, PT_PERCENT_RANK, PT_PERCENTILE_CONT, PT_PERCENTILE_DISC, PT_RANK, PT_ROW_NUMBER, pt_short_print(), pt_show_type_enum(), PT_STDDEV, PT_STDDEV_POP, PT_STDDEV_SAMP, PT_SUM, PT_TYPE_BIGINT, PT_TYPE_BIT, PT_TYPE_CHAR, PT_TYPE_DOUBLE, PT_TYPE_ENUMERATION, PT_TYPE_INTEGER, PT_TYPE_LOGICAL, PT_TYPE_MAX, PT_TYPE_MAYBE, PT_TYPE_MIN, PT_TYPE_MULTISET, PT_TYPE_NA, PT_TYPE_NCHAR, PT_TYPE_NONE, PT_TYPE_NULL, PT_TYPE_NUMERIC, PT_TYPE_SEQUENCE, PT_TYPE_SET, PT_TYPE_VARBIT, PT_TYPE_VARCHAR, PT_TYPE_VARNCHAR, PT_VAR_POP, PT_VAR_SAMP, PT_VARIANCE, pt_wrap_with_cast_op(), TP_DOMAIN_COLL_LEAVE, TP_FLOATING_PRECISION_VALUE, and parser_node::type_enum.
Referenced by pt_eval_function_type().
|
static |
Definition at line 13589 of file type_checking.c.
References pt_statement_info::data_type, parser_node::data_type, pt_value_info::data_value, db_get_class_method(), db_get_method(), db_method_return_domain(), pt_name_info::db_object, pt_data_type_info::entity, er_clear(), er_errid(), ER_OBJ_INVALID_METHOD, parser_node::info, pt_statement_info::method_call, pt_method_call_info::method_name, pt_statement_info::name, parser_node::node_type, NULL, pt_method_call_info::on_call_target, pt_data_value::op, pt_name_info::original, pt_db_to_type_enum(), PT_NAME, PT_VALUE, TP_DOMAIN_TYPE, parser_node::type_enum, and pt_statement_info::value.
Referenced by pt_eval_type().
|
static |
Definition at line 10341 of file type_checking.c.
References pt_get_opt_lvl_info::args, pt_statement_info::get_opt_lvl, parser_node::info, MSGCAT_SEMANTIC_WANT_TYPE, MSGCAT_SET_PARSER_SEMANTIC, parser_node::next, parser_node::node_type, NULL, pt_get_opt_lvl_info::option, pt_set_opt_lvl_info::option, PT_ERRORmf, PT_GET_OPT_LVL, PT_IS_CHAR_STRING_TYPE, PT_OPT_COST, PT_OPT_LVL, PT_SET_OPT_LVL, pt_show_type_enum(), PT_TYPE_CHAR, PT_TYPE_INTEGER, PT_TYPE_NONE, PT_TYPE_VARCHAR, pt_statement_info::set_opt_lvl, parser_node::type_enum, and pt_set_opt_lvl_info::val.
Referenced by pt_eval_type().
|
static |
Definition at line 7245 of file type_checking.c.
References pt_expr_info::arg1, pt_expr_info::arg2, pt_statement_info::expr, parser_node::info, NULL, pt_expr_info::op, pt_eval_expr_type(), PT_IS_LEFT_RECURSIVE_EXPRESSION, and PT_IS_RECURSIVE_EXPRESSION.
Referenced by pt_eval_type_pre().
|
static |
Definition at line 7754 of file type_checking.c.
References pt_select_info::after_cb_filter, pt_union_info::arg1, pt_union_info::arg2, assert, pt_insert_info::attr_list, pt_merge_info::attr_list, pt_select_info::connect_by, pt_statement_info::cte, pt_statement_info::data_type, parser_node::data_type, pt_merge_info::del_search_cond, pt_statement_info::delete_, pt_statement_info::do_, semantic_chk_info::donot_fold, pt_data_type_info::entity, parser_node::expected_domain, pt_do_info::expr, parser_context::flag, pt_spec_info::flat_entity_list, pt_select_info::from, pt_select_info::having, pt_statement_info::host_var, pt_statement_info::index, parser_node::info, pt_merge_info::insert, pt_statement_info::insert, pt_query_info::is_subquery, pt_node_list_info::list, pt_select_info::list, pt_statement_info::merge, parser_node::next, pt_statement_info::node_list, parser_node::node_type, pt_cte_info::non_recursive_part, NULL, pt_spec_info::on_cond, pt_query_info::orderby_for, parser_copy_tree(), parser_copy_tree_list(), parser_free_tree(), parser_new_node(), pt_check_type_compatibility_of_values_query(), pt_check_union_compatibility(), pt_check_union_is_foldable(), pt_check_union_type_compatibility_of_values_query(), PT_CREATE_INDEX, PT_CTE, PT_DATA_TYPE, PT_DELETE, PT_DIFFERENCE, PT_DO, PT_DOT_, pt_eval_expr_type(), pt_eval_function_type(), pt_eval_method_call_type(), pt_eval_opt_type(), PT_EXPR, pt_false_where(), pt_fold_union(), PT_FUNCTION, PT_GET_OPT_LVL, pt_has_error, PT_HOST_IN, PT_HOST_VAR, PT_INSERT, PT_INTERNAL_ERROR, PT_INTERSECTION, PT_IS_CTE_NON_REC_SUBQUERY, PT_IS_CTE_REC_SUBQUERY, PT_IS_HOSTVAR, PT_IS_SUBQUERY, PT_IS_UNION_SUBQUERY, PT_IS_VALUE_QUERY, PT_MERGE, PT_METHOD_CALL, PT_NAME, pt_node_to_db_domain(), pt_preset_hostvar(), PT_SELECT, PT_SET_OPT_LVL, PT_SPEC, pt_to_false_subquery(), PT_TYPE_MAYBE, PT_TYPE_NONE, PT_TYPE_OBJECT, PT_UNION, PT_UPDATE, PT_VALUE, pt_where_type(), pt_where_type_keep_true(), pt_query_info::q, pt_statement_info::query, pt_cte_info::recursive_part, pt_delete_info::search_cond, pt_update_info::search_cond, pt_merge_info::search_cond, pt_query_info::select, SET_EXPECTED_DOMAIN, parser_context::set_host_var, pt_insert_info::spec, pt_statement_info::spec, pt_select_info::start_with, STATEMENT_SET_FOLD_NOTHING, tp_domain_cache(), parser_node::type_enum, pt_query_info::union_, pt_merge_info::update, pt_statement_info::update, pt_insert_info::value_clauses, pt_merge_info::value_clauses, pt_host_var_info::var_type, pt_index_info::where, and pt_select_info::where.
Referenced by pt_semantic_type().
|
static |
Definition at line 7287 of file type_checking.c.
References pt_query_info::all_distinct, pt_expr_info::arg1, pt_union_info::arg1, pt_expr_info::arg2, pt_union_info::arg2, pt_expr_info::arg3, pt_statement_info::delete_, pt_spec_info::derived_table, semantic_chk_info::donot_fold, pt_sort_spec_info::expr, pt_statement_info::expr, pt_query_info::flag, pt_select_info::group_by, pt_query_info::has_outer_spec, pt_select_info::having, parser_node::info, pt_statement_info::insert, pt_query_info::is_insert_select, pt_query_info::is_sort_spec, pt_spec_info::join_type, pt_delete_info::limit, pt_query_info::limit, pt_update_info::limit, pt_node_list_info::list, pt_node_list_info::list_type, MSGCAT_SEMANTIC_OUT_OF_MEMORY, MSGCAT_SET_PARSER_SEMANTIC, parser_node::next, NO_ERROR, pt_statement_info::node_list, parser_node::node_type, NULL, pt_expr_info::op, pt_query_info::order_by, pt_update_info::order_by, pt_query_info::orderby_for, pt_update_info::orderby_for, pt_expr_info::paren_type, PT_CASE, pt_check_recursive_expr_collation(), pt_common_type(), PT_CONTINUE_WALK, PT_DECODE, PT_DELETE, PT_DIFFERENCE, PT_DISTINCT, PT_ERRORm, pt_eval_recursive_expr_type(), PT_EXPR, pt_has_error, PT_INSERT, PT_INST_NUM, PT_INTERSECTION, PT_IS_LEFT_RECURSIVE_EXPRESSION, pt_is_query, PT_IS_QUERY, PT_IS_RECURSIVE_EXPRESSION, PT_IS_SUBQUERY, PT_JOIN_LEFT_OUTER, PT_JOIN_RIGHT_OUTER, PT_LAST_OPCODE, pt_limit_to_numbering_expr(), PT_LIST_WALK, PT_ORDERBY_NUM, PT_SELECT, pt_semantic_type(), PT_SORT_SPEC, PT_SPEC, PT_TYPE_ENUMERATION, PT_TYPE_NONE, PT_UNION, PT_UPDATE, pt_query_info::q, pt_statement_info::query, pt_expr_info::recursive_type, pt_delete_info::rewrite_limit, pt_query_info::rewrite_limit, pt_update_info::rewrite_limit, pt_delete_info::search_cond, pt_update_info::search_cond, pt_query_info::select, pt_statement_info::sort_spec, pt_statement_info::spec, parser_node::type_enum, pt_query_info::union_, pt_statement_info::update, pt_insert_info::value_clauses, and pt_select_info::where.
Referenced by pt_semantic_type().
int pt_evaluate_db_value_expr | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | expr, | ||
PT_OP_TYPE | op, | ||
DB_VALUE * | arg1, | ||
DB_VALUE * | arg2, | ||
DB_VALUE * | arg3, | ||
DB_VALUE * | result, | ||
TP_DOMAIN * | domain, | ||
PT_NODE * | o1, | ||
PT_NODE * | o2, | ||
PT_NODE * | o3, | ||
PT_MISC_TYPE | qualifier | ||
) |
Definition at line 13684 of file type_checking.c.
References db_monetary::amount, pt_expr_info::arg1, pt_expr_info::arg2, ARG_FILE_LINE, assert, ASSERT_ERROR, au_user_name(), cmp, COMPAT_MYSQL, csession_get_last_insert_id(), d1, DATA_STATUS_OK, parser_node::data_type, pt_value_info::data_value, db_datetime::date, db_datetimetz::datetime, db_abs_dbval(), db_acos_dbval(), db_add_days_to_year(), db_add_int_to_datetime(), db_add_months(), db_add_time(), db_ascii(), db_asin_dbval(), db_atan2_dbval(), db_atan_dbval(), DB_BIGINT_MIN, db_bigint_to_binary_string(), db_bit_count_dbval(), db_bit_to_blob(), db_blob_from_file(), db_blob_length(), db_blob_to_bit(), db_ceil_dbval(), db_char_to_blob(), db_char_to_clob(), db_clob_from_file(), db_clob_length(), db_clob_to_char(), db_conv(), db_conv_tz(), db_convert_sec_to_time(), db_convert_time_to_sec(), db_convert_to_time(), db_cos_dbval(), db_cot_dbval(), db_crc32_dbval(), DB_CURRENCY_DEFAULT, db_date_add_interval_days(), db_date_add_interval_expr(), db_date_dbval(), db_date_decode(), db_date_diff(), db_date_format(), DB_DATE_MAX, DB_DATE_MIN, db_date_sub_interval_days(), db_date_sub_interval_expr(), DB_DEFAULT_PRECISION, DB_DEFAULT_SCALE, db_degrees_dbval(), DB_ENUM_OVERFLOW_VAL, DB_EQ, db_exp_dbval(), db_find_string_in_in_set(), db_floor_dbval(), db_format(), db_from_tz(), db_from_unixtime(), db_get_bigint(), db_get_bit(), db_get_cs_coll_info(), db_get_database_name(), db_get_database_version(), db_get_date(), db_get_date_dayofyear(), db_get_date_from_days(), db_get_date_item(), db_get_date_quarter(), db_get_date_totaldays(), db_get_date_week(), db_get_date_weekday(), db_get_datetime(), db_get_datetimetz(), db_get_double(), db_get_enum_short(), db_get_float(), db_get_int(), db_get_monetary(), db_get_numeric(), db_get_row_count(), db_get_row_count_cache(), db_get_schema_def_dbval(), db_get_set(), db_get_short(), db_get_string(), db_get_string_codeset(), db_get_string_collation(), db_get_string_length(), db_get_string_size(), db_get_time(), db_get_time_item(), db_get_timestamp(), db_get_timestamptz(), db_get_user_and_host_name(), db_get_variable(), DB_GT, db_hex(), db_inet_aton(), db_inet_ntoa(), DB_INT16_MIN, DB_INT32_MIN, DB_IS_NULL, db_last_day(), db_least_or_greatest(), db_like_bound(), db_log_dbval(), db_log_generic_dbval(), DB_LT, db_make_bigint(), db_make_char(), db_make_date(), db_make_datetime(), db_make_datetimeltz(), db_make_datetimetz(), db_make_double(), db_make_float(), db_make_int(), db_make_monetary(), db_make_nchar(), db_make_null(), db_make_numeric(), db_make_short(), db_make_string(), db_make_string_copy(), db_make_time(), db_make_timestamp(), db_make_timestampltz(), db_make_timestamptz(), db_mod_dbval(), db_months_between(), DB_NE, db_new_time(), db_power_dbval(), db_private_free, db_radians_dbval(), db_round_dbval(), DB_ROW_COUNT_NOT_SET, db_set_compare(), db_set_size(), db_sign_dbval(), db_sin_dbval(), db_sleep(), db_sqrt_dbval(), db_str_to_date(), db_string_aes_decrypt(), db_string_aes_encrypt(), db_string_bit_length(), db_string_char_length(), db_string_chr(), db_string_compare(), db_string_concatenate(), db_string_extract_dbval(), db_string_free(), db_string_from_base64(), db_string_index_prefix(), db_string_instr(), db_string_like(), db_string_lower(), db_string_md5(), db_string_pad(), db_string_position(), db_string_repeat(), db_string_replace(), db_string_reverse(), db_string_rlike(), db_string_sha_one(), db_string_sha_two(), db_string_space(), db_string_substring(), db_string_substring_index(), db_string_to_base64(), db_string_translate(), db_string_trim(), db_string_upper(), DB_SUBSET, db_subtract_int_from_datetime(), DB_SUPERSET, db_sys_timezone(), db_tan_dbval(), db_time_dbval(), db_time_decode(), db_time_diff(), db_time_encode(), db_time_format(), db_timestamp(), db_timestamp_encode_ses(), db_timestamp_encode_sys(), db_to_char(), db_to_date(), db_to_datetime(), db_to_number(), db_to_time(), db_to_timestamp(), db_trunc_dbval(), DB_TYPE_BIGINT, DB_TYPE_BIT, DB_TYPE_CHAR, DB_TYPE_DATE, DB_TYPE_DATETIME, DB_TYPE_DATETIMELTZ, DB_TYPE_DATETIMETZ, DB_TYPE_DOUBLE, DB_TYPE_FLOAT, DB_TYPE_INTEGER, DB_TYPE_MONETARY, DB_TYPE_MULTISET, DB_TYPE_NCHAR, DB_TYPE_NULL, DB_TYPE_NUMERIC, DB_TYPE_SEQUENCE, DB_TYPE_SET, DB_TYPE_SHORT, DB_TYPE_SMALLINT, DB_TYPE_TIME, DB_TYPE_TIMESTAMP, DB_TYPE_TIMESTAMPLTZ, DB_TYPE_TIMESTAMPTZ, DB_TYPE_VARBIT, DB_TYPE_VARCHAR, DB_TYPE_VARIABLE, DB_TYPE_VARNCHAR, db_typeof_dbval(), db_tz_offset(), db_unix_timestamp(), DB_UNK, db_update_row_count_cache(), db_value_clone(), db_value_compare(), db_value_domain_init(), DB_VALUE_DOMAIN_TYPE, DB_VALUE_PRECISION, db_value_put_encoded_date(), db_value_put_encoded_time(), DB_VALUE_SCALE, db_value_to_enumeration_value(), DB_VALUE_TYPE, db_width_bucket(), db_value::domain, DOMAIN_COMPATIBLE, parser_context::drand, ER_ATTEMPT_TO_USE_ZERODATE, ER_AU_SELECT_FAILURE, er_clear(), er_errid(), ER_ERROR_SEVERITY, ER_IT_DATA_OVERFLOW, er_msg(), ER_OBJ_NOT_A_CLASS, ER_QSTR_INVALID_DATA_TYPE, ER_REGEX_COMPILE_ERROR, ER_REGEX_EXEC_ERROR, er_set(), err, error(), pt_statement_info::expr, db_domain_info::general_info, i, pt_data_value::i, pr_type::id, parser_node::info, db_domain_info::general_info::is_null, julian_encode(), LANG_SYS_CODESET, LANG_SYS_COLLATION, LEADING, parser_context::local_transaction_id, parser_context::lrand, MILLISECONDS_OF_ONE_DAY, MSGCAT_RUNTIME_IS_NOT_AUTHORIZED_ON, MSGCAT_SEMANTIC_CANT_COERCE_TO, MSGCAT_SEMANTIC_DATA_OVERFLOW_ON, MSGCAT_SEMANTIC_DATE_UNDERFLOW, MSGCAT_SEMANTIC_IS_NOT_A, MSGCAT_SEMANTIC_TIME_UNDERFLOW, MSGCAT_SEMANTIC_ZERO_DIVIDE, MSGCAT_SET_PARSER_RUNTIME, MSGCAT_SET_PARSER_SEMANTIC, db_value::need_clear, parser_node::next, NO_ERROR, parser_node::node_type, NULL, numeric_db_value_add(), numeric_db_value_div(), numeric_db_value_is_zero(), numeric_db_value_mul(), numeric_db_value_negate(), numeric_db_value_sub(), obt_Last_insert_id_generated, pt_expr_info::op, OR_CHECK_ADD_OVERFLOW, OR_CHECK_BIGINT_DIV_OVERFLOW, OR_CHECK_DOUBLE_OVERFLOW, OR_CHECK_FLOAT_OVERFLOW, OR_CHECK_INT_DIV_OVERFLOW, OR_CHECK_INT_OVERFLOW, OR_CHECK_MULT_OVERFLOW, OR_CHECK_SHORT_DIV_OVERFLOW, OR_CHECK_SUB_UNDERFLOW, OR_CHECK_UNS_ADD_OVERFLOW, OR_CHECK_UNS_SUB_UNDERFLOW, parser_print_tree(), pr_clear_value(), pr_clone_value(), pr_data_writeval_disk_size(), prm_get_bool_value(), prm_get_integer_value(), PRM_ID_COMPAT_MODE, PRM_ID_NO_BACKSLASH_ESCAPES, PRM_ID_ORACLE_STYLE_EMPTY_STRING, PRM_ID_PLUS_AS_CONCAT, PRM_ID_RETURN_NULL_ON_FUNCTION_ERRORS, PT_ABS, PT_ACOS, PT_ADD_MONTHS, PT_ADDDATE, PT_ADDTIME, PT_AES_DECRYPT, PT_AES_ENCRYPT, PT_AND, PT_ASCII, PT_ASIN, PT_ASSIGN, PT_ATAN, PT_ATAN2, 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_TO_BLOB, PT_BIT_XOR, PT_BITSHIFT_LEFT, PT_BITSHIFT_RIGHT, PT_BLOB_FROM_FILE, PT_BLOB_LENGTH, PT_BLOB_TO_BIT, PT_CASE, PT_CAST, PT_CEIL, PT_CHAR_LENGTH, PT_CHAR_TO_BLOB, PT_CHAR_TO_CLOB, PT_CHARSET, PT_CHR, PT_CLASS, PT_CLOB_FROM_FILE, PT_CLOB_LENGTH, PT_CLOB_TO_CHAR, PT_COALESCE, PT_COERCIBILITY, PT_COLLATION, pt_common_type(), PT_CONCAT, PT_CONCAT_WS, PT_CONNECT_BY_ROOT, PT_CONV, PT_CONV_TZ, PT_COS, PT_COT, PT_CRC32, PT_CURRENT_DATE, PT_CURRENT_DATETIME, PT_CURRENT_TIME, PT_CURRENT_TIMESTAMP, PT_CURRENT_USER, pt_data_type_to_db_domain(), PT_DATABASE, PT_DATE_ADD, PT_DATE_FORMAT, PT_DATE_SUB, PT_DATEDIFF, PT_DATEF, PT_DAYF, PT_DAYOFMONTH, PT_DAYOFWEEK, PT_DAYOFYEAR, pt_db_to_type_enum(), PT_DECODE, PT_DEGREES, pt_difference_sets(), PT_DISK_SIZE, PT_DIV, PT_DIVIDE, PT_DRAND, PT_DRANDOM, PT_EQ, PT_EQ_ALL, PT_EQ_SOME, PT_EQ_TORDER, PT_ERRORc, PT_ERRORm, PT_ERRORmf, PT_ERRORmf2, PT_EVALUATE_VARIABLE, PT_EXISTS, PT_EXP, PT_EXPR, PT_EXPR_INFO_CAST_NOFAIL, PT_EXPR_INFO_IS_FLAGED, PT_EXTRACT, PT_FIELD, PT_FINDINSET, PT_FLOOR, PT_FORMAT, PT_FROM_BASE64, PT_FROM_TZ, PT_FROM_UNIXTIME, PT_FROMDAYS, PT_GE, PT_GE_ALL, PT_GE_SOME, PT_GREATEST, PT_GT, PT_GT_ALL, PT_GT_SOME, PT_HEX, PT_HOURF, PT_IF, PT_IFNULL, PT_INDEX_CARDINALITY, PT_INDEX_PREFIX, PT_INET_ATON, PT_INET_NTOA, PT_INSTR, PT_IS, PT_IS_CHAR_STRING_TYPE, PT_IS_DATE_TIME_TYPE, PT_IS_IN, PT_IS_NOT, PT_IS_NOT_IN, PT_IS_NOT_NULL, PT_IS_NULL, PT_IS_NUMERIC_TYPE, pt_is_op_hv_late_bind(), PT_IS_STRING_TYPE, PT_ISNULL, PT_LAST_DAY, PT_LAST_INSERT_ID, 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_LIST_DBS, PT_LN, PT_LOCAL_TRANSACTION_ID, 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_MD5, PT_MID, PT_MINUS, PT_MINUTEF, pt_misc_to_qp_misc_operand(), PT_MOD, PT_MODULUS, PT_MONTHF, PT_MONTHS_BETWEEN, PT_NE, PT_NE_ALL, PT_NE_SOME, PT_NEW_TIME, PT_NOT, PT_NOT_BETWEEN, PT_NOT_LIKE, PT_NOT_RLIKE, PT_NOT_RLIKE_BINARY, PT_NULLIF, PT_NULLSAFE_EQ, PT_NVL, PT_NVL2, PT_OCTET_LENGTH, PT_OR, PT_PI, PT_PLUS, PT_POSITION, PT_POWER, PT_PRIOR, pt_product_sets(), PT_QPRIOR, PT_QUARTERF, PT_RADIANS, PT_RAND, PT_RANDOM, PT_RANGE, PT_REPEAT, PT_REPLACE, PT_REVERSE, PT_RIGHT, PT_RLIKE, PT_RLIKE_BINARY, PT_ROUND, PT_ROW_COUNT, PT_RPAD, PT_RTRIM, PT_SCHEMA, PT_SCHEMA_DEF, PT_SECONDF, PT_SECTOTIME, PT_SETEQ, PT_SETNEQ, PT_SHA_ONE, PT_SHA_TWO, pt_short_print(), pt_show_misc_type(), pt_show_type_enum(), PT_SIGN, PT_SIN, PT_SLEEP, PT_SPACE, PT_SQRT, PT_STR_TO_DATE, PT_STRCAT, PT_STRCMP, PT_SUBDATE, PT_SUBSET, PT_SUBSETEQ, PT_SUBSTRING, PT_SUBSTRING_INDEX, PT_SUPERSET, PT_SUPERSETEQ, PT_SYS_CONNECT_BY_PATH, PT_SYS_DATE, PT_SYS_DATETIME, PT_SYS_GUID, 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_ENUMERATION_VALUE, PT_TO_NUMBER, PT_TO_TIME, PT_TO_TIMESTAMP, PT_TO_TIMESTAMP_TZ, PT_TODAYS, PT_TRANSLATE, PT_TRIM, PT_TRUNC, PT_TYPE_DOUBLE, pt_type_enum_to_db(), PT_TYPE_INTEGER, PT_TYPE_MULTISET, PT_TYPE_NA, PT_TYPE_NULL, PT_TYPE_SEQUENCE, PT_TYPE_SET, PT_TYPEOF, PT_TZ_OFFSET, PT_UNARY_MINUS, pt_union_sets(), PT_UNIX_TIMESTAMP, PT_UPPER, PT_USER, PT_UTC_DATE, PT_UTC_TIME, PT_UTC_TIMESTAMP, PT_VALUE, pt_value_to_db(), PT_VERSION, PT_WEEKDAY, PT_WEEKF, PT_WIDTH_BUCKET, PT_XOR, PT_YEARF, QSTR_IS_BIT, pt_expr_info::qualifier, SECONDS_OF_ONE_DAY, set_issome(), strlen, SUBSTRING, parser_context::sys_datetime, parser_context::sys_epochtime, db_datetime::time, db_timestamptz::timestamp, tp_domain_cache(), tp_domain_resolve_default(), tp_domain_resolve_value(), tp_domain_status_er_set(), TP_DOMAIN_TYPE, tp_infer_common_domain(), tp_Integer_domain, TP_IS_DATE_OR_TIME_TYPE, TP_IS_DATE_TYPE, TP_IS_SET_TYPE, tp_value_cast(), tp_value_coerce(), tp_value_compare(), TRAILING, tp_domain::type, db_domain_info::general_info::type, parser_node::type_enum, tz_conv_tz_datetime_w_region(), tz_conv_tz_time_w_zone_name(), tz_datetimetz_fix_zone(), tz_get_session_local_timezone(), tz_get_session_tz_region(), tz_get_system_timezone(), tz_get_system_tz_region(), db_timestamptz::tz_id, db_datetimetz::tz_id, tz_timestamp_decode_no_leap_sec(), tz_timestamptz_fix_zone(), V_FALSE, V_TRUE, and pt_statement_info::value.
Referenced by pt_evaluate_tree_internal(), and pt_fold_const_expr().
int pt_evaluate_function | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | func, | ||
DB_VALUE * | dbval_res | ||
) |
Definition at line 20054 of file type_checking.c.
References pt_function_info::arg_list, db_make_null(), ER_FAILED, error(), free_and_init, pt_statement_info::function, pt_function_info::function_type, i, parser_node::info, parser_node::next, NO_ERROR, parser_node::node_type, NULL, pr_clear_value(), pt_evaluate_function_w_args(), PT_FUNCTION, pt_has_error, pt_is_expr_wrapped_function(), PT_VALUE, pt_value_to_db(), and pt_xasl_node_to_domain().
Referenced by pt_evaluate_tree_internal(), and pt_fold_const_function().
int pt_evaluate_function_w_args | ( | PARSER_CONTEXT * | parser, |
FUNC_TYPE | fcode, | ||
DB_VALUE * | args[], | ||
const int | num_args, | ||
DB_VALUE * | result | ||
) |
Definition at line 19731 of file type_checking.c.
References assert, db_evaluate_json_array(), db_evaluate_json_array_append(), db_evaluate_json_array_insert(), db_evaluate_json_contains(), db_evaluate_json_contains_path(), db_evaluate_json_depth(), db_evaluate_json_extract(), db_evaluate_json_get_all_paths(), db_evaluate_json_insert(), db_evaluate_json_keys(), db_evaluate_json_length(), db_evaluate_json_merge_patch(), db_evaluate_json_merge_preserve(), db_evaluate_json_object(), db_evaluate_json_pretty(), db_evaluate_json_quote(), db_evaluate_json_remove(), db_evaluate_json_replace(), db_evaluate_json_search(), db_evaluate_json_set(), db_evaluate_json_type_dbval(), db_evaluate_json_unquote(), db_evaluate_json_valid(), db_string_elt(), db_string_insert_substring(), db_string_regexp_count(), db_string_regexp_instr(), db_string_regexp_like(), db_string_regexp_replace(), db_string_regexp_substr(), er_msg(), error(), 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_REGEXP_COUNT, F_REGEXP_INSTR, F_REGEXP_LIKE, F_REGEXP_REPLACE, F_REGEXP_SUBSTR, i, NO_ERROR, NULL, and PT_ERRORc.
Referenced by pt_evaluate_function().
|
static |
Definition at line 4992 of file type_checking.c.
References NULL, PT_TYPE_BIGINT, PT_TYPE_INTEGER, PT_TYPE_NUMERIC, and PT_TYPE_SMALLINT.
|
static |
Definition at line 6136 of file type_checking.c.
References pt_expr_info::arg1, pt_expr_info::arg2, pt_expr_info::arg3, parser_node::expected_domain, pt_statement_info::expr, pt_arg_type::pt_arg_type_val::generic_type, pr_type::id, parser_node::info, pt_arg_type::NORMAL, pt_expr_info::op, pt_are_equivalent_types(), pt_common_type(), pt_db_to_type_enum(), PT_GENERIC_TYPE_ANY, PT_GENERIC_TYPE_BIT, PT_GENERIC_TYPE_CHAR, PT_GENERIC_TYPE_DATE, PT_GENERIC_TYPE_DATETIME, PT_GENERIC_TYPE_DISCRETE_NUMBER, PT_GENERIC_TYPE_NCHAR, PT_GENERIC_TYPE_NUMBER, PT_GENERIC_TYPE_SEQUENCE, PT_GENERIC_TYPE_STRING, PT_GENERIC_TYPE_STRING_VARYING, pt_is_op_with_forced_common_type(), PT_IS_STRING_TYPE, pt_is_symmetric_op(), PT_TYPE_CHAR, PT_TYPE_MAYBE, PT_TYPE_NCHAR, PT_TYPE_NONE, PT_TYPE_NULL, PT_TYPE_VARCHAR, PT_TYPE_VARNCHAR, expression_signature::return_type, pt_arg_type::type, pt_arg_type::pt_arg_type_val::type, tp_domain::type, parser_node::type_enum, and pt_arg_type::val.
Referenced by pt_apply_expressions_definition().
bool pt_false_search_condition | ( | PARSER_CONTEXT * | parser, |
const PT_NODE * | node | ||
) |
Definition at line 7053 of file type_checking.c.
References pt_value_info::data_value, pt_data_value::i, parser_node::info, parser_node::next, parser_node::node_type, NULL, parser_node::or_next, PT_TYPE_LOGICAL, PT_TYPE_NA, PT_TYPE_NULL, PT_VALUE, parser_node::type_enum, and pt_statement_info::value.
Referenced by pt_check_with_info(), pt_false_where(), pt_to_buildvalue_proc(), qo_add_term(), and qo_check_condition_yields_null().
bool pt_false_where | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | node | ||
) |
Definition at line 6925 of file type_checking.c.
References pt_select_info::after_cb_filter, CAST_POINTER_TO_NODE, pt_statement_info::cte, pt_spec_info::cte_pointer, pt_statement_info::delete_, pt_spec_info::derived_table, pt_spec_info::derived_table_type, pt_select_info::from, pt_select_info::group_by, pt_select_info::having, parser_node::info, pt_spec_info::join_type, pt_statement_info::merge, parser_node::next, parser_node::node_type, pt_cte_info::non_recursive_part, NULL, pt_query_info::orderby_for, PT_DELETE, pt_false_search_condition(), PT_IS_FALSE_WHERE_VALUE, PT_IS_SET_EXPR, pt_is_single_tuple(), PT_IS_SUBQUERY, PT_JOIN_LEFT_OUTER, PT_JOIN_RIGHT_OUTER, PT_MERGE, PT_SELECT, PT_SPEC_IS_CTE, PT_UPDATE, PT_VALUE, pt_query_info::q, pt_statement_info::query, pt_delete_info::search_cond, pt_update_info::search_cond, pt_merge_info::search_cond, pt_query_info::select, pt_statement_info::spec, pt_select_info::start_with, pt_statement_info::update, and pt_select_info::where.
Referenced by do_delete(), do_merge(), do_prepare_delete(), do_prepare_merge(), do_prepare_select(), do_prepare_update(), do_select_internal(), do_update(), insert_local(), pt_check_union_is_foldable(), and pt_eval_type().
|
static |
Definition at line 24500 of file type_checking.c.
References pt_expr_info::arg1, expression_signature::arg1_type, pt_expr_info::arg2, expression_signature::arg2_type, pt_expr_info::arg3, expression_signature::arg3_type, assert, pt_expr_info::cast_type, pt_data_type_info::collation_flag, pt_statement_info::data_type, parser_node::data_type, pt_statement_info::expr, i, parser_node::info, parser_node::node_type, NULL, pt_expr_info::op, expression_definition::overloads, expression_definition::overloads_count, PT_CAST, PT_EXPR, pt_get_equivalent_type(), pt_get_expression_definition(), PT_HAS_COLLATION, PT_TYPE_NONE, PT_TYPE_NULL, TP_DOMAIN_COLL_ENFORCE, TP_DOMAIN_COLL_NORMAL, and parser_node::type_enum.
Referenced by pt_check_expr_collation().
|
static |
Definition at line 24085 of file type_checking.c.
References pt_expr_info::arg1, pt_expr_info::arg2, pt_function_info::arg_list, assert, pt_statement_info::data_type, parser_node::data_type, pt_value_info::data_value, db_get_enum_short(), db_get_enum_string(), pt_data_type_info::enumeration, pt_statement_info::expr, F_SET, pt_statement_info::function, pt_function_info::function_type, parser_node::info, MSGCAT_SEMANTIC_OUT_OF_MEMORY, MSGCAT_SET_PARSER_SEMANTIC, parser_node::next, parser_node::node_type, NULL, pt_expr_info::op, parser_free_tree(), parser_new_node(), pt_add_type_to_set(), pt_data_type_to_db_domain(), PT_EQ, PT_EQ_ALL, PT_EQ_SOME, PT_ERRORm, PT_EXPR, PT_FUNCTION, PT_IS_COLLECTION_TYPE, PT_IS_CONST, PT_IS_IN, PT_IS_NOT_IN, PT_IS_QUERY_NODE_TYPE, pt_is_same_enum_data_type(), PT_NE, PT_NE_ALL, PT_NE_SOME, pt_node_to_enumeration_expr(), PT_NULLSAFE_EQ, pt_select_list_to_enumeration_expr(), PT_TO_ENUMERATION_VALUE, PT_TYPE_ENUMERATION, PT_TYPE_EXPR_SET, PT_TYPE_NULL, PT_VALUE, pt_value_to_db(), pt_data_value::set, tp_domain_select(), TP_EXACT_MATCH, parser_node::type_enum, and pt_statement_info::value.
Referenced by pt_eval_expr_type().
|
static |
Definition at line 18738 of file type_checking.c.
References parser_node::alias_print, pt_dot_info::arg1, pt_expr_info::arg1, pt_dot_info::arg2, pt_expr_info::arg2, pt_expr_info::arg3, ARG_FILE_LINE, assert, pt_coll_infer::can_force_cs, pt_expr_info::cast_type, pt_coll_infer::coerc_level, parser_node::column_number, pt_expr_info::continued_case, pt_statement_info::data_type, parser_node::data_type, db_find_class(), db_get_int(), db_get_row_count(), db_get_row_count_cache(), db_make_int(), db_make_null(), db_make_oid(), pt_name_info::db_object, DB_ROW_COUNT_NOT_SET, DB_TYPE_INTEGER, DB_TYPE_NULL, db_update_row_count_cache(), pt_value_info::db_value, pt_value_info::db_value_is_initialized, DB_VALUE_TYPE, default_value, pt_name_info::default_value, parser_node::do_not_fold, pt_statement_info::dot, pt_data_type_info::entity, pt_spec_info::entity_name, er_clear(), er_msg(), ER_OBJ_INVALID_ARGUMENTS, er_set(), ER_WARNING_SEVERITY, pt_statement_info::expr, parser_node::flag, parser_node::info, parser_node::is_alias_enabled_expr, parser_node::is_hidden_column, parser_node::is_value_query, parser_node::line_number, pt_expr_info::location, pt_statement_info::name, parser_node::next, parser_node::node_type, NULL, null_oid, OID_SET_NULL, pt_expr_info::op, parser_node::or_next, pt_name_info::original, parser_copy_tree(), parser_copy_tree_list(), parser_free_tree(), parser_new_node(), pr_clear_value(), pt_data_type_info::precision, prm_get_bool_value(), PRM_ID_ORACLE_STYLE_EMPTY_STRING, PRM_ID_RETURN_NULL_ON_FUNCTION_ERRORS, PT_AND, pt_append_string(), PT_BETWEEN, PT_BETWEEN_AND, PT_BETWEEN_EQ_NA, PT_BETWEEN_GE_INF, PT_BETWEEN_GE_LE, PT_BETWEEN_GT_INF, PT_BETWEEN_INF_LE, PT_BETWEEN_INF_LT, PT_BIT_TO_BLOB, PT_BLOB_LENGTH, PT_BLOB_TO_BIT, PT_CASE, PT_CAST, PT_CHAR_TO_BLOB, PT_CHAR_TO_CLOB, pt_check_const_fold_op_w_args(), pt_check_same_datatype(), PT_CLOB_LENGTH, PT_CLOB_TO_CHAR, PT_COALESCE, PT_COERCIBILITY, PT_COLLATION_L2_BIN_COERC, PT_COLLATION_L2_COERC, pt_compare_bounds_to_value(), PT_CONCAT, PT_CONCAT_WS, PT_CONVERT_RANGE, PT_CURRENT_VALUE, PT_DATA_TYPE, pt_dbval_to_value(), PT_DECODE, PT_DECR, PT_DEFAULTF, PT_DOT_, PT_EQ, PT_EQ_TORDER, PT_ERRORc, PT_ERRORf, pt_evaluate_db_value_expr(), PT_EXEC_STATS, PT_EXPR, PT_EXPR_INFO_CAST_SHOULD_FOLD, PT_EXPR_INFO_IS_FLAGED, PT_EXPR_INFO_SET_FLAG, PT_EXTRACT, pt_find_entity(), PT_FROM_UNIXTIME, PT_FUNCTION, PT_FUNCTION_HOLDER, PT_GE, pt_get_collation_info(), PT_GT, pt_has_error, PT_IF, PT_IFNULL, PT_INCR, PT_INST_NUM, pt_is_between_range_op(), pt_is_const_foldable_width_bucket(), PT_IS_PARAMETERIZED_TYPE, pt_is_set_type, PT_IS_STRING_TYPE, PT_IS_VALUE_NODE, PT_LE, PT_LIKE, PT_LIKE_LOWER_BOUND, PT_LIKE_UPPER_BOUND, PT_LPAD, PT_LT, PT_LTRIM, pt_name(), PT_NAME, PT_NEXT_VALUE, PT_NODE_PRINT_TO_ALIAS, PT_NOT_BETWEEN, PT_NULLIF, PT_NVL, PT_NVL2, PT_OID_ATTR, PT_OID_OF_DUPLICATE_KEY, PT_OR, PT_ORDERBY_NUM, PT_PLUS, pt_print_bytes(), PT_RANGE, PT_REPLACE, PT_ROW_COUNT, PT_RPAD, PT_RTRIM, PT_SELECT, PT_STRCAT, PT_SUBSTRING, PT_SYS_CONNECT_BY_PATH, PT_TIMESTAMP, 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_TRACE_STATS, PT_TRIM, PT_TYPE_BIGINT, PT_TYPE_BIT, PT_TYPE_CHAR, PT_TYPE_ENUMERATION, PT_TYPE_INTEGER, PT_TYPE_LOGICAL, PT_TYPE_MAYBE, PT_TYPE_NA, PT_TYPE_NCHAR, PT_TYPE_NONE, PT_TYPE_NULL, PT_TYPE_NUMERIC, PT_TYPE_OBJECT, PT_TYPE_VARBIT, PT_TYPE_VARCHAR, PT_TYPE_VARNCHAR, PT_TZ_OFFSET, PT_VALUE, pt_value_to_db(), PT_WIDTH_BUCKET, pt_xasl_node_to_domain(), QSTR_IS_ANY_CHAR_OR_BIT, pt_expr_info::qualifier, pt_name_info::resolved, sm_att_info(), pt_statement_info::spec, pt_name_info::spec_id, semantic_chk_info::top_node, TP_DOMAIN_TYPE, parser_node::type_enum, pt_statement_info::value, and pt_data_type_info::virt_type_enum.
Referenced by pt_coerce_node_collation(), and pt_fold_constants_post().
|
static |
Definition at line 19903 of file type_checking.c.
References parser_node::alias_print, pt_function_info::all_or_distinct, pt_function_info::arg_list, parser_node::column_number, pt_value_info::data_value, db_make_null(), parser_node::do_not_fold, F_SEQUENCE, parser_node::flag, pt_statement_info::function, pt_function_info::function_type, parser_node::info, parser_node::is_alias_enabled_expr, pt_value_info::is_collate_allowed, parser_node::line_number, pt_value_info::location, parser_node::next, NO_ERROR, parser_node::node_type, NULL, parser_free_tree(), pr_clear_value(), PT_CONVERT_RANGE, PT_COUNT, PT_COUNT_STAR, pt_dbval_to_value(), PT_DISTINCT, pt_evaluate_function(), PT_FUNCTION, pt_is_const, pt_is_expr_wrapped_function(), PT_IS_NULL_NODE, pt_is_set_type, PT_IS_VALUE_NODE, PT_NODE_PRINT_TO_ALIAS, PT_TYPE_INTEGER, PT_TYPE_NA, PT_TYPE_NONE, PT_TYPE_NULL, PT_TYPE_SEQUENCE, PT_VALUE, pt_data_value::set, pt_value_info::text, parser_node::type_enum, and pt_statement_info::value.
Referenced by pt_fold_constants_post().
|
static |
Definition at line 7701 of file type_checking.c.
References semantic_chk_info::donot_fold, F_BENCHMARK, pt_statement_info::function, pt_function_info::function_type, parser_node::info, parser_node::node_type, NULL, PT_CONTINUE_WALK, PT_EXPR, pt_fold_const_expr(), pt_fold_const_function(), PT_FUNCTION, and PT_INTERNAL_ERROR.
Referenced by pt_semantic_type().
|
static |
Definition at line 7666 of file type_checking.c.
References F_BENCHMARK, pt_statement_info::function, pt_function_info::function_type, parser_node::info, parser_node::node_type, NULL, PT_FUNCTION, and PT_LIST_WALK.
Referenced by pt_semantic_type().
bool pt_get_collation_info | ( | const PT_NODE * | node, |
PT_COLL_INFER * | coll_infer | ||
) |
Definition at line 21650 of file type_checking.c.
References pt_expr_info::arg1, assert, pt_coll_infer::can_force_cs, lang_collation::codeset, pt_coll_infer::codeset, pt_coll_infer::coerc_level, pt_coll_infer::coll_id, pt_data_type_info::collation_flag, pt_data_type_info::collation_id, pt_statement_info::data_type, parser_node::data_type, parser_node::expected_domain, pt_statement_info::expr, if(), parser_node::info, LANG_COERCIBLE_CODESET, LANG_COERCIBLE_COLL, LANG_COLL_BINARY, lang_get_collation(), LANG_IS_COERCIBLE_COLL, LANG_SYS_CODESET, LANG_SYS_COLLATION, parser_node::node_type, NULL, pt_expr_info::op, PT_CAST, PT_COLLATION_FULLY_COERC, PT_COLLATION_L1_BIN_COERC, PT_COLLATION_L1_COERC, PT_COLLATION_L1_ISO_BIN_COERC, PT_COLLATION_L2_BIN_COERC, PT_COLLATION_L2_BINARY_COERC, PT_COLLATION_L2_COERC, PT_COLLATION_L3_COERC, PT_COLLATION_L4_BIN_COERC, PT_COLLATION_L4_BINARY_COERC, PT_COLLATION_L4_COERC, PT_COLLATION_L5_COERC, PT_COLLATION_NOT_COERC, PT_CURRENT_USER, PT_DATABASE, PT_DEFINE_VARIABLE, PT_DIFFERENCE, PT_DOT_, PT_EVALUATE_VARIABLE, PT_EXPR, PT_EXPR_INFO_CAST_SHOULD_FOLD, PT_EXPR_INFO_IS_FLAGED, PT_FUNCTION, PT_GET_COLLATION_MODIFIER, PT_HAS_COLLATION, PT_HOST_VAR, PT_INTERSECTION, pt_is_input_parameter, PT_METHOD_CALL, PT_NAME, PT_NAME_GENERATED_DERIVED_SPEC, PT_NAME_INFO_IS_FLAGED, PT_SCHEMA, PT_SELECT, PT_TYPE_MAYBE, PT_UNION, PT_USER, PT_VALUE, PT_VERSION, TP_DOMAIN_CODESET, TP_DOMAIN_COLL_LEAVE, TP_DOMAIN_COLLATION, TP_DOMAIN_COLLATION_FLAG, TP_DOMAIN_TYPE, TP_TYPE_HAS_COLLATION, parser_node::type_enum, and pt_data_type_info::units.
Referenced by func_type::Node::check_arg_compat(), pt_assignment_compatible(), pt_check_expr_collation(), pt_check_function_collation(), pt_check_recursive_expr_collation(), pt_eval_function_type_old(), pt_fold_const_expr(), pt_get_compatible_info_from_node(), and func_type::Node::set_return_type().
|
static |
Definition at line 21854 of file type_checking.c.
References pt_function_info::arg_list, assert, pt_coll_infer::can_force_cs, lang_collation::codeset, pt_coll_infer::codeset, pt_coll_infer::coerc_level, pt_coll_infer::coll_id, parser_node::data_type, pt_value_info::data_value, error(), ERROR_COLLATION, parser_node::expected_domain, F_MULTISET, F_SEQUENCE, F_SET, F_TABLE_MULTISET, F_TABLE_SEQUENCE, F_TABLE_SET, pt_statement_info::function, pt_function_info::function_type, HAS_COLLATION, parser_node::info, LANG_COERCIBLE_CODESET, LANG_COERCIBLE_COLL, LANG_COLL_BINARY, lang_get_collation(), LANG_IS_COERCIBLE_COLL, LANG_SYS_COLLATION, pt_select_info::list, MSGCAT_SEMANTIC_COLLECTION_EL_COLLATION_ERROR, MSGCAT_SET_PARSER_SEMANTIC, parser_node::next, NO_COLLATION, parser_node::node_type, NULL, PT_COLLATION_FULLY_COERC, PT_COLLATION_L1_BIN_COERC, PT_COLLATION_L1_COERC, PT_COLLATION_L1_ISO_BIN_COERC, PT_COLLATION_L2_BIN_COERC, PT_COLLATION_L2_BINARY_COERC, PT_COLLATION_L2_COERC, PT_COLLATION_L4_BIN_COERC, PT_COLLATION_L4_BINARY_COERC, PT_COLLATION_L4_COERC, PT_COLLATION_L5_COERC, PT_COLLATION_NOT_COERC, PT_DIFFERENCE, PT_DOT_, PT_ERRORm, PT_EXPR, PT_FUNCTION, PT_GET_COLLATION_MODIFIER, pt_get_collation_of_collection(), PT_HOST_VAR, PT_INTERSECTION, PT_IS_COLLECTION_TYPE, PT_NAME, PT_SELECT, PT_TYPE_MAYBE, PT_UNION, PT_VALUE, pt_query_info::q, pt_statement_info::query, pt_query_info::select, pt_data_value::set, TP_DOMAIN_TYPE, TP_IS_SET_TYPE, parser_node::type_enum, and pt_statement_info::value.
Referenced by pt_check_expr_collation(), and pt_get_collation_of_collection().
|
static |
Definition at line 22077 of file type_checking.c.
References assert, pt_coll_infer::codeset, pt_coll_infer::coll_id, pt_data_type_info::collation_id, pt_statement_info::data_type, parser_node::data_type, error(), ERROR_COLLATION, HAS_COLLATION, parser_node::info, MSGCAT_SEMANTIC_COLLECTION_EL_COLLATION_ERROR, MSGCAT_SET_PARSER_SEMANTIC, parser_node::next, NO_COLLATION, parser_node::node_type, NULL, PT_DATA_TYPE, PT_ERRORm, pt_get_collation_info_for_collection_type(), PT_HAS_COLLATION, PT_IS_COLLECTION_TYPE, parser_node::type_enum, and pt_data_type_info::units.
Referenced by pt_get_collation_info_for_collection_type().
|
static |
Definition at line 24286 of file type_checking.c.
References pt_expr_info::arg1, pt_expr_info::arg2, assert, pt_statement_info::expr, parser_node::info, parser_node::node_type, NULL, pt_expr_info::op, PT_BETWEEN, PT_BETWEEN_GE_LT, pt_common_type(), PT_EXPR, PT_TYPE_NONE, PT_WIDTH_BUCKET, and parser_node::type_enum.
Referenced by pt_apply_expressions_definition(), and pt_coerce_expr_arguments().
|
static |
Definition at line 5138 of file type_checking.c.
References assert, pt_expr_info::cast_type, parser_node::data_type, pt_statement_info::expr, parser_node::info, parser_node::next, NULL, PT_CAST, pt_common_type(), PT_EXPR, PT_IS_COLLECTION_TYPE, PT_IS_NUMERIC_TYPE, PT_TYPE_MAYBE, PT_TYPE_NONE, and parser_node::type_enum.
Referenced by pt_coerce_range_expr_arguments().
|
static |
Definition at line 8667 of file type_checking.c.
References assert, NO_ERROR, NULL, pt_coerce_str_to_time_date_utime_datetime(), pt_coerce_value(), pt_common_type(), PT_IS_CHAR_STRING_TYPE, PT_IS_DATE_TIME_TYPE, PT_IS_NUMERIC_TYPE, and PT_TYPE_NONE.
|
static |
Definition at line 21306 of file type_checking.c.
References pt_arg_type::GENERIC, pt_get_equivalent_type(), pt_is_op_hv_late_bind(), PT_TYPE_MAYBE, and pt_arg_type::type.
Referenced by pt_coerce_expr_arguments().
|
static |
Definition at line 305 of file type_checking.c.
References expression_signature::arg1_type, expression_signature::arg2_type, expression_signature::arg3_type, assert, pt_arg_type::GENERIC, pt_arg_type::pt_arg_type_val::generic_type, MAX_OVERLOADS, pt_arg_type::NORMAL, NULL, expression_definition::op, expression_definition::overloads, expression_definition::overloads_count, prm_get_bool_value(), PRM_ID_PLUS_AS_CONCAT, PT_ABS, PT_ACOS, PT_ADD_MONTHS, PT_ADDDATE, PT_ADDTIME, PT_AES_DECRYPT, PT_AES_ENCRYPT, PT_AND, PT_ASCII, PT_ASIN, PT_ATAN, PT_ATAN2, PT_BETWEEN, PT_BETWEEN_EQ_NA, PT_BETWEEN_GE_INF, PT_BETWEEN_GT_INF, 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_TO_BLOB, PT_BIT_XOR, PT_BITSHIFT_LEFT, PT_BITSHIFT_RIGHT, PT_BLOB_FROM_FILE, PT_BLOB_LENGTH, PT_BLOB_TO_BIT, PT_CEIL, PT_CHAR_LENGTH, PT_CHAR_TO_BLOB, PT_CHAR_TO_CLOB, PT_CHARSET, PT_CHR, PT_CLOB_FROM_FILE, PT_CLOB_LENGTH, PT_CLOB_TO_CHAR, PT_COALESCE, PT_COERCIBILITY, PT_COLLATION, PT_CONCAT, PT_CONCAT_WS, PT_CONNECT_BY_ISCYCLE, PT_CONNECT_BY_ISLEAF, PT_CONNECT_BY_ROOT, PT_CONV, PT_CONV_TZ, PT_COS, PT_COT, PT_CRC32, PT_CURRENT_DATE, PT_CURRENT_DATETIME, PT_CURRENT_TIME, PT_CURRENT_TIMESTAMP, PT_CURRENT_USER, PT_CURRENT_VALUE, PT_DATABASE, PT_DATE_FORMAT, PT_DATEDIFF, PT_DATEF, PT_DAYF, PT_DAYOFMONTH, PT_DAYOFWEEK, PT_DAYOFYEAR, PT_DBTIMEZONE, PT_DECR, PT_DEFAULTF, PT_DEFINE_VARIABLE, PT_DEGREES, PT_DISK_SIZE, PT_DIV, PT_DIVIDE, PT_DRAND, PT_DRANDOM, PT_EQ, PT_EQ_ALL, PT_EQ_SOME, PT_EVALUATE_VARIABLE, PT_EXEC_STATS, PT_EXP, PT_EXTRACT, PT_FINDINSET, PT_FLOOR, PT_FORMAT, PT_FROM_BASE64, PT_FROM_TZ, PT_FROM_UNIXTIME, PT_FROMDAYS, PT_GE, PT_GE_ALL, PT_GE_SOME, PT_GENERIC_TYPE_ANY, PT_GENERIC_TYPE_BIT, PT_GENERIC_TYPE_CHAR, PT_GENERIC_TYPE_DATE, PT_GENERIC_TYPE_DATETIME, PT_GENERIC_TYPE_DISCRETE_NUMBER, PT_GENERIC_TYPE_LOB, PT_GENERIC_TYPE_NCHAR, PT_GENERIC_TYPE_NUMBER, PT_GENERIC_TYPE_PRIMITIVE, PT_GENERIC_TYPE_QUERY, PT_GENERIC_TYPE_SEQUENCE, PT_GENERIC_TYPE_STRING, PT_GENERIC_TYPE_STRING_VARYING, PT_GREATEST, PT_GT, PT_GT_ALL, PT_GT_INF, PT_GT_SOME, PT_HEX, PT_HOURF, PT_IFNULL, PT_INCR, PT_INDEX_CARDINALITY, PT_INDEX_PREFIX, PT_INET_ATON, PT_INET_NTOA, PT_INST_NUM, PT_INSTR, PT_IS, PT_IS_IN, PT_IS_NOT, PT_IS_NOT_IN, PT_IS_NOT_NULL, PT_IS_NULL, PT_ISNULL, PT_LAST_DAY, PT_LAST_INSERT_ID, PT_LE, PT_LE_ALL, PT_LE_SOME, PT_LEAST, PT_LEFT, PT_LEVEL, PT_LIKE, PT_LIKE_LOWER_BOUND, PT_LIKE_UPPER_BOUND, PT_LIST_DBS, PT_LN, PT_LOCAL_TRANSACTION_ID, PT_LOCATE, PT_LOG, PT_LOG10, PT_LOG2, PT_LOWER, PT_LPAD, PT_LT, PT_LT_ALL, PT_LT_INF, PT_LT_SOME, PT_LTRIM, PT_MAKEDATE, PT_MAKETIME, PT_MD5, PT_MID, PT_MINUS, PT_MINUTEF, PT_MOD, PT_MODULUS, PT_MONTHF, PT_MONTHS_BETWEEN, PT_NE, PT_NE_ALL, PT_NE_SOME, PT_NEW_TIME, PT_NEXT_VALUE, PT_NOT, PT_NOT_BETWEEN, PT_NOT_LIKE, PT_NOT_RLIKE, PT_NOT_RLIKE_BINARY, PT_NULLIF, PT_NULLSAFE_EQ, PT_NVL, PT_NVL2, PT_OCTET_LENGTH, PT_OR, PT_ORDERBY_NUM, PT_PI, PT_PLUS, PT_POSITION, PT_POWER, PT_PRIOR, PT_QPRIOR, PT_QUARTERF, PT_RADIANS, PT_RAND, PT_RANDOM, PT_REPEAT, PT_REPLACE, PT_REVERSE, PT_RIGHT, PT_RLIKE, PT_RLIKE_BINARY, PT_ROUND, PT_ROW_COUNT, PT_ROWNUM, PT_RPAD, PT_RTRIM, PT_SCHEMA, PT_SCHEMA_DEF, PT_SECONDF, PT_SECTOTIME, PT_SESSIONTIMEZONE, PT_SETEQ, PT_SETNEQ, PT_SHA_ONE, PT_SHA_TWO, PT_SIGN, PT_SIN, PT_SLEEP, PT_SPACE, PT_SQRT, PT_STRCAT, PT_STRCMP, PT_SUBDATE, PT_SUBSET, PT_SUBSETEQ, PT_SUBSTRING, PT_SUBSTRING_INDEX, PT_SUPERSET, PT_SUPERSETEQ, PT_SYS_CONNECT_BY_PATH, PT_SYS_DATE, PT_SYS_DATETIME, PT_SYS_GUID, 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_ENUMERATION_VALUE, PT_TO_NUMBER, PT_TO_TIME, PT_TO_TIMESTAMP, PT_TO_TIMESTAMP_TZ, PT_TODAYS, PT_TRACE_STATS, PT_TRANSLATE, PT_TRIM, PT_TRUNC, PT_TYPE_BIGINT, 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_INTEGER, PT_TYPE_LOGICAL, PT_TYPE_MAYBE, PT_TYPE_MULTISET, PT_TYPE_NONE, PT_TYPE_NUMERIC, PT_TYPE_OBJECT, 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, PT_TYPEOF, PT_TZ_OFFSET, PT_UNARY_MINUS, PT_UNIX_TIMESTAMP, PT_UPPER, PT_USER, PT_UTC_DATE, PT_UTC_TIME, PT_UTC_TIMESTAMP, PT_VERSION, PT_WEEKDAY, PT_WEEKF, PT_WIDTH_BUCKET, PT_XOR, PT_YEARF, expression_signature::return_type, pt_arg_type::type, pt_arg_type::pt_arg_type_val::type, and pt_arg_type::val.
Referenced by pt_apply_expressions_definition(), and pt_fix_arguments_collation_flag().
|
static |
Definition at line 24834 of file type_checking.c.
References assert, parser_node::expected_domain, parser_node::node_type, NULL, parser_node::or_next, p, PT_HOST_VAR, and pt_update_host_var_data_type().
Referenced by pt_preset_hostvar().
|
static |
Definition at line 5035 of file type_checking.c.
References assert, NULL, PT_COALESCE, pt_common_type_op(), pt_db_to_type_enum(), pt_is_op_hv_late_bind(), pt_is_symmetric_op(), PT_TYPE_MAYBE, PT_TYPE_NONE, and TP_DOMAIN_TYPE.
Referenced by pt_coerce_expr_arguments().
|
static |
Definition at line 8524 of file type_checking.c.
References PT_ACOS, PT_ADD_MONTHS, PT_ADDDATE, PT_AES_DECRYPT, PT_AES_ENCRYPT, 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_CASE, PT_CAST, PT_CHAR_LENGTH, PT_CHAR_TO_BLOB, PT_CHAR_TO_CLOB, PT_CHARSET, PT_CHR, PT_CLOB_FROM_FILE, PT_CLOB_LENGTH, PT_CLOB_TO_CHAR, PT_COERCIBILITY, PT_COLLATION, PT_CONV, PT_COS, PT_COT, PT_CRC32, PT_DATE_ADD, PT_DATE_FORMAT, PT_DATE_SUB, PT_DATEDIFF, PT_DATEF, PT_DAYF, PT_DAYOFMONTH, PT_DAYOFWEEK, PT_DAYOFYEAR, PT_DECODE, PT_DEFINE_VARIABLE, PT_DEGREES, PT_DISK_SIZE, PT_DRAND, PT_DRANDOM, PT_EVALUATE_VARIABLE, PT_EXP, PT_FIELD, PT_FINDINSET, PT_FORMAT, PT_FROMDAYS, PT_HEX, PT_HOURF, PT_INET_ATON, PT_INET_NTOA, PT_ISNULL, PT_LAST_DAY, PT_LIKE, PT_LN, PT_LOCATE, PT_LOG, PT_LOG10, PT_LOG2, PT_MAKEDATE, PT_MAKETIME, PT_MINUTEF, PT_MONTHF, PT_MONTHS_BETWEEN, PT_NOT_LIKE, PT_NOT_RLIKE, PT_NOT_RLIKE_BINARY, PT_OCTET_LENGTH, PT_POSITION, PT_POWER, PT_QUARTERF, PT_RADIANS, PT_RAND, PT_RANDOM, PT_RLIKE, PT_RLIKE_BINARY, PT_SCHEMA_DEF, PT_SECONDF, PT_SECTOTIME, PT_SHA_ONE, PT_SHA_TWO, PT_SIGN, PT_SIN, PT_SLEEP, PT_SQRT, PT_STR_TO_DATE, PT_STRCMP, PT_SUBDATE, PT_TAN, PT_TIME_FORMAT, PT_TIMEDIFF, PT_TIMEF, PT_TIMESTAMP, PT_TIMETOSEC, PT_TO_CHAR, PT_TO_DATE, PT_TO_DATETIME, PT_TO_DATETIME_TZ, PT_TO_ENUMERATION_VALUE, PT_TO_NUMBER, PT_TO_TIME, PT_TO_TIMESTAMP, PT_TO_TIMESTAMP_TZ, PT_TODAYS, PT_TYPEOF, PT_UNIX_TIMESTAMP, PT_WEEKDAY, PT_WEEKF, PT_WIDTH_BUCKET, and PT_YEARF.
Referenced by pt_eval_expr_type().
int pt_is_between_range_op | ( | PT_OP_TYPE | op | ) |
Definition at line 21070 of file type_checking.c.
References 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, and PT_BETWEEN_INF_LT.
Referenced by pt_check_expr_collation(), pt_eval_expr_type(), pt_evaluate_tree_internal(), pt_fold_const_expr(), pt_to_pred_expr_local_with_arg(), qo_between_selectivity(), and qo_range_selectivity().
|
static |
Definition at line 5188 of file type_checking.c.
References assert, parser_node::data_type, parser_node::next, NULL, PT_IS_COLLECTION_TYPE, and parser_node::type_enum.
int pt_is_comp_op | ( | PT_OP_TYPE | op | ) |
Definition at line 21097 of file type_checking.c.
References 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_EQ, PT_EQ_ALL, PT_EQ_SOME, PT_GE, PT_GE_ALL, PT_GE_SOME, PT_GT, PT_GT_ALL, PT_GT_INF, PT_GT_SOME, PT_IS, PT_IS_IN, PT_IS_NOT, PT_IS_NOT_IN, PT_IS_NOT_NULL, PT_IS_NULL, PT_LE, PT_LE_ALL, PT_LE_SOME, PT_LIKE, PT_LT, PT_LT_ALL, PT_LT_INF, PT_LT_SOME, PT_NE, PT_NE_ALL, PT_NE_SOME, PT_NOT_LIKE, PT_NULLSAFE_EQ, and PT_RANGE.
Referenced by pt_check_expr_collation(), pt_coerce_expr_arguments(), and pt_common_type_op().
|
static |
Definition at line 24339 of file type_checking.c.
References pt_expr_info::arg1, pt_expr_info::arg2, pt_expr_info::arg3, assert, pt_statement_info::expr, parser_node::info, parser_node::node_type, NULL, pt_expr_info::op, PT_BETWEEN, PT_BETWEEN_GE_LT, PT_EXPR, PT_VALUE, and PT_WIDTH_BUCKET.
Referenced by pt_fold_const_expr().
|
static |
Definition at line 24019 of file type_checking.c.
References parser_node::data_type, pt_statement_info::expr, parser_node::info, parser_node::node_type, NULL, pt_expr_info::op, PT_EQ, PT_EQ_ALL, PT_EQ_SOME, PT_EXPR, PT_IS_CONST, PT_IS_IN, PT_IS_NOT_IN, pt_is_same_enum_data_type(), PT_NE, PT_NE_ALL, PT_NE_SOME, PT_NULLSAFE_EQ, PT_TO_ENUMERATION_VALUE, PT_TYPE_ENUMERATION, and parser_node::type_enum.
Referenced by pt_coerce_expr_arguments(), pt_coerce_range_expr_arguments(), and pt_eval_expr_type().
|
static |
Definition at line 20292 of file type_checking.c.
References PT_IS_NUMERIC_TYPE, and PT_IS_STRING_TYPE.
Referenced by pt_coerce_value_for_default_value().
bool pt_is_op_hv_late_bind | ( | PT_OP_TYPE | op | ) |
Definition at line 21332 of file type_checking.c.
References PT_ABS, PT_ADDTIME, PT_ASCII, PT_CEIL, PT_COALESCE, PT_CONV, PT_DEFINE_VARIABLE, PT_DIVIDE, PT_EVALUATE_VARIABLE, PT_FLOOR, PT_FROM_TZ, PT_GREATEST, PT_HEX, PT_HOURF, PT_IFNULL, PT_LEAST, PT_MINUS, PT_MINUTEF, PT_MODULUS, PT_NEW_TIME, PT_NULLIF, PT_NVL, PT_NVL2, PT_PLUS, PT_ROUND, PT_SECONDF, PT_STR_TO_DATE, PT_TIMES, PT_TO_CHAR, PT_TRUNC, and PT_UNARY_MINUS.
Referenced by pt_apply_expressions_definition(), pt_coerce_expression_argument(), pt_common_type_op(), pt_evaluate_db_value_expr(), pt_get_equivalent_type_with_op(), pt_infer_common_type(), pt_to_regu_variable(), and pt_wrap_expr_w_exp_dom_cast().
|
static |
Definition at line 21553 of file type_checking.c.
References PT_BETWEEN, PT_BETWEEN_AND, PT_BETWEEN_GE_LE, PT_BETWEEN_GE_LT, PT_BETWEEN_GT_LE, PT_BETWEEN_GT_LT, PT_COALESCE, PT_CONCAT, PT_CONCAT_WS, PT_CONNECT_BY_ROOT, PT_DATE_FORMAT, PT_DATEF, PT_EQ, PT_EQ_ALL, PT_EQ_SOME, PT_FIELD, PT_FINDINSET, PT_GE, PT_GE_ALL, PT_GE_SOME, PT_GREATEST, PT_GT, PT_GT_ALL, PT_GT_SOME, PT_IF, PT_IFNULL, PT_INDEX_PREFIX, PT_INSTR, PT_IS_IN, PT_IS_NOT_IN, PT_LE, PT_LE_ALL, PT_LE_SOME, PT_LEAST, PT_LEFT, PT_LIKE, PT_LOCATE, PT_LOWER, PT_LPAD, PT_LT, PT_LT_ALL, PT_LT_SOME, PT_LTRIM, PT_MID, PT_MINUS, PT_NE, PT_NE_ALL, PT_NE_SOME, PT_NOT_BETWEEN, PT_NOT_LIKE, PT_NULLIF, PT_NULLSAFE_EQ, PT_NVL, PT_NVL2, PT_PLUS, PT_POSITION, PT_PRIOR, PT_QPRIOR, PT_REPLACE, PT_REVERSE, PT_RIGHT, PT_RPAD, PT_RTRIM, PT_SETEQ, PT_SETNEQ, PT_STRCAT, PT_STRCMP, PT_SUBSET, PT_SUBSETEQ, PT_SUBSTRING, PT_SUBSTRING_INDEX, PT_SUPERSET, PT_SUPERSETEQ, PT_TIME_FORMAT, PT_TIMEF, PT_TRANSLATE, PT_TRIM, and PT_UPPER.
Referenced by pt_check_expr_collation().
|
static |
Definition at line 21429 of file type_checking.c.
References PT_BETWEEN, PT_COALESCE, PT_GREATEST, PT_IFNULL, PT_LEAST, PT_NULLIF, PT_NVL, and PT_NVL2.
Referenced by pt_expr_get_return_type(), and pt_upd_domain_info().
|
static |
Definition at line 5866 of file type_checking.c.
References PT_EQ_ALL, PT_EQ_SOME, PT_GE_ALL, PT_GE_SOME, PT_GT_ALL, PT_GT_SOME, PT_IS_IN, PT_IS_NOT_IN, PT_LE_ALL, PT_LE_SOME, PT_LT_ALL, PT_LT_SOME, PT_NE_ALL, and PT_NE_SOME.
Referenced by pt_apply_expressions_definition().
|
static |
Definition at line 5897 of file type_checking.c.
References PT_BETWEEN, 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_EQ, PT_GE, PT_GT, PT_GT_INF, PT_LE, PT_LT, PT_LT_INF, PT_NE, and PT_NULLSAFE_EQ.
Referenced by pt_coerce_expr_arguments().
bool pt_is_symmetric_op | ( | const PT_OP_TYPE | op | ) |
Definition at line 6348 of file type_checking.c.
References PT_ABS, PT_ADD_MONTHS, PT_ADDDATE, PT_ADDTIME, PT_AES_DECRYPT, PT_AES_ENCRYPT, PT_ASSIGN, PT_ATAN2, PT_BETWEEN_EQ_NA, PT_BETWEEN_GE_INF, PT_BETWEEN_GT_INF, PT_BETWEEN_INF_LE, PT_BETWEEN_INF_LT, PT_BIN, PT_BIT_LENGTH, PT_BIT_TO_BLOB, PT_BLOB_FROM_FILE, PT_BLOB_LENGTH, PT_BLOB_TO_BIT, PT_CASE, PT_CAST, PT_CHAR_LENGTH, PT_CHAR_TO_BLOB, PT_CHAR_TO_CLOB, PT_CHARSET, PT_CHR, PT_CLOB_FROM_FILE, PT_CLOB_LENGTH, PT_CLOB_TO_CHAR, PT_COALESCE, PT_COERCIBILITY, PT_COLLATION, PT_CONCAT, PT_CONCAT_WS, PT_CONNECT_BY_ISCYCLE, PT_CONNECT_BY_ISLEAF, PT_CONNECT_BY_ROOT, PT_CONV, PT_CONV_TZ, PT_CRC32, PT_CURRENT_DATE, PT_CURRENT_DATETIME, PT_CURRENT_TIME, PT_CURRENT_TIMESTAMP, PT_CURRENT_USER, PT_CURRENT_VALUE, PT_DATABASE, PT_DATE_ADD, PT_DATE_FORMAT, PT_DATE_SUB, PT_DAYF, PT_DAYOFMONTH, PT_DAYOFWEEK, PT_DAYOFYEAR, PT_DBTIMEZONE, PT_DECODE, PT_DECR, PT_DEFINE_VARIABLE, PT_DISK_SIZE, PT_DRAND, PT_DRANDOM, PT_EQ_ALL, PT_EQ_SOME, PT_EVALUATE_VARIABLE, PT_EXEC_STATS, PT_EXTRACT, PT_FIELD, PT_FINDINSET, PT_FORMAT, PT_FROM_TZ, PT_FROM_UNIXTIME, PT_FROMDAYS, PT_FUNCTION_HOLDER, PT_GE_ALL, PT_GE_SOME, PT_GT_ALL, PT_GT_INF, PT_GT_SOME, PT_HOURF, PT_IF, PT_IFNULL, PT_INCR, PT_INDEX_CARDINALITY, PT_INDEX_PREFIX, PT_INST_NUM, PT_INSTR, PT_IS, PT_IS_IN, PT_IS_NOT, PT_IS_NOT_IN, PT_IS_NOT_NULL, PT_IS_NULL, PT_LAST_DAY, PT_LAST_INSERT_ID, PT_LE_ALL, PT_LE_SOME, PT_LEFT, PT_LEVEL, PT_LIKE_ESCAPE, PT_LIKE_LOWER_BOUND, PT_LIKE_UPPER_BOUND, PT_LIST_DBS, PT_LOCAL_TRANSACTION_ID, PT_LOCATE, PT_LPAD, PT_LT_ALL, PT_LT_INF, PT_LT_SOME, PT_LTRIM, PT_MAKEDATE, PT_MAKETIME, PT_MID, PT_MINUTEF, PT_MONTHF, PT_MONTHS_BETWEEN, PT_NE_ALL, PT_NE_SOME, PT_NEW_TIME, PT_NEXT_VALUE, PT_NOT_RLIKE, PT_NOT_RLIKE_BINARY, PT_NVL, PT_NVL2, PT_OCTET_LENGTH, PT_ORDERBY_NUM, PT_PI, PT_POSITION, PT_POWER, PT_QPRIOR, PT_QUARTERF, PT_RAND, PT_RANDOM, PT_REPEAT, PT_REPLACE, PT_REVERSE, PT_RIGHT, PT_RLIKE, PT_RLIKE_BINARY, PT_ROUND, PT_ROW_COUNT, PT_ROWNUM, PT_RPAD, PT_RTRIM, PT_SCHEMA, PT_SCHEMA_DEF, PT_SECONDF, PT_SECTOTIME, PT_SESSIONTIMEZONE, PT_SHA_ONE, PT_SHA_TWO, PT_SLEEP, PT_STR_TO_DATE, PT_SUBDATE, PT_SUBSTRING, PT_SUBSTRING_INDEX, PT_SYS_CONNECT_BY_PATH, PT_SYS_DATE, PT_SYS_DATETIME, PT_SYS_GUID, PT_SYS_TIME, PT_SYS_TIMESTAMP, PT_TIME_FORMAT, PT_TIMEF, PT_TIMESTAMP, PT_TIMETOSEC, PT_TO_CHAR, PT_TO_DATE, PT_TO_DATETIME, PT_TO_DATETIME_TZ, PT_TO_ENUMERATION_VALUE, PT_TO_NUMBER, PT_TO_TIME, PT_TO_TIMESTAMP, PT_TO_TIMESTAMP_TZ, PT_TODAYS, PT_TRACE_STATS, PT_TRANSLATE, PT_TRIM, PT_TRUNC, PT_TYPEOF, PT_TZ_OFFSET, PT_UNIX_TIMESTAMP, PT_USER, PT_UTC_DATE, PT_UTC_TIME, PT_UTC_TIMESTAMP, PT_VERSION, PT_WEEKDAY, PT_WEEKF, PT_WIDTH_BUCKET, and PT_YEARF.
Referenced by pt_coerce_expr_arguments(), pt_coerce_expression_argument(), pt_eval_expr_type(), pt_expr_get_return_type(), pt_infer_common_type(), and qo_reduce_equality_terms().
|
static |
Definition at line 6310 of file type_checking.c.
References PT_TYPE_BIGINT, PT_TYPE_BIT, PT_TYPE_CHAR, PT_TYPE_DOUBLE, PT_TYPE_FLOAT, PT_TYPE_INTEGER, PT_TYPE_LOGICAL, PT_TYPE_MONETARY, PT_TYPE_MULTISET, PT_TYPE_NCHAR, PT_TYPE_NUMERIC, PT_TYPE_OBJECT, PT_TYPE_SEQUENCE, PT_TYPE_SET, PT_TYPE_SMALLINT, PT_TYPE_VARBIT, PT_TYPE_VARCHAR, and PT_TYPE_VARNCHAR.
Referenced by pt_coerce_expr_arguments(), and pt_eval_expr_type().
PT_OP_TYPE pt_negate_op | ( | PT_OP_TYPE | op | ) |
Definition at line 21155 of file type_checking.c.
References PT_BETWEEN, PT_EQ, PT_EQ_ALL, PT_EQ_SOME, PT_GE, PT_GE_ALL, PT_GE_SOME, PT_GT, PT_GT_ALL, PT_GT_SOME, PT_IS, PT_IS_IN, PT_IS_NOT, PT_IS_NOT_IN, PT_IS_NOT_NULL, PT_IS_NULL, PT_LE, PT_LE_ALL, PT_LE_SOME, PT_LIKE, PT_LT, PT_LT_ALL, PT_LT_SOME, PT_NE, PT_NE_ALL, PT_NE_SOME, PT_NOT_BETWEEN, PT_NOT_LIKE, PT_NOT_RLIKE, PT_NOT_RLIKE_BINARY, PT_RLIKE, PT_RLIKE_BINARY, PT_SETEQ, and PT_SETNEQ.
Referenced by pt_and_or_form(), and pt_negate_expr().
|
static |
Definition at line 23898 of file type_checking.c.
References pt_expr_info::arg1, assert, pt_statement_info::data_type, parser_node::data_type, pt_statement_info::expr, parser_node::info, INTL_CAN_COERCE_CS, MSGCAT_SEMANTIC_COERCE_UNSUPPORTED, MSGCAT_SEMANTIC_OUT_OF_MEMORY, MSGCAT_SET_PARSER_SEMANTIC, NULL, pt_expr_info::op, parser_copy_tree(), parser_new_node(), PT_ERRORm, PT_ERRORmf2, PT_EXPR, PT_HAS_COLLATION, pt_short_print(), pt_show_type_enum(), PT_TO_ENUMERATION_VALUE, PT_TYPE_ENUMERATION, parser_node::type_enum, and pt_data_type_info::units.
Referenced by pt_fix_enumeration_comparison(), and pt_select_list_to_enumeration_expr().
void pt_preset_hostvar | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | hv_node | ||
) |
Definition at line 8484 of file type_checking.c.
References parser_node::expected_domain, pt_statement_info::host_var, parser_context::host_var_count, parser_context::host_var_expected_domains, pt_host_var_info::index, parser_node::info, and pt_hv_consistent_data_type_with_domain().
Referenced by pt_assignment_compatible(), pt_coerce_expression_argument(), pt_coerce_node_collation(), pt_coerce_range_expr_arguments(), pt_eval_expr_type(), pt_eval_type(), and pt_wrap_collection_with_cast_op().
|
static |
Definition at line 6665 of file type_checking.c.
References assert, db_error_string(), db_get_set(), error(), NULL, PT_ERRORc, pt_has_error, set_intersection(), and set_make_collection().
Referenced by pt_evaluate_db_value_expr().
|
static |
Definition at line 6560 of file type_checking.c.
References assert, parser_node::data_type, NULL, parser_append_node(), parser_copy_tree_list(), and parser_free_tree().
Referenced by pt_coerce_expr_arguments(), and pt_eval_expr_type().
|
static |
Definition at line 23940 of file type_checking.c.
References pt_union_info::arg1, pt_union_info::arg2, parser_node::info, pt_select_info::list, parser_node::next, parser_node::node_type, NULL, PT_DIFFERENCE, PT_INTERSECTION, PT_IS_QUERY_NODE_TYPE, pt_node_to_enumeration_expr(), PT_SELECT, PT_TYPE_ENUMERATION, PT_UNION, pt_query_info::q, pt_statement_info::query, pt_query_info::select, and pt_query_info::union_.
Referenced by pt_fix_enumeration_comparison().
PT_NODE* pt_semantic_type | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | tree, | ||
SEMANTIC_CHK_INFO * | sc_info_ptr | ||
) |
Definition at line 20178 of file type_checking.c.
References NULL, parser_walk_tree(), pt_eval_type(), pt_eval_type_pre(), pt_fold_constants_post(), pt_fold_constants_pre(), and pt_has_error.
Referenced by check_default_on_update_clause(), db_execute_and_keep_statement_local(), do_alter_one_clause_with_template(), do_recreate_filter_index_constr(), do_recreate_func_index_constr(), get_att_default_from_def(), insert_rewrite_names_in_value_clauses(), meth_push_conjuncts(), mq_translate_helper(), mq_translate_insert(), mq_translate_merge(), pt_bind_names_in_cte(), pt_bind_names_post(), pt_bind_scope(), pt_check_data_default(), pt_check_partitions(), pt_check_with_info(), pt_eval_type_pre(), pt_fix_first_term_func_index_for_iss(), pt_invert(), pt_semantic_check_local(), pt_semantic_quick_check_node(), qo_check_condition_yields_null(), and qo_rewrite_like_for_index_scan().
|
static |
Definition at line 20230 of file type_checking.c.
References pt_data_type_info::collation_id, pt_statement_info::data_type, pt_data_type_info::dec_precision, ER_GENERIC_ERROR, error(), parser_node::info, INTL_CODESET_RAW_BITS, LANG_SYS_CODESET, LANG_SYS_COLLATION, NO_ERROR, NULL, parser_new_node(), pt_data_type_info::precision, PT_DATA_TYPE, PT_INTERNAL_ERROR, PT_TYPE_BIT, PT_TYPE_CHAR, PT_TYPE_NCHAR, PT_TYPE_NUMERIC, PT_TYPE_VARBIT, PT_TYPE_VARCHAR, PT_TYPE_VARNCHAR, TP_FLOATING_PRECISION_VALUE, parser_node::type_enum, and pt_data_type_info::units.
Referenced by pt_coerce_value_internal().
Definition at line 8502 of file type_checking.c.
References parser_node::expected_domain, NULL, parser_node::or_next, PT_TYPE_MAYBE, and parser_node::type_enum.
Referenced by pt_assignment_compatible().
|
static |
Definition at line 7078 of file type_checking.c.
References pt_select_info::after_cb_filter, parser_node::alias_print, pt_query_info::all_distinct, pt_spec_info::as_attr_list, parser_node::column_number, pt_select_info::connect_by, pt_query_info::correlation_level, pt_spec_info::derived_table, pt_spec_info::derived_table_type, EXCLUDE_HIDDEN_COLUMNS, pt_query_info::flag, parser_node::flag, pt_select_info::from, pt_select_info::group_by, pt_query_info::has_outer_spec, pt_select_info::having, pt_select_info::hint, i, pt_spec_info::id, parser_node::info, parser_node::is_hidden_column, pt_query_info::is_insert_select, pt_query_info::is_sort_spec, parser_node::line_number, pt_select_info::list, pt_value_info::location, MSGCAT_SEMANTIC_OUT_OF_MEMORY, MSGCAT_SET_PARSER_SEMANTIC, parser_node::next, parser_node::node_type, NULL, pt_query_info::order_by, pt_query_info::orderby_for, parser_append_node(), parser_free_tree(), parser_new_node(), PT_ALL, PT_ERRORm, PT_HINT_NONE, PT_IS_SET_EXPR, pt_length_of_select_list(), pt_name(), PT_NAME_GENERATED_DERIVED_SPEC, PT_NAME_INFO_SET_FLAG, PT_SELECT, PT_SPEC, PT_TYPE_NULL, PT_TYPE_SEQUENCE, PT_VALUE, pt_query_info::q, pt_statement_info::query, pt_spec_info::range_var, pt_query_info::select, pt_statement_info::spec, pt_select_info::start_with, parser_node::type_enum, pt_select_info::using_index, and pt_statement_info::value.
Referenced by pt_eval_type().
PT_TYPE_ENUM pt_to_variable_size_type | ( | PT_TYPE_ENUM | type_enum | ) |
Definition at line 24915 of file type_checking.c.
References PT_TYPE_BIT, PT_TYPE_CHAR, PT_TYPE_NCHAR, PT_TYPE_VARBIT, PT_TYPE_VARCHAR, and PT_TYPE_VARNCHAR.
Referenced by pt_eval_expr_type(), and func_type::Node::set_return_type().
int pt_type_generic_func | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | node | ||
) |
Definition at line 20698 of file type_checking.c.
References pt_function_info::arg_list, pt_value_info::data_value, pt_statement_info::function, pt_function_info::function_type, pt_function_info::generic_name, pt_data_value::i, parser_node::info, parser_node::node_type, NULL, parser_append_node(), parser_new_node(), PT_FUNCTION, PT_GENERIC, PT_TYPE_INTEGER, PT_VALUE, parser_node::type_enum, and pt_statement_info::value.
Referenced by pt_bind_names().
|
static |
Definition at line 6598 of file type_checking.c.
References assert, db_error_string(), db_get_set(), error(), NULL, PT_ERRORc, pt_has_error, set_make_collection(), and set_union().
Referenced by pt_evaluate_db_value_expr().
|
static |
Definition at line 11274 of file type_checking.c.
References assert, pt_data_value::b, pt_data_value::bigint, pt_data_type_info::collation_flag, pt_data_type_info::collation_id, pt_statement_info::data_type, parser_node::data_type, pt_value_info::data_value, DB_DEFAULT_NUMERIC_DIVISION_SCALE, DB_DEFAULT_NUMERIC_PRECISION, DB_DEFAULT_NUMERIC_SCALE, DB_MAX_BIT_PRECISION, DB_MAX_CHAR_PRECISION, DB_MAX_NCHAR_PRECISION, DB_MAX_NUMERIC_PRECISION, DB_MAX_VARBIT_PRECISION, DB_MAX_VARCHAR_PRECISION, DB_MAX_VARNCHAR_PRECISION, pt_data_type_info::dec_precision, ER_OUT_OF_VIRTUAL_MEMORY, F_ELT, F_INSERT_SUBSTRING, F_JSON_ARRAY, F_JSON_ARRAY_APPEND, F_JSON_ARRAY_INSERT, F_JSON_CONTAINS_PATH, F_JSON_EXTRACT, F_JSON_GET_ALL_PATHS, F_JSON_INSERT, F_JSON_KEYS, F_JSON_MERGE, F_JSON_MERGE_PATCH, F_JSON_OBJECT, F_JSON_REMOVE, F_JSON_REPLACE, F_JSON_SEARCH, F_JSON_SET, pt_statement_info::function, pt_function_info::function_type, pt_data_value::i, parser_node::info, LANG_GET_BINARY_COLLATION, LANG_SYS_CODESET, LANG_SYS_COLLATION, NO_ERROR, parser_node::node_type, NULL, parser_copy_tree_list(), parser_new_node(), pt_data_type_info::precision, prm_get_bool_value(), PRM_ID_COMPAT_NUMERIC_DIVISION_SCALE, PT_ABS, PT_ADDDATE, PT_ADDTIME, PT_AES_DECRYPT, PT_AES_ENCRYPT, PT_BIN, PT_BIT_AND, PT_BIT_COUNT, 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_CASE, PT_CEIL, PT_CHAR_TO_BLOB, PT_CHAR_TO_CLOB, PT_CHARSET, PT_CHR, PT_CLOB_FROM_FILE, PT_CLOB_LENGTH, PT_CLOB_TO_CHAR, PT_COALESCE, PT_COERCIBILITY, PT_COLLATION, PT_CONCAT, PT_CONCAT_WS, PT_CONNECT_BY_ROOT, PT_CONV, PT_CRC32, PT_CURRENT_USER, PT_DATA_TYPE, PT_DATABASE, PT_DATE_ADD, PT_DATE_FORMAT, PT_DATE_SUB, PT_DATEF, PT_DECODE, PT_DEFAULTF, PT_DISK_SIZE, PT_DIV, PT_DIVIDE, PT_EXEC_STATS, PT_FIELD, PT_FLOOR, PT_FORMAT, PT_FROM_BASE64, PT_FROM_UNIXTIME, PT_FUNCTION_HOLDER, PT_GREATEST, PT_HAS_COLLATION, PT_HEX, PT_IF, PT_IFNULL, PT_INDEX_PREFIX, PT_INET_NTOA, PT_IS_HOSTVAR, pt_is_op_with_forced_common_type(), PT_IS_STRING_TYPE, PT_LAST_INSERT_ID, PT_LEAST, PT_LEFT, PT_LIST_DBS, PT_LOWER, PT_LPAD, PT_LTRIM, pt_make_prim_data_type(), pt_make_prim_data_type_fortonum(), PT_MD5, PT_MID, PT_MINUS, PT_MOD, PT_MODULUS, PT_NODE_IS_SESSION_VARIABLE, PT_NULLIF, PT_NVL, PT_NVL2, PT_PLUS, PT_POWER, PT_PRIOR, PT_QPRIOR, PT_REPEAT, PT_REPLACE, PT_REVERSE, PT_RIGHT, PT_ROUND, PT_RPAD, PT_RTRIM, PT_SCHEMA, PT_SCHEMA_DEF, PT_SHA_ONE, PT_SHA_TWO, PT_SPACE, PT_STRCAT, PT_SUBDATE, PT_SUBSTRING, PT_SUBSTRING_INDEX, PT_SYS_CONNECT_BY_PATH, PT_SYS_GUID, PT_TIME_FORMAT, PT_TIMEF, PT_TIMES, PT_TO_BASE64, PT_TO_CHAR, PT_TO_NUMBER, pt_to_regu_resolve_domain(), PT_TRACE_STATS, PT_TRANSLATE, PT_TRIM, PT_TRUNC, PT_TYPE_BIGINT, PT_TYPE_BIT, PT_TYPE_BLOB, PT_TYPE_CHAR, PT_TYPE_CLOB, PT_TYPE_ENUMERATION, PT_TYPE_INTEGER, PT_TYPE_MAYBE, PT_TYPE_NCHAR, PT_TYPE_NULL, PT_TYPE_NUMERIC, PT_TYPE_SMALLINT, PT_TYPE_VARBIT, PT_TYPE_VARCHAR, PT_TYPE_VARNCHAR, PT_TYPEOF, PT_TZ_OFFSET, PT_UNARY_MINUS, PT_UNIX_TIMESTAMP, PT_UPPER, PT_USER, PT_VALUE, PT_VERSION, TP_BIGINT_PRECISION, TP_DOMAIN_COLL_LEAVE, TP_DOMAIN_COLL_NORMAL, TP_FLOATING_PRECISION_VALUE, TP_INTEGER_PRECISION, TP_SMALLINT_PRECISION, parser_node::type_enum, pt_data_type_info::units, and pt_statement_info::value.
Referenced by pt_apply_expressions_definition(), and pt_eval_expr_type().
|
static |
Definition at line 24862 of file type_checking.c.
References tp_domain::codeset, tp_domain::collation_flag, 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, pt_data_type_info::dec_precision, parser_node::expected_domain, parser_node::info, parser_node::node_type, NULL, parser_free_node(), tp_domain::precision, pt_data_type_info::precision, pt_db_to_type_enum(), pt_domain_to_data_type(), PT_HOST_VAR, PT_IS_CHAR_STRING_TYPE, PT_TYPE_NUMERIC, tp_domain::scale, TP_DOMAIN_TYPE, TP_IS_CHAR_TYPE, parser_node::type_enum, and pt_data_type_info::units.
Referenced by pt_hv_consistent_data_type_with_domain().
PT_NODE* pt_where_type | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | where | ||
) |
Definition at line 6701 of file type_checking.c.
References parser_node::column_number, pt_value_info::data_value, pt_statement_info::expr, pt_data_value::i, parser_node::info, parser_node::line_number, pt_expr_info::location, pt_value_info::location, MSGCAT_SEMANTIC_WANT_LOGICAL_WHERE, MSGCAT_SET_PARSER_SEMANTIC, parser_node::next, parser_node::node_type, NULL, parser_node::or_next, parser_free_tree(), parser_new_node(), PT_ERRORm, PT_EXPR, pt_has_error, PT_HOST_VAR, PT_INTERNAL_ERROR, PT_TYPE_LOGICAL, PT_TYPE_MAYBE, PT_TYPE_NA, PT_TYPE_NULL, PT_VALUE, pt_value_to_db(), parser_node::type_enum, and pt_statement_info::value.
Referenced by meth_push_conjuncts(), pt_eval_type(), and pt_where_type_keep_true().
PT_NODE* pt_where_type_keep_true | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | where | ||
) |
Definition at line 6895 of file type_checking.c.
References pt_value_info::data_value, pt_data_value::i, parser_node::info, NULL, parser_new_node(), PT_INTERNAL_ERROR, PT_TYPE_LOGICAL, PT_VALUE, pt_value_to_db(), pt_where_type(), parser_node::type_enum, and pt_statement_info::value.
Referenced by pt_eval_type().
PT_NODE* pt_wrap_collection_with_cast_op | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | arg, | ||
PT_TYPE_ENUM | set_type, | ||
PT_NODE * | set_data, | ||
bool | for_collation | ||
) |
Definition at line 8268 of file type_checking.c.
References parser_node::alias_print, pt_expr_info::arg1, pt_function_info::arg_list, 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, parser_node::expected_domain, pt_statement_info::expr, F_MULTISET, F_SEQUENCE, F_SET, parser_node::flag, pt_statement_info::function, pt_function_info::function_type, parser_node::info, parser_node::is_hidden_column, parser_node::line_number, MSGCAT_SEMANTIC_OUT_OF_MEMORY, MSGCAT_SET_PARSER_SEMANTIC, parser_node::next, parser_node::node_type, NULL, pt_expr_info::op, parser_copy_tree_list(), parser_new_node(), prm_get_bool_value(), PRM_ID_RETURN_NULL_ON_FUNCTION_ERRORS, PT_CAST, PT_DATA_TYPE, pt_data_type_to_db_domain(), PT_ERRORm, PT_EXPR, PT_EXPR_INFO_CAST_NOFAIL, PT_EXPR_INFO_CAST_SHOULD_FOLD, PT_EXPR_INFO_SET_FLAG, PT_FUNCTION, PT_HAS_COLLATION, PT_HOST_VAR, PT_IS_NUMERIC_TYPE, pt_preset_hostvar(), PT_TYPE_MAYBE, pt_wrap_with_cast_op(), and parser_node::type_enum.
Referenced by pt_coerce_expression_argument(), pt_coerce_node_collation(), and pt_coerce_range_expr_arguments().
|
static |
Definition at line 21385 of file type_checking.c.
References assert, parser_node::expected_domain, pt_statement_info::expr, pr_type::id, parser_node::info, NULL, pt_expr_info::op, tp_domain::precision, pt_db_to_type_enum(), PT_INTERNAL_ERROR, pt_is_op_hv_late_bind(), PT_TYPE_ENUMERATION, PT_TYPE_MAYBE, pt_wrap_with_cast_op(), tp_domain::scale, tp_domain::type, and parser_node::type_enum.
Referenced by pt_eval_expr_type().
int pt_wrap_select_list_with_cast_op | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | query, | ||
PT_TYPE_ENUM | new_type, | ||
int | p, | ||
int | s, | ||
PT_NODE * | data_type, | ||
bool | force_wrap | ||
) |
Definition at line 8133 of file type_checking.c.
References pt_union_info::arg1, pt_union_info::arg2, ER_FAILED, err, parser_node::info, pt_node_list_info::list, pt_select_info::list, parser_node::next, NO_ERROR, pt_statement_info::node_list, parser_node::node_type, NULL, PT_DIFFERENCE, pt_get_select_list(), PT_INTERSECTION, PT_IS_VALUE_QUERY, PT_SELECT, PT_SET_VALUE_QUERY, PT_UNION, pt_wrap_with_cast_op(), pt_query_info::q, pt_statement_info::query, pt_query_info::select, and pt_query_info::union_.
Referenced by pt_coerce_node_collation(), and pt_coerce_range_expr_arguments().
|
static |
Definition at line 24396 of file type_checking.c.
References assert, parser_node::data_type, parser_node::expected_domain, parser_node::next, NULL, pt_db_to_type_enum(), PT_IS_CHAR_STRING_TYPE, PT_IS_COLLECTION_TYPE, PT_IS_NATIONAL_CHAR_STRING_TYPE, PT_TYPE_NONE, PT_TYPE_VARCHAR, PT_TYPE_VARNCHAR, tp_domain::setdomain, TP_DOMAIN_TYPE, TP_IS_CHAR_TYPE, and parser_node::type_enum.
Referenced by pt_check_expr_collation().
PT_NODE* pt_wrap_with_cast_op | ( | PARSER_CONTEXT * | parser, |
PT_NODE * | arg, | ||
PT_TYPE_ENUM | new_type, | ||
int | p, | ||
int | s, | ||
PT_NODE * | desired_dt | ||
) |
Definition at line 8389 of file type_checking.c.
References parser_node::alias_print, pt_expr_info::arg1, assert, pt_expr_info::cast_type, pt_data_type_info::collation_flag, 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_statement_info::expr, parser_node::flag, parser_node::info, parser_node::is_hidden_column, LANG_SYS_CODESET, LANG_SYS_COLLATION, parser_node::line_number, parser_node::next, NULL, pt_expr_info::op, p, parser_copy_tree_list(), parser_new_node(), pt_data_type_info::precision, PT_CAST, PT_DATA_TYPE, PT_EXPR, PT_EXPR_INFO_CAST_SHOULD_FOLD, PT_EXPR_INFO_CAST_WRAP, PT_EXPR_INFO_SET_FLAG, PT_HAS_COLLATION, PT_IS_COLLECTION_TYPE, PT_TYPE_MAYBE, TP_DOMAIN_COLL_LEAVE, parser_node::type_enum, and pt_data_type_info::units.
Referenced by func_type::Node::apply_argument(), pt_assignment_compatible(), pt_coerce_expression_argument(), pt_coerce_node_collation(), pt_eval_expr_type(), pt_eval_function_type_new(), pt_eval_function_type_old(), pt_wrap_collection_with_cast_op(), pt_wrap_expr_w_exp_dom_cast(), pt_wrap_select_list_with_cast_op(), and qo_reduce_equality_terms().
|
static |
Definition at line 145 of file type_checking.c.