diff options
author | unknown <hf@deer.(none)> | 2005-11-01 20:37:27 +0400 |
---|---|---|
committer | unknown <hf@deer.(none)> | 2005-11-01 20:37:27 +0400 |
commit | cda9b1cbc9be80dcf2522842ce3258b8af4d0f97 (patch) | |
tree | c0cf01af669d30a6e341a515f4ea80637c270625 /sql/item_func.cc | |
parent | ee380a077782f87d80aae7a8c9c9ead51dfd8e7b (diff) | |
parent | 2cf69d07211e914a98f1b6f34ac4ae9dd2253ea2 (diff) | |
download | mariadb-git-cda9b1cbc9be80dcf2522842ce3258b8af4d0f97.tar.gz |
Conflicts resolving
sql/item_func.cc:
Auto merged
mysql-test/r/type_newdecimal.result:
resolving
mysql-test/t/type_newdecimal.test:
resolving
Diffstat (limited to 'sql/item_func.cc')
-rw-r--r-- | sql/item_func.cc | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/sql/item_func.cc b/sql/item_func.cc index 9c1d1f63635..0d9940532f4 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -972,8 +972,8 @@ my_decimal *Item_func_plus::decimal_op(my_decimal *decimal_value) return 0; val2= args[1]->val_decimal(&value2); if (!(null_value= (args[1]->null_value || - my_decimal_add(E_DEC_FATAL_ERROR, decimal_value, val1, - val2) > 1))) + (my_decimal_add(E_DEC_FATAL_ERROR, decimal_value, val1, + val2) > 3)))) return decimal_value; return 0; } @@ -1045,8 +1045,8 @@ my_decimal *Item_func_minus::decimal_op(my_decimal *decimal_value) return 0; val2= args[1]->val_decimal(&value2); if (!(null_value= (args[1]->null_value || - my_decimal_sub(E_DEC_FATAL_ERROR, decimal_value, val1, - val2) > 1))) + (my_decimal_sub(E_DEC_FATAL_ERROR, decimal_value, val1, + val2) > 3)))) return decimal_value; return 0; } @@ -1083,8 +1083,8 @@ my_decimal *Item_func_mul::decimal_op(my_decimal *decimal_value) return 0; val2= args[1]->val_decimal(&value2); if (!(null_value= (args[1]->null_value || - my_decimal_mul(E_DEC_FATAL_ERROR, decimal_value, val1, - val2) > 1))) + (my_decimal_mul(E_DEC_FATAL_ERROR, decimal_value, val1, + val2) > 3)))) return decimal_value; return 0; } @@ -1124,6 +1124,7 @@ my_decimal *Item_func_div::decimal_op(my_decimal *decimal_value) { my_decimal value1, *val1; my_decimal value2, *val2; + int err; val1= args[0]->val_decimal(&value1); if ((null_value= args[0]->null_value)) @@ -1131,17 +1132,15 @@ my_decimal *Item_func_div::decimal_op(my_decimal *decimal_value) val2= args[1]->val_decimal(&value2); if ((null_value= args[1]->null_value)) return 0; - switch (my_decimal_div(E_DEC_FATAL_ERROR & ~E_DEC_DIV_ZERO, decimal_value, - val1, val2, prec_increment)) { - case E_DEC_TRUNCATED: - case E_DEC_OK: - return decimal_value; - case E_DEC_DIV_ZERO: - signal_divide_by_null(); - default: - null_value= 1; // Safety + if ((err= my_decimal_div(E_DEC_FATAL_ERROR & ~E_DEC_DIV_ZERO, decimal_value, + val1, val2, prec_increment)) > 3) + { + if (err == E_DEC_DIV_ZERO) + signal_divide_by_null(); + null_value= 1; return 0; } + return decimal_value; } |