CUBRID Engine
latest
|
#include <float.h>
#include <math.h>
#include <assert.h>
#include <stdio.h>
#include <string.h>
#include "mprec.h"
#include "numeric_opfunc.h"
#include "tz_support.h"
#include "db_date.h"
#include "memory_alloc.h"
#include "system_parameter.h"
#include "byte_order.h"
#include "object_primitive.h"
#include "object_representation.h"
#include "dbtype.h"
Go to the source code of this file.
Classes | |
struct | dec_string |
Macros | |
#define | DB_LONG_NUMERIC_MULTIPLIER 2 |
#define | CARRYOVER(arg) ((arg) >> 8) |
#define | GET_LOWER_BYTE(arg) ((arg) & 0xff) |
#define | NUMERIC_ABS(a) ((a) >= 0 ? a : -a) |
#define | TWICE_NUM_MAX_PREC (2*DB_MAX_NUMERIC_PRECISION) |
#define | SECONDS_IN_A_DAY (int)(24L * 60L * 60L) |
#define | ROUND(x) ((x) > 0 ? ((x) + .5) : ((x) - .5)) |
Typedefs | |
typedef struct dec_string | DEC_STRING |
typedef enum fp_value_type | FP_VALUE_TYPE |
Enumerations | |
enum | fp_value_type { FP_VALUE_TYPE_NUMBER, FP_VALUE_TYPE_INFINITE, FP_VALUE_TYPE_NAN, FP_VALUE_TYPE_ZERO } |
Variables | |
static const char | fast_mod [20] |
static DEC_STRING | powers_of_2 [DB_NUMERIC_BUF_SIZE *16] |
static bool | initialized_2 = false |
static unsigned char | powers_of_10 [TWICE_NUM_MAX_PREC+1][DB_NUMERIC_BUF_SIZE] |
static bool | initialized_10 = false |
static double | numeric_Pow_of_10 [10] |
#define CARRYOVER | ( | arg | ) | ((arg) >> 8) |
Definition at line 58 of file numeric_opfunc.c.
Referenced by numeric_add(), numeric_mul(), and numeric_scale_by_ten().
#define DB_LONG_NUMERIC_MULTIPLIER 2 |
Definition at line 56 of file numeric_opfunc.c.
Referenced by numeric_copy_long(), numeric_db_value_div(), numeric_double_shift_bit(), numeric_increase_long(), numeric_is_longnum_value(), numeric_long_div(), numeric_longnum_to_shortnum(), numeric_negate_long(), numeric_scale_by_ten(), and numeric_shortnum_to_longnum().
#define GET_LOWER_BYTE | ( | arg | ) | ((arg) & 0xff) |
Definition at line 59 of file numeric_opfunc.c.
Referenced by numeric_add(), numeric_mul(), and numeric_scale_by_ten().
#define NUMERIC_ABS | ( | a | ) | ((a) >= 0 ? a : -a) |
Definition at line 60 of file numeric_opfunc.c.
Referenced by numeric_internal_real_to_num().
#define ROUND | ( | x | ) | ((x) > 0 ? ((x) + .5) : ((x) - .5)) |
Definition at line 64 of file numeric_opfunc.c.
Referenced by numeric_db_value_coerce_from_num(), and numeric_db_value_coerce_from_num_strict().
#define SECONDS_IN_A_DAY (int)(24L * 60L * 60L) |
Definition at line 62 of file numeric_opfunc.c.
Referenced by numeric_db_value_coerce_from_num().
#define TWICE_NUM_MAX_PREC (2*DB_MAX_NUMERIC_PRECISION) |
Definition at line 61 of file numeric_opfunc.c.
Referenced by numeric_add_dec_str(), numeric_coerce_big_num_to_dec_str(), numeric_coerce_num_to_dec_str(), numeric_coerce_num_to_double(), numeric_coerce_string_to_num(), numeric_get_msb_for_dec(), numeric_init_dec_str(), numeric_init_pow_of_10_helper(), and numeric_init_pow_of_2_helper().
typedef struct dec_string DEC_STRING |
Definition at line 66 of file numeric_opfunc.c.
typedef enum fp_value_type FP_VALUE_TYPE |
enum fp_value_type |
Enumerator | |
---|---|
FP_VALUE_TYPE_NUMBER | |
FP_VALUE_TYPE_INFINITE | |
FP_VALUE_TYPE_NAN | |
FP_VALUE_TYPE_ZERO |
Definition at line 89 of file numeric_opfunc.c.
|
static |
Definition at line 2817 of file numeric_opfunc.c.
References FP_VALUE_TYPE_INFINITE, FP_VALUE_TYPE_NAN, FP_VALUE_TYPE_NUMBER, and FP_VALUE_TYPE_ZERO.
Referenced by numeric_internal_real_to_num().
|
static |
Definition at line 3358 of file numeric_opfunc.c.
Referenced by numeric_db_value_coerce_to_num().
|
static |
Definition at line 820 of file numeric_opfunc.c.
References CARRYOVER, and GET_LOWER_BYTE.
Referenced by numeric_coerce_dec_str_to_num(), numeric_coerce_num_to_bigint(), numeric_db_value_add(), numeric_db_value_div(), numeric_long_div(), numeric_mul(), and numeric_sub().
|
static |
Definition at line 334 of file numeric_opfunc.c.
References assert, dec_string::digits, fast_mod, and TWICE_NUM_MAX_PREC.
Referenced by numeric_coerce_big_num_to_dec_str(), numeric_coerce_num_to_dec_str(), and numeric_init_pow_of_2_helper().
|
static |
Definition at line 1472 of file numeric_opfunc.c.
References assert, DB_NUMERIC_BUF_SIZE, dec_string::digits, i, numeric_add_dec_str(), numeric_get_pow_of_2(), numeric_init_dec_str(), numeric_is_bit_set(), and TWICE_NUM_MAX_PREC.
Referenced by numeric_get_msb_for_dec().
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_length, | ||
INTL_CODESET | codeset, | ||
DB_VALUE * | result | ||
) |
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().
|
static |
Definition at line 1357 of file numeric_opfunc.c.
References ARG_FILE_LINE, db_locate_numeric, db_make_numeric(), DB_MAX_NUMERIC_PRECISION, DB_NUMERIC_BUF_SIZE, DB_TYPE_NUMERIC, DB_VALUE_PRECISION, DB_VALUE_SCALE, ER_IT_DATA_OVERFLOW, er_set(), ER_WARNING_SEVERITY, NO_ERROR, numeric_scale_dec(), pr_type_name(), tp_domain_resolve_default(), and TP_DOMAIN_TYPE.
Referenced by numeric_db_value_add(), numeric_db_value_compare(), and numeric_db_value_sub().
|
static |
Definition at line 1205 of file numeric_opfunc.c.
References DB_NUMERIC_BUF_SIZE, numeric_compare_pos(), numeric_copy(), numeric_is_negative(), and numeric_negate().
Referenced by numeric_db_value_compare(), and numeric_db_value_div().
|
static |
Definition at line 573 of file numeric_opfunc.c.
References DB_NUMERIC_BUF_SIZE.
Referenced by numeric_compare(), numeric_long_div(), and numeric_overflow().
|
static |
Definition at line 177 of file numeric_opfunc.c.
References numeric_copy_long().
Referenced by numeric_coerce_num_to_bigint(), numeric_coerce_num_to_dec_str(), numeric_coerce_num_to_num(), numeric_compare(), numeric_db_value_abs(), numeric_db_value_coerce_to_num(), numeric_db_value_div(), numeric_double_shift_bit(), numeric_get_msb_for_dec(), numeric_long_div(), numeric_longnum_to_shortnum(), numeric_mul(), numeric_overflow(), numeric_prec_scale_when_overflow(), numeric_scale_dec(), numeric_shortnum_to_longnum(), and numeric_sub().
|
static |
Definition at line 191 of file numeric_opfunc.c.
References assert, DB_LONG_NUMERIC_MULTIPLIER, DB_NUMERIC_BUF_SIZE, and NULL.
Referenced by numeric_copy(), numeric_double_shift_bit(), and numeric_long_div().
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_status | ||
) |
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_status | ||
) |
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().
|
static |
Definition at line 262 of file numeric_opfunc.c.
References DB_NUMERIC_BUF_SIZE.
Referenced by numeric_coerce_num_to_bigint(), and numeric_db_value_div().
|
static |
Definition at line 1047 of file numeric_opfunc.c.
References numeric_coerce_bigint_to_num(), numeric_coerce_int_to_num(), numeric_coerce_num_to_bigint(), numeric_coerce_num_to_int(), numeric_is_bigint(), numeric_is_long(), numeric_is_zero(), and numeric_long_div().
Referenced by numeric_coerce_num_to_bigint(), and numeric_db_value_div().
|
static |
Definition at line 519 of file numeric_opfunc.c.
References DB_LONG_NUMERIC_MULTIPLIER, DB_NUMERIC_BUF_SIZE, numeric_copy(), and numeric_copy_long().
Referenced by numeric_long_div().
|
static |
Definition at line 2572 of file numeric_opfunc.c.
References DB_INT32_MAX, DB_INT32_MIN, DB_NUMERIC_BUF_SIZE, NO_ERROR, and numeric_Pow_of_10.
|
static |
Definition at line 2715 of file numeric_opfunc.c.
References assert, DB_MAX_NUMERIC_PRECISION, DB_NUMERIC_BUF_SIZE, i, numeric_coerce_dec_str_to_num(), numeric_coerce_num_to_dec_str(), numeric_is_negative(), numeric_negate(), numeric_zero(), and strlen.
Referenced by numeric_db_value_compare().
|
static |
Definition at line 2662 of file numeric_opfunc.c.
References assert, DB_MAX_NUMERIC_PRECISION, DB_NUMERIC_BUF_SIZE, i, numeric_coerce_dec_str_to_num(), numeric_coerce_num_to_dec_str(), numeric_is_negative(), numeric_negate(), numeric_zero(), and strlen.
Referenced by numeric_db_value_compare().
|
static |
Definition at line 1524 of file numeric_opfunc.c.
References DB_MAX_NUMERIC_PRECISION, DB_NUMERIC_BUF_SIZE, ER_IT_DATA_OVERFLOW, NO_ERROR, numeric_coerce_big_num_to_dec_str(), numeric_coerce_dec_str_to_num(), numeric_copy(), numeric_is_zero(), and TWICE_NUM_MAX_PREC.
Referenced by numeric_db_value_mul().
|
static |
Definition at line 474 of file numeric_opfunc.c.
References assert, initialized_10, numeric_init_pow_of_10_helper(), and powers_of_10.
Referenced by numeric_coerce_num_to_bigint(), and numeric_overflow().
|
static |
Definition at line 415 of file numeric_opfunc.c.
References assert, DB_NUMERIC_BUF_SIZE, initialized_2, and numeric_init_pow_of_2_helper().
Referenced by numeric_coerce_big_num_to_dec_str(), and numeric_coerce_num_to_dec_str().
|
static |
Definition at line 219 of file numeric_opfunc.c.
References numeric_increase_long().
Referenced by numeric_coerce_num_to_bigint(), numeric_coerce_num_to_num(), numeric_db_value_div(), and numeric_db_value_increase().
|
static |
Definition at line 233 of file numeric_opfunc.c.
References DB_LONG_NUMERIC_MULTIPLIER, and DB_NUMERIC_BUF_SIZE.
Referenced by numeric_increase(), and numeric_negate_long().
|
static |
Definition at line 314 of file numeric_opfunc.c.
References dec_string::digits, and TWICE_NUM_MAX_PREC.
Referenced by numeric_coerce_big_num_to_dec_str(), numeric_coerce_num_to_dec_str(), and numeric_init_pow_of_2_helper().
|
static |
Definition at line 437 of file numeric_opfunc.c.
References DB_NUMERIC_BUF_SIZE, i, numeric_scale_dec(), numeric_zero(), powers_of_10, and TWICE_NUM_MAX_PREC.
Referenced by numeric_get_pow_of_10().
|
static |
Definition at line 377 of file numeric_opfunc.c.
References DB_NUMERIC_BUF_SIZE, dec_string::digits, i, numeric_add_dec_str(), numeric_init_dec_str(), and TWICE_NUM_MAX_PREC.
Referenced by numeric_get_pow_of_2().
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().
|
static |
Definition at line 2866 of file numeric_opfunc.c.
References _dtoa, DB_MAX_NUMERIC_PRECISION, DB_NUMERIC_OVERFLOW_LIMIT, DB_NUMERIC_UNDERFLOW_LIMIT, ER_IT_DATA_OVERFLOW, FP_VALUE_TYPE_INFINITE, FP_VALUE_TYPE_NAN, FP_VALUE_TYPE_ZERO, get_fp_value_type(), i, NO_ERROR, NUMERIC_ABS, numeric_coerce_dec_str_to_num(), numeric_internal_double_to_num(), strlen, TP_DOUBLE_AS_CHAR_LENGTH, TP_DOUBLE_MANTISA_DECIMAL_PRECISION, and TP_FLOAT_MANTISA_DECIMAL_PRECISION.
Referenced by numeric_internal_double_to_num(), and numeric_internal_float_to_num().
|
static |
Definition at line 742 of file numeric_opfunc.c.
References DB_NUMERIC_BUF_SIZE.
Referenced by numeric_coerce_num_to_bigint(), and numeric_div().
|
static |
Definition at line 778 of file numeric_opfunc.c.
Referenced by numeric_coerce_big_num_to_dec_str(), and numeric_coerce_num_to_dec_str().
|
static |
Definition at line 2760 of file numeric_opfunc.c.
References DB_MAX_NUMERIC_PRECISION, i, numeric_coerce_num_to_dec_str(), and strlen.
Referenced by numeric_db_value_coerce_from_num_strict().
|
static |
Definition at line 707 of file numeric_opfunc.c.
References DB_NUMERIC_BUF_SIZE.
Referenced by numeric_div().
|
static |
Definition at line 1100 of file numeric_opfunc.c.
References DB_LONG_NUMERIC_MULTIPLIER, DB_NUMERIC_BUF_SIZE, i, and numeric_is_negative().
Referenced by numeric_db_value_div(), and numeric_longnum_to_shortnum().
|
static |
Definition at line 164 of file numeric_opfunc.c.
Referenced by numeric_coerce_num_to_bigint(), numeric_coerce_num_to_dec_str(), numeric_coerce_num_to_int(), numeric_coerce_num_to_num(), numeric_compare(), numeric_db_value_abs(), numeric_db_value_div(), numeric_db_value_is_positive(), numeric_get_fractional_part(), numeric_get_integral_part(), numeric_is_longnum_value(), numeric_long_div(), numeric_mul(), numeric_overflow(), numeric_scale_by_ten(), and numeric_shortnum_to_longnum().
|
static |
Definition at line 683 of file numeric_opfunc.c.
References DB_NUMERIC_BUF_SIZE.
Referenced by numeric_coerce_num_to_bigint(), numeric_db_value_is_zero(), numeric_div(), numeric_get_msb_for_dec(), and numeric_mul().
|
static |
Definition at line 951 of file numeric_opfunc.c.
References DB_LONG_NUMERIC_MULTIPLIER, DB_NUMERIC_BUF_SIZE, numeric_add(), numeric_coerce_int_to_num(), numeric_compare_pos(), numeric_copy(), numeric_copy_long(), numeric_double_shift_bit(), numeric_is_negative(), numeric_negate(), and numeric_negate_long().
Referenced by numeric_db_value_div(), and numeric_div().
|
static |
Definition at line 1181 of file numeric_opfunc.c.
References DB_LONG_NUMERIC_MULTIPLIER, DB_NUMERIC_BUF_SIZE, ER_IT_DATA_OVERFLOW, NO_ERROR, numeric_copy(), and numeric_is_longnum_value().
Referenced by numeric_db_value_div().
|
static |
Definition at line 869 of file numeric_opfunc.c.
References CARRYOVER, DB_NUMERIC_BUF_SIZE, GET_LOWER_BYTE, numeric_add(), numeric_copy(), numeric_is_negative(), numeric_is_zero(), numeric_negate(), numeric_shift_byte(), and numeric_zero().
Referenced by numeric_db_value_mul().
|
static |
Definition at line 599 of file numeric_opfunc.c.
References numeric_negate_long().
Referenced by numeric_coerce_dec_str_to_num(), numeric_coerce_num_to_bigint(), numeric_coerce_num_to_dec_str(), numeric_coerce_num_to_num(), numeric_coerce_string_to_num(), numeric_compare(), numeric_db_value_abs(), numeric_db_value_div(), numeric_db_value_mul(), numeric_db_value_negate(), numeric_get_fractional_part(), numeric_get_integral_part(), numeric_long_div(), numeric_mul(), numeric_overflow(), and numeric_sub().
|
static |
Definition at line 614 of file numeric_opfunc.c.
References DB_LONG_NUMERIC_MULTIPLIER, DB_NUMERIC_BUF_SIZE, and numeric_increase_long().
Referenced by numeric_long_div(), numeric_negate(), and numeric_scale_by_ten().
|
static |
Definition at line 298 of file numeric_opfunc.c.
Referenced by numeric_shortnum_to_longnum().
|
static |
Definition at line 792 of file numeric_opfunc.c.
References DB_NUMERIC_BUF_SIZE, numeric_compare_pos(), numeric_copy(), numeric_get_pow_of_10(), numeric_is_negative(), and numeric_negate().
Referenced by numeric_db_value_add(), numeric_db_value_div(), and numeric_db_value_sub().
|
static |
Definition at line 1422 of file numeric_opfunc.c.
References db_locate_numeric, db_make_numeric(), DB_MAX_NUMERIC_PRECISION, DB_NUMERIC_BUF_SIZE, DB_VALUE_PRECISION, DB_VALUE_SCALE, NO_ERROR, numeric_coerce_num_to_num(), and numeric_copy().
Referenced by numeric_db_value_add(), and numeric_db_value_sub().
|
static |
Definition at line 1248 of file numeric_opfunc.c.
References CARRYOVER, DB_LONG_NUMERIC_MULTIPLIER, DB_NUMERIC_BUF_SIZE, ER_IT_DATA_OVERFLOW, GET_LOWER_BYTE, i, NO_ERROR, numeric_is_negative(), and numeric_negate_long().
Referenced by numeric_scale_dec_long().
|
static |
Definition at line 1298 of file numeric_opfunc.c.
References NO_ERROR, numeric_copy(), and numeric_scale_dec_long().
Referenced by numeric_coerce_dec_str_to_num(), numeric_common_prec_scale(), and numeric_init_pow_of_10_helper().
|
static |
Definition at line 1322 of file numeric_opfunc.c.
References NO_ERROR, and numeric_scale_by_ten().
Referenced by numeric_db_value_div(), and numeric_scale_dec().
|
static |
Definition at line 650 of file numeric_opfunc.c.
References DB_NUMERIC_BUF_SIZE.
Referenced by numeric_mul().
|
static |
Definition at line 1150 of file numeric_opfunc.c.
References DB_LONG_NUMERIC_MULTIPLIER, DB_NUMERIC_BUF_SIZE, i, numeric_copy(), numeric_is_negative(), numeric_negative_one(), and numeric_zero().
Referenced by numeric_db_value_div().
|
static |
Definition at line 845 of file numeric_opfunc.c.
References DB_NUMERIC_BUF_SIZE, numeric_add(), numeric_copy(), and numeric_negate().
Referenced by numeric_db_value_sub().
|
static |
Definition at line 284 of file numeric_opfunc.c.
Referenced by numeric_coerce_dec_str_to_num(), numeric_get_fractional_part(), numeric_get_integral_part(), numeric_init_pow_of_10_helper(), numeric_mul(), and numeric_shortnum_to_longnum().
|
static |
Definition at line 72 of file numeric_opfunc.c.
Referenced by numeric_add_dec_str().
|
static |
Definition at line 82 of file numeric_opfunc.c.
Referenced by numeric_get_pow_of_10().
|
static |
Definition at line 78 of file numeric_opfunc.c.
Referenced by numeric_get_pow_of_2().
|
static |
Definition at line 85 of file numeric_opfunc.c.
Referenced by numeric_fast_convert().
|
static |
Definition at line 80 of file numeric_opfunc.c.
Referenced by numeric_coerce_num_to_bigint(), numeric_get_pow_of_10(), and numeric_init_pow_of_10_helper().
|
static |
Definition at line 76 of file numeric_opfunc.c.