Commit 175e8926 authored by Tor Didriksen's avatar Tor Didriksen

Bug #59498 div function broken in mysql-trunk


mysql-test/r/func_math.result:
  New test case.
mysql-test/t/func_math.test:
  New test case.
sql/item_func.cc:
  Check for null before converting value to my_decimal.
parent ad6c8d23
...@@ -650,3 +650,9 @@ SELECT ((@a:=@b:=1.0) div (@b:=@a:=get_format(datetime, 'usa'))); ...@@ -650,3 +650,9 @@ SELECT ((@a:=@b:=1.0) div (@b:=@a:=get_format(datetime, 'usa')));
NULL NULL
Warnings: Warnings:
Warning 1366 Incorrect decimal value: '' for column '' at row -1 Warning 1366 Incorrect decimal value: '' for column '' at row -1
#
# Bug #59498 div function broken in mysql-trunk
#
SELECT 1 div null;
1 div null
NULL
...@@ -495,3 +495,8 @@ DROP TABLE t1; ...@@ -495,3 +495,8 @@ DROP TABLE t1;
--echo # in do_div_mod with doubly assigned variables --echo # in do_div_mod with doubly assigned variables
--echo # --echo #
SELECT ((@a:=@b:=1.0) div (@b:=@a:=get_format(datetime, 'usa'))); SELECT ((@a:=@b:=1.0) div (@b:=@a:=get_format(datetime, 'usa')));
--echo #
--echo # Bug #59498 div function broken in mysql-trunk
--echo #
SELECT 1 div null;
...@@ -1582,10 +1582,15 @@ longlong Item_func_int_div::val_int() ...@@ -1582,10 +1582,15 @@ longlong Item_func_int_div::val_int()
args[1]->result_type() != INT_RESULT) args[1]->result_type() != INT_RESULT)
{ {
my_decimal tmp; my_decimal tmp;
my_decimal val0= *args[0]->val_decimal(&tmp); my_decimal *val0p= args[0]->val_decimal(&tmp);
my_decimal val1= *args[1]->val_decimal(&tmp); if ((null_value= args[0]->null_value))
if ((null_value= (args[0]->null_value || args[1]->null_value)))
return 0; return 0;
my_decimal val0= *val0p;
my_decimal *val1p= args[1]->val_decimal(&tmp);
if ((null_value= args[1]->null_value))
return 0;
my_decimal val1= *val1p;
int err; int err;
if ((err= my_decimal_div(E_DEC_FATAL_ERROR & ~E_DEC_DIV_ZERO, &tmp, if ((err= my_decimal_div(E_DEC_FATAL_ERROR & ~E_DEC_DIV_ZERO, &tmp,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment