summaryrefslogtreecommitdiff
path: root/sql/item_func.cc
diff options
context:
space:
mode:
authorunknown <hf@deer.(none)>2005-11-01 20:37:27 +0400
committerunknown <hf@deer.(none)>2005-11-01 20:37:27 +0400
commitcda9b1cbc9be80dcf2522842ce3258b8af4d0f97 (patch)
treec0cf01af669d30a6e341a515f4ea80637c270625 /sql/item_func.cc
parentee380a077782f87d80aae7a8c9c9ead51dfd8e7b (diff)
parent2cf69d07211e914a98f1b6f34ac4ae9dd2253ea2 (diff)
downloadmariadb-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.cc29
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;
}