CUBRID Engine
latest
|
#include <func_type.hpp>
Public Member Functions | |
Node (parser_context *parser, parser_node *node) | |
parser_node * | get_arg (size_t index) |
PT_NODE * | type_checking () |
Protected Member Functions | |
bool | preprocess () |
const func_signature * | get_signature (const func_all_signatures &signatures) |
void | set_return_type (const func_signature &signature) |
bool | apply_signature (const func_signature &signature) |
parser_node * | apply_argument (parser_node *prev, parser_node *arg, const argument_resolve &arg_res) |
const char * | get_types (const func_all_signatures &signatures, size_t index, string_buffer &sb) |
bool | check_arg_compat (const pt_arg_type &arg_signature, const PT_NODE *arg_node, signature_compatibility &compat, argument_resolve &resolved_type, bool args_to_utf8) |
void | invalid_arg_error (const pt_arg_type &arg_sgn, const PT_NODE *arg_node, const func_signature &func_sgn) |
void | invalid_coll_error (const func_signature &func_sgn) |
void | invalid_arg_count_error (std::size_t arg_count, const func_signature &func_sgn) |
Private Attributes | |
parser_context * | m_parser |
parser_node * | m_node |
signature_compatibility | m_best_signature |
Definition at line 82 of file func_type.hpp.
|
inline |
Definition at line 90 of file func_type.hpp.
References pt_are_equivalent_types(), and pt_get_equivalent_type().
|
protected |
Definition at line 762 of file func_type.cpp.
References pt_function_info::arg_list, assert, pt_coll_infer::can_force_cs, pt_coll_infer::coll_id, pt_statement_info::function, parser_node::info, func_type::argument_resolve::m_check_coll_infer, func_type::argument_resolve::m_coll_infer, func_type::argument_resolve::m_type, parser_node::next, NULL, pt_coerce_node_collation(), PT_TYPE_NONE, pt_wrap_with_cast_op(), TP_FLOATING_PRECISION_VALUE, and parser_node::type_enum.
|
protected |
Definition at line 1146 of file func_type.cpp.
References pt_function_info::arg_list, assert, func_signature::fix, pt_statement_info::function, parser_node::info, parser_node::next, NULL, and func_signature::rep.
|
protected |
Definition at line 1201 of file func_type.cpp.
References assert, pt_coll_infer::can_force_cs, func_type::can_signature_have_collation(), func_type::cmp_types_castable(), func_type::cmp_types_equivalent(), pt_coll_infer::codeset, pt_coll_infer::coerc_level, func_type::COERCIBLE, pt_coll_infer::coll_id, func_type::INCOMPATIBLE, INTL_CODESET_UTF8, func_type::is_type_with_collation(), LANG_COLL_UTF8_BINARY, func_type::argument_resolve::m_check_coll_infer, func_type::argument_resolve::m_coll_infer, func_type::signature_compatibility::m_collation_action, func_type::signature_compatibility::m_common_collation, func_type::signature_compatibility::m_compat, func_type::signature_compatibility::m_signature, func_type::argument_resolve::m_type, NO_ERROR, NULL, PT_COLLATION_FULLY_COERC, pt_common_collation(), pt_get_collation_info(), pt_get_equivalent_type(), PT_TYPE_MAYBE, PT_TYPE_NONE, TP_DOMAIN_COLL_NORMAL, and parser_node::type_enum.
parser_node * func_type::Node::get_arg | ( | size_t | index | ) |
Definition at line 749 of file func_type.cpp.
References NULL.
|
protected |
Definition at line 911 of file func_type.cpp.
References pt_function_info::arg_list, func_type::COERCIBLE, func_type::EQUIVALENT, pt_statement_info::function, func_type::INCOMPATIBLE, pt_arg_type::INDEX, parser_node::info, func_type::signature_compatibility::m_args_resolve, func_type::signature_compatibility::m_collation_action, func_type::signature_compatibility::m_compat, func_type::signature_compatibility::m_signature, parser_node::next, NULL, pt_has_error, pt_length_of_list(), pt_reset_error(), func_type::sig_has_json_args(), and TP_DOMAIN_COLL_LEAVE.
|
protected |
Definition at line 886 of file func_type.cpp.
References string_buffer::get_buffer(), i, and pt_arg_type_to_string_buffer().
|
protected |
Definition at line 1339 of file func_type.cpp.
References string_buffer::get_buffer(), MSGCAT_SEMANTIC_INCOMPATIBLE_SIGNATURE, MSGCAT_SEMANTIC_WRONG_ARGS_COUNT, MSGCAT_SET_PARSER_SEMANTIC, pt_cat_error, and func_signature::to_string_buffer().
|
protected |
Definition at line 1312 of file func_type.cpp.
References string_buffer::get_buffer(), MSGCAT_SEMANTIC_INCOMPATIBLE_ARGUMENT_TYPE, MSGCAT_SEMANTIC_INCOMPATIBLE_SIGNATURE, MSGCAT_SET_PARSER_SEMANTIC, pt_arg_type_to_string_buffer(), pt_cat_error, pt_show_type_enum(), func_signature::to_string_buffer(), and parser_node::type_enum.
|
protected |
Definition at line 1327 of file func_type.cpp.
References fcode_get_lowercase_name(), string_buffer::get_buffer(), MSGCAT_SEMANTIC_COLLATION_OP_ERROR, MSGCAT_SEMANTIC_INCOMPATIBLE_SIGNATURE, MSGCAT_SET_PARSER_SEMANTIC, pt_cat_error, and func_signature::to_string_buffer().
|
protected |
Definition at line 848 of file func_type.cpp.
References F_CLASS_OF, F_GENERIC, fcode_get_lowercase_name(), if(), MSGCAT_SEMANTIC_OP_NOT_DEFINED_ON, MSGCAT_SET_PARSER_SEMANTIC, NULL, pt_cat_error, PT_GROUP_CONCAT, PT_IS_NATIONAL_CHAR_STRING_TYPE, PT_IS_SIMPLE_CHAR_STRING_TYPE, pt_show_type_enum(), PT_TYPE_NONE, and PT_TYPE_VARCHAR.
|
protected |
Definition at line 1011 of file func_type.cpp.
References pt_function_info::arg_list, assert, pt_coll_infer::coll_id, parser_node::data_type, DB_MAX_NUMERIC_PRECISION, DB_MAX_VARCHAR_PRECISION, DB_MAX_VARNCHAR_PRECISION, parser_node::expected_domain, F_ELT, F_INSERT_SUBSTRING, F_MULTISET, F_SEQUENCE, F_SET, F_TABLE_MULTISET, F_TABLE_SEQUENCE, F_TABLE_SET, pt_statement_info::function, pt_arg_type::GENERIC, pr_type::id, pt_arg_type::INDEX, pt_arg_type::pt_arg_type_val::index, parser_node::info, func_type::is_type_with_collation(), pt_arg_type::NORMAL, NULL, parser_copy_tree_list(), pt_add_type_to_set(), pt_coerce_node_collation(), pt_db_to_type_enum(), PT_FIRST_VALUE, pt_get_collation_info(), pt_get_select_list(), PT_GROUP_CONCAT, PT_HAS_COLLATION, PT_IS_STRING_TYPE, PT_LAG, PT_LAST_VALUE, PT_LEAD, pt_make_prim_data_type(), PT_MAX, PT_MIN, PT_NTH_VALUE, PT_SUM, pt_to_variable_size_type(), PT_TYPE_MAYBE, PT_TYPE_NONE, PT_TYPE_NUMERIC, PT_TYPE_VARCHAR, PT_TYPE_VARNCHAR, func_signature::ret, TP_DOMAIN_COLL_LEAVE, TP_FLOATING_PRECISION_VALUE, pt_arg_type::type, pt_arg_type::pt_arg_type_val::type, tp_domain::type, parser_node::type_enum, and pt_arg_type::val.
PT_NODE * func_type::Node::type_checking | ( | ) |
Definition at line 809 of file func_type.cpp.
References assert, fcode_get_uppercase_name(), get_signatures(), MSGCAT_SEMANTIC_NO_SIGNATURES, MSGCAT_SEMANTIC_NO_VALID_FUNCTION_SIGNATURE, MSGCAT_SET_PARSER_SEMANTIC, NULL, pt_cat_error, and PT_TYPE_NA.
Referenced by pt_eval_function_type_new().
|
private |
Definition at line 87 of file func_type.hpp.
|
private |
Definition at line 86 of file func_type.hpp.
|
private |
Definition at line 85 of file func_type.hpp.