summaryrefslogtreecommitdiff
path: root/sql/item_func.cc
diff options
context:
space:
mode:
authorhf@deer.(none) <>2005-11-01 20:37:27 +0400
committerhf@deer.(none) <>2005-11-01 20:37:27 +0400
commit0ec768c40773091182c39e80cb9812c2ff8af43f (patch)
treec0cf01af669d30a6e341a515f4ea80637c270625 /sql/item_func.cc
parente5f48e13bfd6a792b80edc002ab3def5eb160f60 (diff)
parentfa56a9d5761c7d1576028b0fa28d8d2ec4896ea0 (diff)
downloadmariadb-git-0ec768c40773091182c39e80cb9812c2ff8af43f.tar.gz
Conflicts 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;
}