49 int mismatch (
const char *str,
const size_t str_size,
const attribute *attr,
db_value *val);
50 int to_db_null (
const char *str,
const size_t str_size,
const attribute *attr,
db_value *val);
51 int to_db_short (
const char *str,
const size_t str_size,
const attribute *attr,
db_value *val);
52 int to_db_int (
const char *str,
const size_t str_size,
const attribute *attr,
db_value *val);
56 int to_db_char (
const char *str,
const size_t str_size,
const attribute *attr,
db_value *val);
61 int to_db_float (
const char *str,
const size_t str_size,
const attribute *attr,
db_value *val);
64 int to_db_date (
const char *str,
const size_t str_size,
const attribute *attr,
db_value *val);
65 int to_db_time (
const char *str,
const size_t str_size,
const attribute *attr,
db_value *val);
72 int to_db_json (
const char *str,
const size_t str_size,
const attribute *attr,
db_value *val);
105 for (
DB_TYPE &set_type : set_types)
199 conv_func &c_func = setters[db_type][ldr_type];
237 d = strtod (str, &str_ptr);
246 val->
data.
sh = (short) std::round (d);
252 int error_code =
parse_int (&i_val, str, 10);
258 val->
data.
sh = (short) i_val;
286 d = strtod (str, &str_ptr);
295 val->
data.
i = (int) std::round (d);
308 int error_code =
to_db_int (str, str_size, attr, val);
360 int str_len = (int) str_size;
366 intl_char_count ((
unsigned char *) str, str_len, codeset, &char_count);
368 if (char_count > precision)
378 intl_char_size ((
unsigned char *) str, precision, codeset, &truncate_size);
381 if (p >= &str[str_len])
383 str_len = truncate_size;
439 d = strtod (str, &str_ptr);
449 val->
data.
f = (float) d;
462 d = strtod (str, &str_ptr);
481 int precision = (int) str_size - 1 - (str[0] ==
'+' || str[0] ==
'-');
482 int scale = (int) str_size - (
int) strcspn (str,
".") - 1;
532 timestamptz.
tz_id = 0;
571 datetimetz.
tz_id = 0;
600 const unsigned char *
p = (
const unsigned char *) str;
601 const unsigned char *token = (
const unsigned char *) str;
607 token += symbol_size;
615 amt = strtod ((
const char *) token, &str_ptr);
634 std::size_t dest_size;
637 dest_size = (str_size + 7) / 8;
648 if (
qstr_bit_to_bin (bstring, (
int) dest_size, const_cast<char *> (str), (
int) str_size) != (
int) str_size)
698 char *bstring =
NULL;
700 std::size_t dest_size;
705 dest_size = (str_size + 1) / 2;
716 if (
qstr_hex_to_bin (bstring, (
int) dest_size, const_cast<char *> (str), (
int) str_size) != (
int) str_size)
768 char *locator =
NULL;
769 char *meta_data =
NULL;
771 char *str_start_ptr =
NULL, *str_end_ptr =
NULL;
772 const char *meta_start_ptr =
NULL, *meta_end_ptr =
NULL;
773 const char *locator_start_ptr =
NULL, *locator_end_ptr =
NULL;
781 if (new_len && str[new_len - 1] ==
'\"')
787 assert (str[0] ==
'B' || str[0] ==
'C');
799 str_start_ptr = (
char *) (str + 1);
800 str_end_ptr = strchr (str_start_ptr,
'|');
801 if (str_end_ptr ==
NULL || str_end_ptr - str_start_ptr == 0)
810 locator_start_ptr = str_end_ptr + 1;
811 locator_end_ptr = strchr (locator_start_ptr,
'|');
812 if (locator_end_ptr ==
NULL || locator_end_ptr - locator_start_ptr == 0)
821 meta_end_ptr = meta_start_ptr = locator_end_ptr + 1;
822 while (*meta_end_ptr)
827 int ret =
str_to_int64 (&size, &str_end_ptr, str_start_ptr, 10);
828 if (ret != 0 || size < 0)
836 size_t locator_size = locator_end_ptr - locator_start_ptr;
846 std::memcpy (locator, locator_start_ptr, locator_size);
847 locator[locator_size] =
'\0';
849 size_t meta_data_size = meta_end_ptr - meta_start_ptr;
850 if (meta_data_size > 0)
853 if (meta_data ==
NULL)
863 std::memcpy (meta_data, meta_start_ptr, meta_data_size);
864 meta_data[meta_data_size] =
'\0';
int to_db_monetary(const char *str, const size_t str_size, const attribute *attr, db_value *val)
int db_make_json(DB_VALUE *value, JSON_DOC *json_document, bool need_clear)
int db_make_datetime(DB_VALUE *value, const DB_DATETIME *datetime)
int to_db_varbit_from_bin_str(const char *str, const size_t str_size, const attribute *attr, db_value *val)
int to_db_double(const char *str, const size_t str_size, const attribute *attr, db_value *val)
int to_db_varchar(const char *str, const size_t str_size, const attribute *attr, db_value *val)
int db_string_to_timestamp(const char *str, DB_TIMESTAMP *utime)
int to_db_elo_ext(const char *str, const size_t str_size, const attribute *attr, db_value *val)
int to_db_time(const char *str, const size_t str_size, const attribute *attr, db_value *val)
int to_db_char(const char *str, const size_t str_size, const attribute *attr, db_value *val)
int db_make_bigint(DB_VALUE *value, const DB_BIGINT num)
int db_string_to_datetimetz(const char *str, DB_DATETIMETZ *dt_tz, bool *has_zone)
int parse_int(int *ret_p, const char *str_p, int base)
int to_int_generic(const char *str, const size_t str_size, const attribute *attr, db_value *val)
int db_string_to_datetime(const char *str, DB_DATETIME *datetime)
int to_db_datetimeltz(const char *str, const size_t str_size, const attribute *attr, db_value *val)
int mismatch(const char *str, const size_t str_size, const attribute *attr, db_value *val)
int db_make_date(DB_VALUE *value, const int month, const int day, const int year)
int db_make_datetimeltz(DB_VALUE *value, const DB_DATETIME *datetime)
TP_DOMAIN * tp_domain_resolve_value(const DB_VALUE *val, TP_DOMAIN *dbuf)
const std::size_t MAX_DIGITS_FOR_BIGINT
int to_db_null(const char *str, const size_t str_size, const attribute *attr, db_value *val)
int to_db_short(const char *str, const size_t str_size, const attribute *attr, db_value *val)
int str_to_int64(INT64 *ret_p, char **end_p, const char *str_p, int base)
static conv_setters setters
int db_make_elo(DB_VALUE *value, DB_TYPE type, const DB_ELO *elo)
int db_make_short(DB_VALUE *value, const DB_C_SHORT num)
int db_make_string(DB_VALUE *value, DB_CONST_C_CHAR str)
int to_db_date(const char *str, const size_t str_size, const attribute *attr, db_value *val)
int db_string_to_time(const char *str, DB_TIME *time)
#define OR_CHECK_DOUBLE_OVERFLOW(i)
void er_set(int severity, const char *file_name, const int line_no, int err_id, int num_args,...)
int to_db_varbit_from_hex_str(const char *str, const size_t str_size, const attribute *attr, db_value *val)
enum currency_check_mode CURRENCY_CHECK_MODE
int db_make_monetary(DB_VALUE *value, const DB_CURRENCY type, const double amount)
conv_func & get_conv_func(const data_type ldr_type, const DB_TYPE db_type)
int qstr_hex_to_bin(char *dest, int dest_size, const char *src, int src_size)
int to_db_make_varnchar(const char *str, const size_t str_size, const attribute *attr, db_value *val)
#define ER_IT_DATA_OVERFLOW
const char * intl_skip_spaces(const char *str, const char *str_end, const INTL_CODESET codeset)
bool intl_is_currency_symbol(const char *src, DB_CURRENCY *currency, int *symbol_size, const CURRENCY_CHECK_MODE check_mode)
#define OR_CHECK_SHORT_OVERFLOW(i)
const tp_domain & get_domain() const
int db_json_get_json_from_str(const char *json_raw, JSON_DOC *&doc, size_t json_raw_length)
int to_db_datetime(const char *str, const size_t str_size, const attribute *attr, db_value *val)
#define OR_CHECK_INT_OVERFLOW(i)
int to_db_float(const char *str, const size_t str_size, const attribute *attr, db_value *val)
std::array< std::array< conv_func, NUM_LDR_TYPES >, NUM_DB_TYPES > conv_setters
int db_make_timestamptz(DB_VALUE *value, const DB_C_TIMESTAMPTZ *ts_tz_val)
int to_db_numeric(const char *str, const size_t str_size, const attribute *attr, db_value *val)
unsigned char buf[DB_NUMERIC_BUF_SIZE]
TP_DOMAIN_STATUS tp_value_cast(const DB_VALUE *src, DB_VALUE *dest, const TP_DOMAIN *desired_domain, bool implicit_coercion)
int to_db_timestamptz(const char *str, const size_t str_size, const attribute *attr, db_value *val)
#define ER_OBJ_ATTRIBUTE_CANT_BE_NULL
const char * pr_type_name(DB_TYPE id)
int to_db_timestamp(const char *str, const size_t str_size, const attribute *attr, db_value *val)
DB_TIMESTAMPTZ timestamptz
#define db_private_free_and_init(thrd, ptr)
int to_db_bigint(const char *str, const size_t str_size, const attribute *attr, db_value *val)
int numeric_coerce_num_to_bigint(DB_C_NUMERIC arg, int scale, DB_BIGINT *answer)
const std::size_t MAX_DIGITS_FOR_INT
#define db_private_alloc(thrd, size)
int intl_char_size(const unsigned char *src, int length_in_chars, INTL_CODESET src_codeset, int *byte_count)
int to_db_generic_char(DB_TYPE type, const char *str, const size_t str_size, const attribute *attr, db_value *val)
need_clear_type need_clear
static conv_setters init_setters()
int db_make_time(DB_VALUE *value, const int hour, const int minute, const int second)
int db_make_datetimetz(DB_VALUE *value, const DB_DATETIMETZ *datetimetz)
static void error(const char *msg)
int db_make_float(DB_VALUE *value, const DB_C_FLOAT num)
int qstr_bit_to_bin(char *dest, int dest_size, const char *src, int src_size)
int to_db_make_nchar(const char *str, const size_t str_size, const attribute *attr, db_value *val)
int db_string_to_timestampltz(const char *str, DB_TIMESTAMP *ts)
#define OR_CHECK_FLOAT_OVERFLOW(i)
int to_db_timestampltz(const char *str, const size_t str_size, const attribute *attr, db_value *val)
int db_make_varbit(DB_VALUE *value, const int max_bit_length, DB_CONST_C_BIT bit_str, const int bit_str_bit_size)
int db_string_to_datetimeltz(const char *str, DB_DATETIME *datetime)
int db_make_db_char(DB_VALUE *value, const INTL_CODESET codeset, const int collation_id, const char *str, const int size)
void numeric_coerce_dec_str_to_num(const char *dec_str, DB_C_NUMERIC result)
int db_datetime_encode(DB_DATETIME *datetime, int month, int day, int year, int hour, int minute, int second, int millisecond)
int to_db_elo_int(const char *str, const size_t str_size, const attribute *attr, db_value *val)
int db_make_timestampltz(DB_VALUE *value, const DB_C_TIMESTAMP ts_val)
#define ER_LDR_ELO_INPUT_FILE
const char * get_name() const
int db_value_put(DB_VALUE *value, const DB_TYPE_C c_type, void *input, const int input_length)
enum intl_codeset INTL_CODESET
int intl_char_count(const unsigned char *src, int length_in_bytes, INTL_CODESET src_codeset, int *char_count)
const char * get_name() const
void elo_init_structure(DB_ELO *elo)
int to_db_datetimetz(const char *str, const size_t str_size, const attribute *attr, db_value *val)
int to_db_string(const char *str, const size_t str_size, const attribute *attr, db_value *val)
#define TP_FLOATING_PRECISION_VALUE
int db_make_null(DB_VALUE *value)
#define ER_OBJ_DOMAIN_CONFLICT
int to_db_int_set(const char *str, const size_t str_size, const attribute *attr, db_value *val)
int db_make_double(DB_VALUE *value, const DB_C_DOUBLE num)
int to_db_json(const char *str, const size_t str_size, const attribute *attr, db_value *val)
int parse_bigint(INT64 *ret_p, const char *str_p, int base)
int db_value_clear(DB_VALUE *value)
int db_make_timestamp(DB_VALUE *value, const DB_C_TIMESTAMP timeval)
int db_make_int(DB_VALUE *value, const int num)
int db_string_to_timestamptz(const char *str, DB_TIMESTAMPTZ *ts_tz, bool *has_zone)
int(* conv_func)(const char *, const size_t, const attribute *, db_value *)
const or_attribute & get_repr() const
int db_string_to_date(const char *str, DB_DATE *date)
const std::size_t MAX_DIGITS_FOR_SHORT
int to_db_int(const char *str, const size_t str_size, const attribute *attr, db_value *val)
int db_value_domain_init(DB_VALUE *value, const DB_TYPE type, const int precision, const int scale)