CUBRID Engine
latest
|
Go to the source code of this file.
Macros | |
#define | NUMERIC_MAX_STRING_SIZE (80 + 1) |
#define | SECONDS_OF_ONE_DAY 86400 /* 24 * 60 * 60 */ |
#define | MILLISECONDS_OF_ONE_DAY 86400000 /* 24 * 60 * 60 * 1000 */ |
#define | db_locate_numeric(value) ((DB_C_NUMERIC) ((value)->data.num.d.buf)) |
Enumerations | |
enum | DB_DATA_STATUS { DATA_STATUS_OK = 0, DATA_STATUS_TRUNCATED = 1004, DATA_STATUS_NOT_CONSUMED = 1005 } |
#define db_locate_numeric | ( | value | ) | ((DB_C_NUMERIC) ((value)->data.num.d.buf)) |
Definition at line 48 of file numeric_opfunc.h.
Referenced by bfmt_print(), db_abs_dbval(), db_ceil_dbval(), db_date_add_sub_interval_expr(), db_exp_dbval(), db_log_dbval(), db_mod_bigint(), db_mod_double(), db_mod_float(), db_mod_int(), db_mod_monetary(), db_mod_numeric(), db_mod_short(), db_round_dbval(), db_round_dbvalue_to_int(), db_sign_dbval(), db_sqrt_dbval(), db_string_chr(), db_timestamp(), db_trunc_dbval(), get_number_dbval_as_double(), get_number_dbval_as_long_double(), num_fmt_print(), numeric_common_prec_scale(), numeric_db_value_add(), numeric_db_value_coerce_from_num(), numeric_db_value_coerce_from_num_strict(), numeric_db_value_coerce_to_num(), numeric_db_value_compare(), numeric_db_value_div(), numeric_db_value_is_positive(), numeric_db_value_mul(), numeric_db_value_negate(), numeric_db_value_sub(), numeric_prec_scale_when_overflow(), pt_compare_bounds_to_value(), qdata_apply_interpolation_function_coercion(), and qdata_interpolation_function_values().
#define MILLISECONDS_OF_ONE_DAY 86400000 /* 24 * 60 * 60 * 1000 */ |
Definition at line 46 of file numeric_opfunc.h.
Referenced by db_add_int_to_datetime(), db_subtract_int_from_datetime(), db_width_bucket(), numeric_db_value_coerce_from_num(), partition_decrement_value(), pt_evaluate_db_value_expr(), qdata_interpolation_function_values(), qdata_subtract_datetime(), qdata_subtract_datetime_to_dbval(), qdata_subtract_datetime_to_int_asymmetry(), qdata_subtract_datetimetz_to_dbval(), and qdata_subtract_int_to_dbval().
#define NUMERIC_MAX_STRING_SIZE (80 + 1) |
Definition at line 43 of file numeric_opfunc.h.
Referenced by db_conv(), object_printer::describe_attribute(), emit_autoincrement_def(), emit_instance_attributes(), export_serial(), jsp_get_value_size(), jsp_pack_numeric_argument(), number_to_char(), numeric_db_value_coerce_from_num(), numeric_to_string(), sl_write_update_sql(), and tp_value_cast_internal().
#define SECONDS_OF_ONE_DAY 86400 /* 24 * 60 * 60 */ |
Definition at line 45 of file numeric_opfunc.h.
Referenced by fetch_peek_arith(), pt_evaluate_db_value_expr(), qdata_add_bigint_to_time(), qdata_add_monetary(), qdata_subtract_bigint_to_dbval(), qdata_subtract_short_to_dbval(), qdata_subtract_time(), and qdata_subtract_time_to_dbval().
enum DB_DATA_STATUS |
Enumerator | |
---|---|
DATA_STATUS_OK | |
DATA_STATUS_TRUNCATED | |
DATA_STATUS_NOT_CONSUMED |
Definition at line 36 of file numeric_opfunc.h.
void numeric_coerce_bigint_to_num | ( | DB_BIGINT | arg, |
DB_C_NUMERIC | answer | ||
) |
Definition at line 2276 of file numeric_opfunc.c.
References DB_NUMERIC_BUF_SIZE.
Referenced by numeric_db_value_coerce_to_num(), and numeric_div().
void numeric_coerce_dec_str_to_num | ( | const char * | dec_str, |
DB_C_NUMERIC | result | ||
) |
Definition at line 2426 of file numeric_opfunc.c.
References DB_NUMERIC_BUF_SIZE, numeric_add(), numeric_coerce_int_to_num(), numeric_negate(), numeric_scale_dec(), numeric_zero(), and strlen.
Referenced by bfmt_print(), db_ceil_dbval(), db_floor_dbval(), db_round_dbval(), db_trunc_dbval(), db_value_domain_max(), db_value_domain_min(), db_value_domain_zero(), ldr_int_db_bigint(), ldr_int_elem(), numeric_coerce_num_to_num(), numeric_coerce_string_to_num(), numeric_get_fractional_part(), numeric_get_integral_part(), numeric_get_msb_for_dec(), numeric_internal_real_to_num(), cubload::to_db_bigint(), and cubload::to_int_generic().
void numeric_coerce_int_to_num | ( | int | arg, |
DB_C_NUMERIC | answer | ||
) |
Definition at line 2245 of file numeric_opfunc.c.
References DB_NUMERIC_BUF_SIZE.
Referenced by boot_define_serial(), numeric_coerce_dec_str_to_num(), numeric_db_value_coerce_to_num(), numeric_div(), numeric_long_div(), and serial_get_nth_value().
int numeric_coerce_num_to_bigint | ( | DB_C_NUMERIC | arg, |
int | scale, | ||
DB_BIGINT * | answer | ||
) |
Definition at line 2350 of file numeric_opfunc.c.
References db_numeric::buf, db_numeric::d, DB_NUMERIC_BUF_SIZE, ER_IT_DATA_OVERFLOW, i, NO_ERROR, numeric_add(), numeric_copy(), numeric_decrease(), numeric_div(), numeric_get_pow_of_10(), numeric_increase(), numeric_is_bigint(), numeric_is_negative(), numeric_is_zero(), numeric_negate(), and powers_of_10.
Referenced by ldr_int_db_bigint(), ldr_int_elem(), numeric_db_value_coerce_from_num(), numeric_db_value_coerce_from_num_strict(), numeric_div(), cubload::to_db_bigint(), and cubload::to_int_generic().
void numeric_coerce_num_to_dec_str | ( | DB_C_NUMERIC | num, |
char * | dec_str | ||
) |
Definition at line 2485 of file numeric_opfunc.c.
References assert, DB_NUMERIC_BUF_SIZE, dec_string::digits, i, numeric_add_dec_str(), numeric_copy(), numeric_get_pow_of_2(), numeric_init_dec_str(), numeric_is_bit_set(), numeric_is_negative(), numeric_negate(), and TWICE_NUM_MAX_PREC.
Referenced by db_ceil_dbval(), db_floor_dbval(), db_round_dbval(), db_trunc_dbval(), get_number_dbval_as_long_double(), num_fmt_print(), numeric_coerce_num_to_double(), numeric_coerce_num_to_num(), numeric_db_value_print(), numeric_get_fractional_part(), numeric_get_integral_part(), and numeric_is_fraction_part_zero().
void numeric_coerce_num_to_double | ( | DB_C_NUMERIC | num, |
int | scale, | ||
double * | adouble | ||
) |
Definition at line 2546 of file numeric_opfunc.c.
References numeric_coerce_num_to_dec_str(), and TWICE_NUM_MAX_PREC.
Referenced by db_date_add_sub_interval_expr(), db_exp_dbval(), db_log_dbval(), db_mod_bigint(), db_mod_double(), db_mod_float(), db_mod_int(), db_mod_monetary(), db_mod_numeric(), db_mod_short(), db_round_dbvalue_to_int(), db_sign_dbval(), db_sqrt_dbval(), db_string_chr(), db_timestamp(), db_width_bucket_calculate_numeric(), get_number_dbval_as_double(), numeric_db_value_coerce_from_num(), numeric_db_value_coerce_from_num_strict(), pt_compare_bounds_to_value(), qdata_apply_interpolation_function_coercion(), and qdata_interpolation_function_values().
void numeric_coerce_num_to_int | ( | DB_C_NUMERIC | arg, |
int * | answer | ||
) |
Definition at line 2311 of file numeric_opfunc.c.
References DB_NUMERIC_BUF_SIZE, and numeric_is_negative().
Referenced by numeric_div().
int numeric_coerce_num_to_num | ( | DB_C_NUMERIC | src_num, |
int | src_prec, | ||
int | src_scale, | ||
int | dest_prec, | ||
int | dest_scale, | ||
DB_C_NUMERIC | dest_num | ||
) |
Definition at line 3238 of file numeric_opfunc.c.
References DB_MAX_NUMERIC_PRECISION, er_errid(), ER_FAILED, ER_IT_DATA_OVERFLOW, i, NO_ERROR, NULL, numeric_coerce_dec_str_to_num(), numeric_coerce_num_to_dec_str(), numeric_copy(), numeric_increase(), numeric_is_negative(), numeric_negate(), and strlen.
Referenced by coerce_char_to_dbvalue(), numeric_db_value_coerce_to_num(), and numeric_prec_scale_when_overflow().
int numeric_coerce_string_to_num | ( | const char * | astring, |
int | astring_len, | ||
INTL_CODESET | codeset, | ||
DB_VALUE * | num | ||
) |
Definition at line 3066 of file numeric_opfunc.c.
References ARG_FILE_LINE, DB_DEFAULT_NUMERIC_PRECISION, DB_DEFAULT_NUMERIC_SCALE, db_make_numeric(), DB_MAX_NUMERIC_PRECISION, DB_NUMERIC_BUF_SIZE, DB_TYPE_NUMERIC, db_value_domain_init(), DOMAIN_INCOMPATIBLE, er_errid(), ER_ERROR_SEVERITY, ER_FAILED, ER_IT_DATA_OVERFLOW, er_set(), i, intl_is_space(), NO_ERROR, NULL, numeric_coerce_dec_str_to_num(), numeric_negate(), pr_type_name(), tp_domain_resolve_default(), TP_DOMAIN_TYPE, and TWICE_NUM_MAX_PREC.
Referenced by coerce_char_to_dbvalue(), db_format(), db_value_to_value(), do_alter_serial(), do_create_auto_increment_serial(), do_create_serial(), do_update_maxvalue_of_auto_increment_serial(), jsp_unpack_numeric_value(), make_number(), pt_db_value_initialize(), and tp_atonumeric().
void numeric_db_value_abs | ( | DB_C_NUMERIC | src_num, |
DB_C_NUMERIC | dest_num | ||
) |
Definition at line 2074 of file numeric_opfunc.c.
References numeric_copy(), numeric_is_negative(), and numeric_negate().
Referenced by db_abs_dbval().
Definition at line 1594 of file numeric_opfunc.c.
References ARG_FILE_LINE, DB_DEFAULT_PRECISION, DB_DEFAULT_SCALE, DB_IS_NULL, db_locate_numeric, db_make_null(), db_make_numeric(), DB_MAX_NUMERIC_PRECISION, DB_NUMERIC_BUF_SIZE, DB_TYPE_NUMERIC, db_value_domain_init(), DB_VALUE_PRECISION, DB_VALUE_SCALE, DB_VALUE_TYPE, er_clear(), er_errid(), ER_FAILED, ER_IT_DATA_OVERFLOW, ER_OBJ_INVALID_ARGUMENTS, er_set(), ER_WARNING_SEVERITY, NO_ERROR, NULL, numeric_add(), numeric_common_prec_scale(), numeric_overflow(), numeric_prec_scale_when_overflow(), pr_type_name(), tp_domain_resolve_default(), and TP_DOMAIN_TYPE.
Referenced by emit_instance_attributes(), export_serial(), pt_evaluate_db_value_expr(), qdata_add_numeric(), qdata_add_numeric_to_dbval(), serial_get_nth_value(), and sl_write_update_sql().
int numeric_db_value_coerce_from_num | ( | DB_VALUE * | src, |
DB_VALUE * | dest, | ||
DB_DATA_STATUS * | data_stat | ||
) |
Definition at line 3519 of file numeric_opfunc.c.
References assert, DATA_STATUS_OK, db_datetime::date, DB_CURRENCY_DEFAULT, db_date_decode(), db_locate_numeric, db_make_bigint(), db_make_char(), db_make_date(), db_make_datetime(), db_make_double(), db_make_float(), db_make_int(), db_make_monetary(), db_make_nchar(), db_make_short(), db_make_time(), db_make_timestamp(), db_make_varchar(), db_make_varnchar(), db_private_alloc, db_time_decode(), DB_TYPE_BIGINT, DB_TYPE_CHAR, DB_TYPE_DATE, DB_TYPE_DATETIME, DB_TYPE_DOUBLE, DB_TYPE_FLOAT, DB_TYPE_INTEGER, DB_TYPE_MONETARY, DB_TYPE_NCHAR, DB_TYPE_NUMERIC, DB_TYPE_SMALLINT, DB_TYPE_TIME, DB_TYPE_TIMESTAMP, DB_TYPE_VARCHAR, DB_TYPE_VARNCHAR, DB_VALUE_DOMAIN_TYPE, DB_VALUE_SCALE, DOMAIN_INCOMPATIBLE, er_errid(), ER_FAILED, ER_IT_DATA_OVERFLOW, LANG_SYS_CODESET, LANG_SYS_COLLATION, MILLISECONDS_OF_ONE_DAY, db_value::need_clear, NO_ERROR, NULL, numeric_coerce_num_to_bigint(), numeric_coerce_num_to_double(), numeric_db_value_coerce_to_num(), numeric_db_value_print(), NUMERIC_MAX_STRING_SIZE, OR_CHECK_DOUBLE_OVERFLOW, OR_CHECK_FLOAT_OVERFLOW, OR_CHECK_INT_OVERFLOW, OR_CHECK_SHORT_OVERFLOW, return_string(), ROUND, SECONDS_IN_A_DAY, strlen, and db_datetime::time.
Referenced by db_value_get(), heap_set_autoincrement_value(), populate_auto_increment(), qdata_coerce_numeric_to_double(), and tp_value_cast_internal().
Definition at line 3730 of file numeric_opfunc.c.
References DATA_STATUS_OK, DB_CURRENCY_DEFAULT, db_locate_numeric, db_make_bigint(), db_make_double(), db_make_float(), db_make_int(), db_make_monetary(), db_make_short(), DB_TYPE_BIGINT, DB_TYPE_DOUBLE, DB_TYPE_FLOAT, DB_TYPE_INTEGER, DB_TYPE_MONETARY, DB_TYPE_NUMERIC, DB_TYPE_SMALLINT, DB_VALUE_DOMAIN_TYPE, DB_VALUE_SCALE, ER_FAILED, NO_ERROR, numeric_coerce_num_to_bigint(), numeric_coerce_num_to_double(), numeric_db_value_coerce_to_num(), numeric_is_fraction_part_zero(), OR_CHECK_DOUBLE_OVERFLOW, OR_CHECK_FLOAT_OVERFLOW, OR_CHECK_INT_OVERFLOW, OR_CHECK_SHORT_OVERFLOW, and ROUND.
Referenced by tp_value_coerce_strict().
int numeric_db_value_coerce_to_num | ( | DB_VALUE * | src, |
DB_VALUE * | dest, | ||
DB_DATA_STATUS * | data_stat | ||
) |
Definition at line 3387 of file numeric_opfunc.c.
References DATA_STATUS_OK, DATA_STATUS_TRUNCATED, db_get_bigint(), db_get_double(), db_get_enum_short(), db_get_float(), db_get_int(), db_get_short(), db_locate_numeric, db_make_numeric(), DB_NUMERIC_BUF_SIZE, DB_TYPE_BIGINT, DB_TYPE_DOUBLE, DB_TYPE_ENUMERATION, DB_TYPE_FLOAT, DB_TYPE_INTEGER, DB_TYPE_MONETARY, DB_TYPE_NUMERIC, DB_TYPE_SMALLINT, db_value_get_monetary_amount_as_double(), DB_VALUE_PRECISION, DB_VALUE_SCALE, DB_VALUE_TYPE, er_errid(), ER_FAILED, ER_IT_DATA_OVERFLOW, get_significant_digit(), NO_ERROR, numeric_coerce_bigint_to_num(), numeric_coerce_int_to_num(), numeric_coerce_num_to_num(), numeric_copy(), numeric_internal_double_to_num(), and numeric_internal_float_to_num().
Referenced by coerce_numeric_to_dbvalue(), csect_start_scan(), db_mod_bigint(), db_mod_int(), db_mod_numeric(), db_mod_short(), do_alter_serial(), do_change_auto_increment_serial(), do_create_auto_increment_serial(), do_create_serial(), do_update_maxvalue_of_auto_increment_serial(), numeric_db_value_coerce_from_num(), numeric_db_value_coerce_from_num_strict(), pgbuf_start_scan(), qdata_coerce_dbval_to_numeric(), tp_value_cast_internal(), and tp_value_coerce_strict().
Definition at line 2122 of file numeric_opfunc.c.
References DB_DEFAULT_PRECISION, DB_DEFAULT_SCALE, DB_IS_NULL, db_locate_numeric, db_make_int(), db_make_null(), DB_NUMERIC_BUF_SIZE, DB_TYPE_INTEGER, DB_TYPE_NUMERIC, db_value_domain_init(), DB_VALUE_PRECISION, DB_VALUE_SCALE, DB_VALUE_TYPE, er_clear(), ER_FAILED, ER_IT_DATA_OVERFLOW, ER_OBJ_INVALID_ARGUMENTS, NO_ERROR, NULL, numeric_common_prec_scale(), numeric_compare(), numeric_get_fractional_part(), and numeric_get_integral_part().
Referenced by check_serial_invariants(), db_width_bucket_calculate_numeric(), do_alter_serial(), do_change_auto_increment_serial(), do_create_auto_increment_serial(), do_create_serial(), emit_instance_attributes(), export_serial(), mr_cmpval_numeric(), mr_data_cmpdisk_numeric(), serial_get_next_cached_value(), and serial_get_nth_value().
Definition at line 1873 of file numeric_opfunc.c.
References ARG_FILE_LINE, DB_DEFAULT_NUMERIC_DIVISION_SCALE, DB_DEFAULT_PRECISION, DB_DEFAULT_SCALE, DB_IS_NULL, db_locate_numeric, DB_LONG_NUMERIC_MULTIPLIER, db_make_null(), db_make_numeric(), DB_MAX_NUMERIC_PRECISION, DB_NUMERIC_BUF_SIZE, DB_TYPE_NUMERIC, db_value_domain_init(), DB_VALUE_PRECISION, DB_VALUE_SCALE, DB_VALUE_TYPE, er_errid(), ER_FAILED, ER_IT_DATA_OVERFLOW, ER_OBJ_INVALID_ARGUMENTS, er_set(), ER_WARNING_SEVERITY, NO_ERROR, NULL, numeric_add(), numeric_compare(), numeric_copy(), numeric_decrease(), numeric_div(), numeric_increase(), numeric_is_longnum_value(), numeric_is_negative(), numeric_long_div(), numeric_longnum_to_shortnum(), numeric_negate(), numeric_overflow(), numeric_scale_dec_long(), numeric_shortnum_to_longnum(), pr_type_name(), prm_get_bool_value(), PRM_ID_COMPAT_NUMERIC_DIVISION_SCALE, tp_domain_resolve_default(), and TP_DOMAIN_TYPE.
Referenced by db_width_bucket_calculate_numeric(), pt_evaluate_db_value_expr(), qdata_divide_bigint_to_dbval(), qdata_divide_int_to_dbval(), qdata_divide_numeric_to_dbval(), and qdata_divide_short_to_dbval().
int numeric_db_value_increase | ( | DB_VALUE * | arg | ) |
Definition at line 3937 of file numeric_opfunc.c.
References db_get_numeric(), DB_IS_NULL, DB_TYPE_NUMERIC, DB_VALUE_TYPE, ER_OBJ_INVALID_ARGUMENTS, NO_ERROR, and numeric_increase().
Definition at line 2089 of file numeric_opfunc.c.
References DB_IS_NULL, db_locate_numeric, DB_TYPE_NUMERIC, DB_VALUE_TYPE, ER_OBJ_INVALID_ARGUMENTS, NULL, and numeric_is_negative().
Referenced by heap_object_upgrade_domain(), and serial_get_nth_value().
Definition at line 3916 of file numeric_opfunc.c.
References db_get_numeric(), DB_IS_NULL, and numeric_is_zero().
Referenced by pt_evaluate_db_value_expr(), and qdata_is_divided_zero().
Definition at line 1795 of file numeric_opfunc.c.
References DB_DEFAULT_PRECISION, DB_DEFAULT_SCALE, DB_IS_NULL, db_locate_numeric, db_make_null(), db_make_numeric(), DB_NUMERIC_BUF_SIZE, DB_TYPE_NUMERIC, db_value_domain_init(), DB_VALUE_PRECISION, DB_VALUE_SCALE, DB_VALUE_TYPE, er_errid(), ER_FAILED, ER_OBJ_INVALID_ARGUMENTS, NO_ERROR, NULL, numeric_get_msb_for_dec(), numeric_mul(), and numeric_negate().
Referenced by do_alter_serial(), do_create_serial(), pt_evaluate_db_value_expr(), qdata_multiply_numeric(), qdata_multiply_numeric_to_dbval(), and serial_get_nth_value().
int numeric_db_value_negate | ( | DB_VALUE * | answer | ) |
Definition at line 2047 of file numeric_opfunc.c.
References DB_IS_NULL, db_locate_numeric, DB_TYPE_NUMERIC, DB_VALUE_TYPE, ER_OBJ_INVALID_ARGUMENTS, NO_ERROR, NULL, and numeric_negate().
Referenced by pt_evaluate_db_value_expr(), and qdata_unary_minus_dbval().
Definition at line 3846 of file numeric_opfunc.c.
References assert, db_get_numeric(), DB_IS_NULL, db_value_scale(), i, NULL, and numeric_coerce_num_to_dec_str().
Referenced by db_conv(), object_printer::describe_attribute(), db_value_printer::describe_data(), emit_autoincrement_def(), emit_instance_attributes(), export_serial(), fprint_special_strings(), jsp_get_value_size(), jsp_pack_numeric_argument(), number_to_char(), numeric_db_value_coerce_from_num(), numeric_to_string(), pt_dbval_to_value(), sl_write_update_sql(), tp_value_cast_internal(), and valcnv_convert_data_to_string().
Definition at line 1694 of file numeric_opfunc.c.
References ARG_FILE_LINE, DB_DEFAULT_PRECISION, DB_DEFAULT_SCALE, DB_IS_NULL, db_locate_numeric, db_make_null(), db_make_numeric(), DB_MAX_NUMERIC_PRECISION, DB_NUMERIC_BUF_SIZE, DB_TYPE_NUMERIC, db_value_domain_init(), DB_VALUE_PRECISION, DB_VALUE_SCALE, DB_VALUE_TYPE, er_clear(), er_errid(), ER_FAILED, ER_IT_DATA_OVERFLOW, ER_OBJ_INVALID_ARGUMENTS, er_set(), ER_WARNING_SEVERITY, NO_ERROR, NULL, numeric_common_prec_scale(), numeric_overflow(), numeric_prec_scale_when_overflow(), numeric_sub(), pr_type_name(), tp_domain_resolve_default(), and TP_DOMAIN_TYPE.
Referenced by db_width_bucket_calculate_numeric(), do_alter_serial(), do_create_serial(), emit_instance_attributes(), export_serial(), pt_evaluate_db_value_expr(), qdata_subtract_bigint_to_dbval(), qdata_subtract_int_to_dbval(), qdata_subtract_numeric_to_dbval(), qdata_subtract_short_to_dbval(), and serial_get_nth_value().
int numeric_internal_double_to_num | ( | double | adouble, |
int | dst_scale, | ||
DB_C_NUMERIC | num, | ||
int * | prec, | ||
int * | scale | ||
) |
Definition at line 2786 of file numeric_opfunc.c.
References numeric_internal_real_to_num().
Referenced by db_mod_bigint(), db_mod_int(), db_mod_numeric(), db_mod_short(), numeric_db_value_coerce_to_num(), and numeric_internal_real_to_num().
int numeric_internal_float_to_num | ( | float | afloat, |
int | dst_scale, | ||
DB_C_NUMERIC | num, | ||
int * | prec, | ||
int * | scale | ||
) |
Definition at line 2804 of file numeric_opfunc.c.
References numeric_internal_real_to_num().
Referenced by numeric_db_value_coerce_to_num().