CUBRID Engine  latest
parse_dbi.c File Reference
#include "config.h"
#include <assert.h>
#include <stdarg.h>
#include <ctype.h>
#include "porting.h"
#include "error_manager.h"
#include "parser.h"
#include "xasl_generation.h"
#include "parser_message.h"
#include "memory_alloc.h"
#include "language_support.h"
#include "db.h"
#include "schema_manager.h"
#include "cnv.h"
#include "string_opfunc.h"
#include "set_object.h"
#include "intl_support.h"
#include "virtual_object.h"
#include "object_primitive.h"
#include "object_template.h"
#include "db_json.hpp"
#include "dbtype.h"

Go to the source code of this file.

Macros

#define SET_PARSER_ERROR_AND_FREE_NODE(parser, result, default_msg_id)
 

Functions

static PT_NODEpt_get_object_data_type (PARSER_CONTEXT *parser, const DB_VALUE *val)
 
static PT_NODEpt_bind_helper (PARSER_CONTEXT *parser, PT_NODE *node, DB_VALUE *val, int *data_type_added)
 
static PT_NODEpt_bind_set_type (PARSER_CONTEXT *parser, PT_NODE *node, DB_VALUE *val, int *data_type_added)
 
static PT_NODEpt_set_elements_to_value (PARSER_CONTEXT *parser, const DB_VALUE *val)
 
static int pt_get_enumeration_from_data_type (PARSER_CONTEXT *parser, PT_NODE *dt, DB_ENUMERATION *enumeration)
 
MISC_OPERAND pt_misc_to_qp_misc_operand (PT_MISC_TYPE misc_specifier)
 
bool pt_is_same_enum_data_type (PT_NODE *dt1, PT_NODE *dt2)
 
void pt_add_type_to_set (PARSER_CONTEXT *parser, const PT_NODE *typs, PT_NODE **set)
 
PT_NODEpt_sm_attribute_default_value_to_node (PARSER_CONTEXT *parser, const SM_ATTRIBUTE *sm_attr)
 
PT_NODEpt_dbval_to_value (PARSER_CONTEXT *parser, const DB_VALUE *val)
 
DB_VALUEpt_seq_value_to_db (PARSER_CONTEXT *parser, PT_NODE *values, DB_VALUE *db_value, PT_NODE **el_types)
 
DB_VALUEpt_set_value_to_db (PARSER_CONTEXT *parser, PT_NODE **values, DB_VALUE *db_value, PT_NODE **el_types)
 
DB_VALUEpt_value_to_db (PARSER_CONTEXT *parser, PT_NODE *value)
 
void pt_data_type_init_value (const PT_NODE *node, DB_VALUE *value_out)
 
DB_DOMAINpt_string_to_db_domain (const char *s, const char *class_name)
 
const char * pt_type_enum_to_db_domain_name (const PT_TYPE_ENUM t)
 
DB_DOMAINpt_type_enum_to_db_domain (const PT_TYPE_ENUM t)
 
const char * pt_data_type_to_db_domain_name (const PT_NODE *dt)
 
DB_DOMAINpt_data_type_to_db_domain (PARSER_CONTEXT *parser, PT_NODE *dt, const char *class_name)
 
DB_DOMAINpt_node_data_type_to_db_domain (PARSER_CONTEXT *parser, PT_NODE *dt, PT_TYPE_ENUM type)
 
const char * pt_node_to_db_domain_name (PT_NODE *node)
 
DB_DOMAINpt_node_to_db_domain (PARSER_CONTEXT *parser, PT_NODE *node, const char *class_name)
 
DB_TYPE pt_type_enum_to_db (const PT_TYPE_ENUM t)
 
DB_TYPE pt_node_to_db_type (PT_NODE *node)
 
PT_NODEpt_sort_in_desc_order (PT_NODE *vlist)
 
DB_AUTH pt_auth_to_db_auth (const PT_NODE *auth)
 
PT_TYPE_ENUM pt_db_to_type_enum (const DB_TYPE t)
 
CUBRID_STMT_TYPE pt_node_to_cmd_type (PT_NODE *node)
 
PT_NODEpt_bind_type_from_dbval (PARSER_CONTEXT *parser, PT_NODE *node, DB_VALUE *val)
 
void pt_set_host_variables (PARSER_CONTEXT *parser, int count, DB_VALUE *values)
 
DB_VALUEpt_host_var_db_value (PARSER_CONTEXT *parser, PT_NODE *hv)
 
DB_VALUEpt_db_value_initialize (PARSER_CONTEXT *parser, PT_NODE *value, DB_VALUE *db_value, int *more_type_info_needed)
 
int db_json_val_from_str (const char *raw_str, const int str_size, DB_VALUE *json_val)
 

Macro Definition Documentation

#define SET_PARSER_ERROR_AND_FREE_NODE (   parser,
  result,
  default_msg_id 
)
Value:
do { \
{ \
{ \
PT_ERRORc (parser, result, er_msg()); \
} \
{ \
default_msg_id); \
assert (false); \
} \
} \
result = NULL; \
} while (0)
#define NO_ERROR
Definition: error_code.h:46
#define PT_ERRORm(parser, node, setNo, msgNo)
Definition: parse_tree.h:63
int er_errid(void)
#define assert(x)
#define MSGCAT_SET_PARSER_RUNTIME
SP_PARSER_CTX * parser
#define NULL
Definition: freelistheap.h:34
const char * er_msg(void)
if(extra_options)
Definition: dynamic_load.c:958
#define PT_ERRORc(parser, node, msg)
Definition: parse_tree.h:55
void parser_free_node(const PARSER_CONTEXT *parser, PT_NODE *node)
Definition: parse_tree.c:869
else
#define pt_has_error(parser)
Definition: parser.h:507

Definition at line 55 of file parse_dbi.c.

Referenced by pt_dbval_to_value().

Function Documentation

int db_json_val_from_str ( const char *  raw_str,
const int  str_size,
DB_VALUE json_val 
)

Definition at line 3578 of file parse_dbi.c.

References assert, db_json_get_json_from_str(), db_make_json(), NO_ERROR, and NULL.

Referenced by netval_to_dbval().

Here is the caller graph for this function:

static PT_NODE * pt_bind_helper ( PARSER_CONTEXT parser,
PT_NODE node,
DB_VALUE val,
int *  data_type_added 
)
static

Definition at line 2790 of file parse_dbi.c.

References assert, pt_data_type_info::collation_id, db_value::data, pt_statement_info::data_type, parser_node::data_type, db_get_string_codeset(), db_get_string_collation(), DB_IS_NULL, db_json_get_json_body_from_document(), db_json_validate_json(), db_private_free, DB_TYPE_BIGINT, DB_TYPE_BIT, DB_TYPE_BLOB, DB_TYPE_CHAR, DB_TYPE_CLOB, DB_TYPE_DATE, DB_TYPE_DATETIME, DB_TYPE_DATETIMELTZ, DB_TYPE_DATETIMETZ, DB_TYPE_DB_VALUE, DB_TYPE_DOUBLE, DB_TYPE_ENUMERATION, DB_TYPE_ERROR, DB_TYPE_FLOAT, DB_TYPE_INTEGER, DB_TYPE_JSON, DB_TYPE_MONETARY, DB_TYPE_MULTISET, DB_TYPE_NCHAR, DB_TYPE_NULL, DB_TYPE_NUMERIC, DB_TYPE_OBJECT, DB_TYPE_OID, DB_TYPE_POINTER, DB_TYPE_SEQUENCE, DB_TYPE_SET, DB_TYPE_SHORT, DB_TYPE_SUB, 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_VALUE_DOMAIN_TYPE, db_value_get_monetary_currency(), DB_VALUE_PRECISION, DB_VALUE_SCALE, pt_data_type_info::dec_precision, db_json::document, parser_node::info, db_data::json, pt_data_type_info::json_schema, NO_ERROR, parser_node::node_type, NULL, parser_free_node(), parser_new_node(), pt_data_type_info::precision, pt_append_bytes(), pt_bind_set_type(), PT_DATA_TYPE, pt_db_to_type_enum(), pt_get_object_data_type(), PT_INTERNAL_ERROR, PT_TYPE_NONE, PT_TYPE_NULL, db_json::schema_raw, strlen, TP_IS_CHAR_TYPE, parser_node::type_enum, and pt_data_type_info::units.

Referenced by pt_bind_set_type(), and pt_bind_type_from_dbval().

Here is the caller graph for this function:

static PT_NODE * pt_bind_set_type ( PARSER_CONTEXT parser,
PT_NODE node,
DB_VALUE val,
int *  data_type_added 
)
static
PT_NODE* pt_bind_type_from_dbval ( PARSER_CONTEXT parser,
PT_NODE node,
DB_VALUE val 
)

Definition at line 3067 of file parse_dbi.c.

References pt_bind_helper().

Referenced by pt_bind_type_of_host_var(), and pt_value_to_db().

Here is the caller graph for this function:

DB_DOMAIN* pt_data_type_to_db_domain ( PARSER_CONTEXT parser,
PT_NODE dt,
const char *  class_name 
)

Definition at line 1805 of file parse_dbi.c.

References ARG_FILE_LINE, assert, ASSERT_ERROR, parser_varchar::bytes, tp_domain::class_mop, tp_domain::class_oid, tp_domain::codeset, tp_domain::collation_flag, pt_data_type_info::collation_flag, tp_domain::collation_id, db_enumeration::collation_id, pt_data_type_info::collation_id, db_enumeration::count, pt_statement_info::data_type, DB_DEFAULT_PRECISION, db_find_class(), db_json_load_validator(), DB_TYPE_BIGINT, DB_TYPE_BIT, DB_TYPE_BLOB, DB_TYPE_CHAR, DB_TYPE_CLOB, DB_TYPE_DATE, DB_TYPE_DATETIME, DB_TYPE_DATETIMELTZ, DB_TYPE_DATETIMETZ, DB_TYPE_DB_VALUE, DB_TYPE_DOUBLE, DB_TYPE_ELO, DB_TYPE_ENUMERATION, DB_TYPE_ERROR, DB_TYPE_FLOAT, DB_TYPE_INTEGER, DB_TYPE_JSON, DB_TYPE_MIDXKEY, DB_TYPE_MONETARY, DB_TYPE_MULTISET, DB_TYPE_NCHAR, DB_TYPE_NULL, DB_TYPE_NUMERIC, DB_TYPE_OBJECT, DB_TYPE_OID, DB_TYPE_POINTER, DB_TYPE_RESULTSET, DB_TYPE_SEQUENCE, DB_TYPE_SET, DB_TYPE_SHORT, DB_TYPE_SUB, DB_TYPE_TABLE, 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_TYPE_VOBJ, pt_data_type_info::dec_precision, DOM_SET_ENUM_ELEMENTS, DOM_SET_ENUM_ELEMS_COUNT, db_enumeration::elements, pt_data_type_info::entity, tp_domain::enumeration, er_set(), ER_SM_DOMAIN_NOT_A_CLASS, ER_WARNING_SEVERITY, parser_node::info, intl_identifier_casecmp(), pt_data_type_info::json_schema, tp_domain::json_validator, LANG_SYS_CODESET, LANG_SYS_COLLATION, pt_statement_info::name, NO_ERROR, parser_node::node_type, NULL, vid_oid::oid, db_object::oid_info, pt_name_info::original, tp_domain::precision, pt_data_type_info::precision, pt_get_enumeration_from_data_type(), PT_NAME, pt_node_to_db_domain(), pt_type_enum_to_db(), pt_type_enum_to_db_domain(), tp_domain::scale, tp_domain::self_ref, tp_domain_clear_enumeration(), TP_DOMAIN_COLL_ENFORCE, TP_DOMAIN_COLL_LEAVE, TP_DOMAIN_COLL_NORMAL, tp_domain_construct(), tp_domain_new(), TP_DOMAIN_SELF_REF, parser_node::type_enum, pt_data_type_info::units, and pt_data_type_info::virt_object.

Referenced by do_add_methods(), pt_assignment_compatible(), pt_check_enum_data_type(), pt_coerce_expression_argument(), pt_evaluate_db_value_expr(), pt_fix_enumeration_comparison(), pt_node_data_type_to_db_domain(), pt_node_to_db_domain(), pt_node_to_function_index(), pt_string_to_db_domain(), pt_wrap_collection_with_cast_op(), and pt_xasl_data_type_to_domain().

Here is the caller graph for this function:

PT_TYPE_ENUM pt_db_to_type_enum ( const DB_TYPE  t)

Definition at line 2595 of file parse_dbi.c.

References assert, DB_TYPE_BIGINT, DB_TYPE_BIT, DB_TYPE_BLOB, DB_TYPE_CHAR, DB_TYPE_CLOB, DB_TYPE_DATE, DB_TYPE_DATETIME, DB_TYPE_DATETIMELTZ, DB_TYPE_DATETIMETZ, DB_TYPE_DB_VALUE, DB_TYPE_DOUBLE, DB_TYPE_ENUMERATION, DB_TYPE_ERROR, DB_TYPE_FIRST, DB_TYPE_FLOAT, DB_TYPE_INTEGER, DB_TYPE_JSON, DB_TYPE_LAST, DB_TYPE_MIDXKEY, DB_TYPE_MONETARY, DB_TYPE_MULTISET, DB_TYPE_NCHAR, DB_TYPE_NUMERIC, DB_TYPE_OBJECT, DB_TYPE_OID, DB_TYPE_POINTER, DB_TYPE_RESULTSET, DB_TYPE_SEQUENCE, DB_TYPE_SET, DB_TYPE_SHORT, DB_TYPE_STRING, DB_TYPE_SUB, DB_TYPE_TABLE, DB_TYPE_TIME, DB_TYPE_TIMESTAMP, DB_TYPE_TIMESTAMPLTZ, DB_TYPE_TIMESTAMPTZ, DB_TYPE_UNKNOWN, DB_TYPE_VARBIT, DB_TYPE_VARIABLE, DB_TYPE_VARNCHAR, DB_TYPE_VOBJ, PT_TYPE_BIGINT, PT_TYPE_BIT, PT_TYPE_BLOB, PT_TYPE_CHAR, PT_TYPE_CLOB, PT_TYPE_DATE, PT_TYPE_DATETIME, PT_TYPE_DATETIMELTZ, PT_TYPE_DATETIMETZ, PT_TYPE_DOUBLE, PT_TYPE_ENUMERATION, PT_TYPE_FLOAT, PT_TYPE_INTEGER, PT_TYPE_JSON, PT_TYPE_MAYBE, PT_TYPE_MIDXKEY, PT_TYPE_MONETARY, PT_TYPE_MULTISET, PT_TYPE_NCHAR, PT_TYPE_NONE, PT_TYPE_NUMERIC, PT_TYPE_OBJECT, PT_TYPE_RESULTSET, 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 do_add_attribute_from_select_column(), do_alter_one_clause_with_template(), do_cast_host_variables_to_expected_domain(), generate_natural_join_attrs_from_db_attrs(), pt_add_type_to_set(), pt_bind_helper(), pt_bind_names_post(), pt_bind_reserved_name(), pt_check_partitions(), pt_dbval_to_value(), pt_domain_to_data_type(), pt_eval_expr_type(), pt_eval_method_call_type(), pt_evaluate_db_value_expr(), pt_evaluate_tree_internal(), pt_expr_get_return_type(), pt_get_attr_data_type(), pt_get_attributes(), pt_infer_common_type(), pt_make_method_call(), pt_make_regu_hostvar(), pt_print_db_value(), pt_resolve_method_type(), pt_resolve_star_reserved_names(), pt_set_host_variables(), pt_sm_attribute_default_value_to_node(), pt_string_to_db_domain(), pt_to_delete_xasl(), pt_update_host_var_data_type(), pt_wrap_expr_w_exp_dom_cast(), pt_wrap_type_for_collation(), qo_rewrite_like_terms(), and func_type::Node::set_return_type().

DB_VALUE* pt_db_value_initialize ( PARSER_CONTEXT parser,
PT_NODE value,
DB_VALUE db_value,
int *  more_type_info_needed 
)

Definition at line 3195 of file parse_dbi.c.

References pt_monetary_value::amount, assert, pt_data_value::bigint, parser_varchar::bytes, pt_data_type_info::collation_id, pt_data_value::d, db_value::data, pt_statement_info::data_type, parser_node::data_type, pt_value_info::data_value, DB_DEFAULT_PRECISION, DB_DEFAULT_SCALE, db_json_get_json_from_str(), db_make_bigint(), db_make_bit(), db_make_char(), db_make_datetime(), db_make_datetimeltz(), db_make_datetimetz(), db_make_double(), db_make_elo(), db_make_float(), db_make_int(), db_make_monetary(), db_make_multiset(), db_make_nchar(), db_make_null(), db_make_object(), db_make_sequence(), db_make_set(), db_make_short(), db_make_timestamp(), db_make_timestampltz(), db_make_timestamptz(), db_make_varchar(), db_make_varnchar(), db_private_alloc, db_private_free_and_init, db_seq_create(), db_set_create_basic(), db_set_create_multi(), db_string_to_date(), db_string_to_datetime(), db_string_to_datetimeltz(), db_string_to_datetimetz(), db_string_to_time(), db_string_to_timestampltz(), db_string_to_timestamptz(), db_string_to_utime, DB_TYPE_BLOB, DB_TYPE_CLOB, DB_TYPE_DATE, DB_TYPE_JSON, DB_TYPE_TIME, db_value_alter_type(), db_value_domain_init(), pt_value_info::db_value_is_in_workspace, db_value_put_encoded_date(), db_value_put_encoded_time(), db_json::document, db_value::domain, pt_data_value::elo, pt_data_value::f, db_domain_info::general_info, pt_data_value::i, if(), parser_node::info, db_domain_info::general_info::is_null, db_data::json, LANG_COERCIBLE_CODESET, LANG_COERCIBLE_COLL, parser_varchar::length, pt_data_value::money, MSGCAT_CATALOG_CUBRID, msgcat_message(), MSGCAT_RUNTIME_BAD_DATE, MSGCAT_RUNTIME_BAD_NUMERIC, MSGCAT_RUNTIME_BAD_TIME, MSGCAT_RUNTIME_BAD_UTIME, MSGCAT_RUNTIME_INVALID_JSON, MSGCAT_RUNTIME_UNDEFINED_CONVERSION, MSGCAT_RUNTIME_UNIMPLEMENTED_CONV, MSGCAT_SEMANTIC_INVALID_BITSTRING, MSGCAT_SEMANTIC_OUT_OF_MEMORY, MSGCAT_SET_PARSER_RUNTIME, MSGCAT_SET_PARSER_SEMANTIC, db_value::need_clear, NO_ERROR, parser_node::node_type, NULL, numeric_coerce_string_to_num(), pt_data_value::op, pr_clear_value(), PT_ERROR, PT_ERRORm, PT_ERRORmf, PT_HAS_COLLATION, pt_seq_value_to_db(), pt_set_value_to_db(), pt_short_print(), PT_TYPE_BIGINT, PT_TYPE_BIT, PT_TYPE_BLOB, PT_TYPE_CHAR, PT_TYPE_CLOB, PT_TYPE_COMPOUND, PT_TYPE_DATE, PT_TYPE_DATETIME, PT_TYPE_DATETIMELTZ, PT_TYPE_DATETIMETZ, PT_TYPE_DOUBLE, pt_type_enum_to_db(), PT_TYPE_EXPR_SET, PT_TYPE_FLOAT, PT_TYPE_INTEGER, PT_TYPE_JSON, PT_TYPE_LOGICAL, PT_TYPE_MAX, PT_TYPE_MAYBE, PT_TYPE_MIDXKEY, 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_RESULTSET, PT_TYPE_SEQUENCE, PT_TYPE_SET, PT_TYPE_SMALLINT, PT_TYPE_STAR, PT_TYPE_TIME, PT_TYPE_TIMESTAMP, PT_TYPE_TIMESTAMPLTZ, PT_TYPE_TIMESTAMPTZ, PT_TYPE_VARBIT, PT_TYPE_VARCHAR, PT_TYPE_VARNCHAR, PT_VALUE, qstr_bit_to_bin(), qstr_hex_to_bin(), REINTERPRET_CAST, pt_data_value::set, pt_data_value::str, pt_value_info::string_type, TP_FLOATING_PRECISION_VALUE, db_domain_info::general_info::type, pt_monetary_value::type, parser_node::type_enum, pt_data_type_info::units, and pt_statement_info::value.

Referenced by pt_value_to_db().

Here is the caller graph for this function:

PT_NODE* pt_dbval_to_value ( PARSER_CONTEXT parser,
const DB_VALUE val 
)

Definition at line 574 of file parse_dbi.c.

References db_monetary::amount, pt_monetary_value::amount, assert, pt_data_value::bigint, parser_varchar::bytes, pt_data_type_info::collation_id, pt_data_value::d, pt_statement_info::data_type, parser_node::data_type, pt_value_info::data_value, db_datetimetz::datetime, db_bit_string(), db_date_to_string(), db_datetime_to_string(), db_datetimeltz_to_string(), db_datetimetz_to_string(), db_elo_copy_structure(), db_get_bigint(), db_get_bit(), db_get_date(), db_get_datetime(), db_get_datetimetz(), db_get_double(), db_get_elo(), db_get_enum_short(), db_get_enum_string(), db_get_enum_string_size(), db_get_float(), db_get_int(), db_get_json_raw_body(), db_get_json_schema, db_get_monetary(), db_get_object(), db_get_short(), db_get_string(), db_get_string_codeset(), db_get_string_collation(), db_get_string_size(), db_get_time(), db_get_timestamp(), db_get_timestamptz(), db_json_validate_json(), db_make_object(), db_private_alloc, db_private_free, db_private_free_and_init, db_time_to_string(), db_timestampltz_to_string(), db_timestamptz_to_string(), DB_TYPE_BIGINT, DB_TYPE_BIT, DB_TYPE_BLOB, DB_TYPE_CHAR, DB_TYPE_CLOB, DB_TYPE_DATE, DB_TYPE_DATETIME, DB_TYPE_DATETIMELTZ, DB_TYPE_DATETIMETZ, DB_TYPE_DB_VALUE, DB_TYPE_DOUBLE, DB_TYPE_ENUMERATION, DB_TYPE_ERROR, DB_TYPE_FLOAT, DB_TYPE_INTEGER, DB_TYPE_JSON, DB_TYPE_MONETARY, DB_TYPE_MULTISET, DB_TYPE_NCHAR, DB_TYPE_NULL, DB_TYPE_NUMERIC, DB_TYPE_OBJECT, DB_TYPE_OID, DB_TYPE_POINTER, DB_TYPE_SEQUENCE, DB_TYPE_SET, DB_TYPE_SHORT, DB_TYPE_SUB, DB_TYPE_TABLE, 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_TYPE_VOBJ, db_utime_to_string, pt_value_info::db_value, db_value_clone(), db_value_get_monetary_currency(), pt_value_info::db_value_is_in_workspace, pt_value_info::db_value_is_initialized, db_value_precision(), db_value_scale(), DB_VALUE_TYPE, pt_data_type_info::dec_precision, pt_data_value::elo, pt_data_value::enumeration, pt_data_value::f, pt_data_value::i, parser_node::info, pt_data_type_info::json_schema, parser_varchar::length, pt_data_value::money, MSGCAT_RUNTIME_UNDEFINED_CONVERSION, MSGCAT_SEMANTIC_DATA_OVERFLOW_ON, MSGCAT_SEMANTIC_OUT_OF_MEMORY, MSGCAT_SET_PARSER_SEMANTIC, NO_ERROR, NULL, numeric_db_value_print(), pt_data_value::op, parser_free_node(), parser_new_node(), pt_data_type_info::precision, pt_add_type_to_set(), pt_append_bytes(), pt_append_nulstring(), PT_DATA_TYPE, pt_db_to_type_enum(), PT_ERRORm, PT_ERRORmf, pt_get_object_data_type(), PT_INTERNAL_ERROR, pt_set_elements_to_value(), pt_show_type_enum(), PT_TYPE_BIT, PT_TYPE_BLOB, PT_TYPE_CLOB, PT_TYPE_NULL, PT_TYPE_OBJECT, PT_VALUE, pt_data_value::set, SET_PARSER_ERROR_AND_FREE_NODE, pt_enum_element_value::short_val, pt_data_value::str, pt_enum_element_value::str_val, pt_value_info::string_type, strlen, pt_value_info::text, db_timestamptz::timestamp, db_monetary::type, pt_monetary_value::type, parser_node::type_enum, db_timestamptz::tz_id, db_datetimetz::tz_id, pt_data_type_info::units, pt_statement_info::value, vid_oid_to_object(), and vid_vobj_to_object().

Referenced by check_default_on_update_clause(), do_alter_one_clause_with_template(), do_evaluate_insert_values(), do_replace_names_for_insert_values_pre(), get_att_default_from_def(), meth_translate_spec(), mq_replace_virtual_oid_with_real_oid(), mq_set_non_updatable_oid(), mq_update_attribute(), pt_bind_parameter(), pt_bind_value_to_hostvar_local(), pt_check_access_status(), pt_check_alter_partition(), pt_check_and_replace_hostvar(), pt_check_default_vclass_query_spec(), pt_coerce_value_internal(), pt_eval_value_path(), pt_find_attr_in_class_list(), pt_find_name_in_spec(), pt_fix_first_term_expr_for_iss(), pt_fix_first_term_func_index_for_iss(), pt_fold_const_expr(), pt_fold_const_function(), pt_limit_to_numbering_expr(), pt_make_query_show_columns(), pt_make_query_show_index(), pt_resolve_default_value(), pt_set_elements_to_value(), pt_sm_attribute_default_value_to_node(), pt_to_list_key(), pt_to_regu_variable(), pt_to_upd_del_query(), qo_convert_to_range(), qo_fold_is_and_not_null(), and qo_reduce_equality_terms().

MISC_OPERAND pt_misc_to_qp_misc_operand ( PT_MISC_TYPE  misc_specifier)
DB_DOMAIN* pt_node_data_type_to_db_domain ( PARSER_CONTEXT parser,
PT_NODE dt,
PT_TYPE_ENUM  type 
)

Definition at line 2029 of file parse_dbi.c.

References ARG_FILE_LINE, assert, ASSERT_ERROR, parser_varchar::bytes, tp_domain::class_mop, tp_domain::codeset, tp_domain::collation_flag, pt_data_type_info::collation_flag, tp_domain::collation_id, db_enumeration::collation_id, pt_data_type_info::collation_id, db_enumeration::count, pt_statement_info::data_type, DB_DEFAULT_PRECISION, db_find_class(), db_json_load_validator(), DB_TYPE_BIGINT, DB_TYPE_BIT, DB_TYPE_BLOB, DB_TYPE_CHAR, DB_TYPE_CLOB, DB_TYPE_DATE, DB_TYPE_DATETIME, DB_TYPE_DATETIMELTZ, DB_TYPE_DATETIMETZ, DB_TYPE_DB_VALUE, DB_TYPE_DOUBLE, DB_TYPE_ELO, DB_TYPE_ENUMERATION, DB_TYPE_ERROR, DB_TYPE_FLOAT, DB_TYPE_INTEGER, DB_TYPE_JSON, DB_TYPE_MIDXKEY, DB_TYPE_MONETARY, DB_TYPE_MULTISET, DB_TYPE_NCHAR, DB_TYPE_NULL, DB_TYPE_NUMERIC, DB_TYPE_OBJECT, DB_TYPE_OID, DB_TYPE_POINTER, DB_TYPE_RESULTSET, DB_TYPE_SEQUENCE, DB_TYPE_SET, DB_TYPE_SHORT, DB_TYPE_SUB, DB_TYPE_TABLE, 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_TYPE_VOBJ, pt_data_type_info::dec_precision, DOM_SET_ENUM_ELEMENTS, DOM_SET_ENUM_ELEMS_COUNT, db_enumeration::elements, pt_data_type_info::entity, tp_domain::enumeration, ER_ERROR_SEVERITY, ER_OUT_OF_VIRTUAL_MEMORY, er_set(), ER_SM_DOMAIN_NOT_A_CLASS, error(), parser_node::info, pt_data_type_info::json_schema, tp_domain::json_validator, LANG_SYS_CODESET, LANG_SYS_COLLATION, parser_varchar::length, pt_statement_info::name, parser_node::next, NO_ERROR, parser_node::node_type, NULL, pt_name_info::original, tp_domain::precision, pt_data_type_info::precision, pt_data_type_to_db_domain(), pt_get_enumeration_from_data_type(), PT_NAME, pt_type_enum_to_db(), pt_type_enum_to_db_domain(), tp_domain::scale, tp_domain::self_ref, tp_domain_add(), tp_domain_clear_enumeration(), TP_DOMAIN_COLL_ENFORCE, TP_DOMAIN_COLL_LEAVE, TP_DOMAIN_COLL_NORMAL, tp_domain_construct(), tp_domain_new(), parser_node::type_enum, pt_data_type_info::units, and pt_data_type_info::virt_object.

Referenced by pt_coerce_value_internal(), and pt_to_regu_variable().

Here is the caller graph for this function:

const char* pt_node_to_db_domain_name ( PT_NODE node)
DB_VALUE* pt_seq_value_to_db ( PARSER_CONTEXT parser,
PT_NODE values,
DB_VALUE db_value,
PT_NODE **  el_types 
)
static PT_NODE * pt_set_elements_to_value ( PARSER_CONTEXT parser,
const DB_VALUE val 
)
static

Definition at line 477 of file parse_dbi.c.

References assert, db_get_set(), db_make_null(), db_set_get(), db_set_size(), db_value_clear(), error(), i, parser_node::next, NO_ERROR, NULL, parser_append_node(), and pt_dbval_to_value().

Referenced by pt_dbval_to_value().

Here is the caller graph for this function:

DB_VALUE* pt_set_value_to_db ( PARSER_CONTEXT parser,
PT_NODE **  values,
DB_VALUE db_value,
PT_NODE **  el_types 
)
PT_NODE* pt_sort_in_desc_order ( PT_NODE vlist)

Definition at line 2484 of file parse_dbi.c.

References pt_value_info::data_value, pt_data_value::i, parser_node::info, parser_node::next, NULL, and pt_statement_info::value.

Referenced by do_alter_one_clause_with_template().

Here is the caller graph for this function:

DB_TYPE pt_type_enum_to_db ( const PT_TYPE_ENUM  t)

Definition at line 2314 of file parse_dbi.c.

References DB_TYPE_BIGINT, DB_TYPE_BIT, DB_TYPE_BLOB, DB_TYPE_CHAR, DB_TYPE_CLOB, DB_TYPE_DATE, DB_TYPE_DATETIME, DB_TYPE_DATETIMELTZ, DB_TYPE_DATETIMETZ, DB_TYPE_DOUBLE, DB_TYPE_ENUMERATION, DB_TYPE_FLOAT, DB_TYPE_INTEGER, DB_TYPE_JSON, DB_TYPE_MIDXKEY, DB_TYPE_MONETARY, DB_TYPE_MULTISET, DB_TYPE_NCHAR, DB_TYPE_NULL, DB_TYPE_NUMERIC, DB_TYPE_OBJECT, DB_TYPE_RESULTSET, DB_TYPE_SEQUENCE, DB_TYPE_SET, DB_TYPE_SHORT, DB_TYPE_TIME, DB_TYPE_TIMESTAMP, DB_TYPE_TIMESTAMPLTZ, DB_TYPE_TIMESTAMPTZ, DB_TYPE_VARBIT, DB_TYPE_VARCHAR, DB_TYPE_VARIABLE, DB_TYPE_VARNCHAR, PT_TYPE_BIGINT, PT_TYPE_BIT, PT_TYPE_BLOB, PT_TYPE_CHAR, PT_TYPE_CLOB, PT_TYPE_DATE, PT_TYPE_DATETIME, PT_TYPE_DATETIMELTZ, PT_TYPE_DATETIMETZ, PT_TYPE_DOUBLE, PT_TYPE_ENUMERATION, PT_TYPE_FLOAT, PT_TYPE_INTEGER, PT_TYPE_JSON, PT_TYPE_LOGICAL, PT_TYPE_MAYBE, PT_TYPE_MIDXKEY, PT_TYPE_MONETARY, PT_TYPE_MULTISET, PT_TYPE_NCHAR, PT_TYPE_NONE, PT_TYPE_NUMERIC, PT_TYPE_OBJECT, PT_TYPE_RESULTSET, 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 check_change_attribute(), jsp_add_stored_procedure(), jsp_add_stored_procedure_argument(), pmeta_get_info_internal(), pt_assignment_compatible(), pt_check_alter_partition(), pt_coerce_expression_argument(), pt_coerce_node_collation(), pt_coerce_range_expr_arguments(), pt_data_type_init_value(), pt_data_type_to_db_domain(), pt_db_value_initialize(), pt_eval_expr_type(), pt_evaluate_db_value_expr(), pt_fillin_type_size(), pt_is_json_doc_type(), pt_is_json_value_type(), pt_node_data_type_to_db_domain(), pt_node_to_db_domain(), pt_node_to_db_type(), pt_to_aggregate_node(), pt_to_upd_del_query(), pt_type_enum_to_db_domain(), qo_get_attr_info_func_index(), and qo_rewrite_subqueries().

DB_DOMAIN* pt_type_enum_to_db_domain ( const PT_TYPE_ENUM  t)

Definition at line 1549 of file parse_dbi.c.

References assert, DB_BIGINT_PRECISION, DB_DATE_PRECISION, DB_DATETIME_DECIMAL_SCALE, DB_DATETIME_PRECISION, DB_DATETIMETZ_PRECISION, DB_DEFAULT_NUMERIC_PRECISION, DB_DEFAULT_NUMERIC_SCALE, DB_DOUBLE_DECIMAL_PRECISION, DB_FLOAT_DECIMAL_PRECISION, DB_INTEGER_PRECISION, DB_MONETARY_DECIMAL_PRECISION, DB_SHORT_PRECISION, DB_TIME_PRECISION, DB_TIMESTAMP_PRECISION, DB_TIMESTAMPTZ_PRECISION, DB_TYPE_BIGINT, DB_TYPE_BIT, DB_TYPE_BLOB, DB_TYPE_CHAR, DB_TYPE_CLOB, DB_TYPE_DATE, DB_TYPE_DATETIME, DB_TYPE_DATETIMELTZ, DB_TYPE_DATETIMETZ, DB_TYPE_DB_VALUE, DB_TYPE_DOUBLE, DB_TYPE_ELO, DB_TYPE_ENUMERATION, DB_TYPE_ERROR, DB_TYPE_FLOAT, DB_TYPE_INTEGER, DB_TYPE_JSON, DB_TYPE_MIDXKEY, DB_TYPE_MONETARY, DB_TYPE_MULTISET, DB_TYPE_NCHAR, DB_TYPE_NULL, DB_TYPE_NUMERIC, DB_TYPE_OBJECT, DB_TYPE_OID, DB_TYPE_POINTER, DB_TYPE_RESULTSET, DB_TYPE_SEQUENCE, DB_TYPE_SET, DB_TYPE_SHORT, DB_TYPE_SUB, DB_TYPE_TABLE, 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_TYPE_VOBJ, NULL, pt_type_enum_to_db(), tp_domain_construct(), TP_FLOATING_PRECISION_VALUE, tp_Null_domain, and tp_Variable_domain.

Referenced by do_cast_host_variables_to_expected_domain(), pt_check_partitions(), pt_data_type_to_db_domain(), pt_make_method_call(), pt_node_data_type_to_db_domain(), pt_node_to_db_domain(), pt_node_to_function_index(), and pt_xasl_type_enum_to_domain().

Here is the caller graph for this function:

DB_VALUE* pt_value_to_db ( PARSER_CONTEXT parser,
PT_NODE value 
)

Definition at line 1088 of file parse_dbi.c.

References assert, parser_node::data_type, DB_TYPE_BIT, DB_TYPE_CHAR, DB_TYPE_ENUMERATION, DB_TYPE_NCHAR, DB_TYPE_NULL, DB_TYPE_VARBIT, DB_TYPE_VARCHAR, DB_TYPE_VARNCHAR, pt_value_info::db_value, DB_VALUE_DOMAIN_TYPE, pt_value_info::db_value_is_initialized, DOMAIN_COMPATIBLE, parser_node::expected_domain, parser_context::flag, pt_statement_info::host_var, parser_context::host_var_count, pt_host_var_info::index, parser_node::info, pt_name_info::meta_class, MSGCAT_RUNTIME_HOSTVAR_INDEX_ERROR, MSGCAT_RUNTIME_PARM_IS_NOT_SET, MSGCAT_SEMANTIC_CANT_COERCE_TO, MSGCAT_SET_PARSER_RUNTIME, MSGCAT_SET_PARSER_SEMANTIC, pt_statement_info::name, parser_node::node_type, NULL, pt_name_info::original, pr_type_name(), pt_bind_type_from_dbval(), pt_db_value_initialize(), pt_domain_to_data_type(), PT_ERRORmf, PT_ERRORmf2, pt_find_value_of_label(), PT_HOST_IN, PT_HOST_VAR, pt_host_var_db_value(), pt_is_const, PT_NAME, pt_node_to_db_domain(), pt_node_to_db_domain_name(), PT_PARAMETER, PT_TYPE_BIT, PT_TYPE_CHAR, PT_TYPE_ENUMERATION, PT_TYPE_MAYBE, PT_TYPE_NCHAR, PT_TYPE_NONE, PT_TYPE_NULL, PT_TYPE_NUMERIC, PT_TYPE_VARBIT, PT_TYPE_VARCHAR, PT_TYPE_VARNCHAR, parser_context::set_host_var, tp_domain_cache(), TP_DOMAIN_TYPE, tp_value_cast(), tp_value_cast_preserve_domain(), tp_value_coerce(), parser_node::type_enum, pt_statement_info::value, and pt_host_var_info::var_type.

Referenced by call_method(), do_alter_serial(), do_change_auto_increment_serial(), do_create_auto_increment_serial(), do_create_partition(), do_create_serial(), do_drop_session_variables(), do_set_session_variables(), get_priority(), init_update_data(), jsp_call_stored_procedure(), mq_translate_value(), pt_bind_names_post(), pt_bind_value_to_hostvar_local(), pt_check_alter_partition(), pt_check_analytic_function(), pt_check_and_coerce_to_date(), pt_check_and_coerce_to_time(), pt_check_and_replace_hostvar(), pt_check_enum_data_type(), pt_check_group_concat_order_by(), pt_check_order_by(), pt_check_range_partition_strict_increasing(), pt_coerce_node_collection_of_collection(), pt_coerce_value_internal(), pt_compare_bounds_to_value(), pt_eval_expr_type(), pt_evaluate_db_value_expr(), pt_evaluate_function(), pt_evaluate_tree_internal(), pt_expand_analytic_node(), pt_fix_enumeration_comparison(), pt_fold_const_expr(), pt_get_default_expression_from_data_default_node(), pt_node_to_partition_info(), pt_print_node_value(), pt_print_value(), pt_resolve_object(), pt_rewrite_to_auto_param(), pt_to_list_key(), pt_to_merge_update_xasl(), pt_to_odku_info(), pt_to_regu_variable(), pt_to_upd_del_query(), pt_to_update_xasl(), pt_value_links_add(), pt_where_type(), pt_where_type_keep_true(), qo_apply_range_intersection(), qo_apply_range_intersection_helper(), qo_find_like_rewrite_bound(), qo_merge_range_helper(), qo_reduce_comp_pair_terms(), qo_reduce_equality_terms(), qo_reduce_order_by(), uci_static(), and values_list_to_values_array().