From 02d7b276416c1c4da22c1a6c6a4ffeacfbc61ab2 Mon Sep 17 00:00:00 2001 From: Tor Didriksen Date: Fri, 14 Jan 2011 15:03:37 +0100 Subject: [PATCH] Bug #59498 div function broken in mysql-trunk --- mysql-test/r/func_math.result | 6 ++++++ mysql-test/t/func_math.test | 5 +++++ sql/item_func.cc | 11 ++++++++--- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/mysql-test/r/func_math.result b/mysql-test/r/func_math.result index db4f6ddcf20..3149a2a3344 100644 --- a/mysql-test/r/func_math.result +++ b/mysql-test/r/func_math.result @@ -650,3 +650,9 @@ SELECT ((@a:=@b:=1.0) div (@b:=@a:=get_format(datetime, 'usa'))); NULL Warnings: 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 diff --git a/mysql-test/t/func_math.test b/mysql-test/t/func_math.test index fe253617a27..e56b9c7d20d 100644 --- a/mysql-test/t/func_math.test +++ b/mysql-test/t/func_math.test @@ -495,3 +495,8 @@ DROP TABLE t1; --echo # in do_div_mod with doubly assigned variables --echo # 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; diff --git a/sql/item_func.cc b/sql/item_func.cc index 47007d8a71c..1bb253fb649 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -1582,10 +1582,15 @@ longlong Item_func_int_div::val_int() args[1]->result_type() != INT_RESULT) { my_decimal tmp; - my_decimal val0= *args[0]->val_decimal(&tmp); - my_decimal val1= *args[1]->val_decimal(&tmp); - if ((null_value= (args[0]->null_value || args[1]->null_value))) + my_decimal *val0p= args[0]->val_decimal(&tmp); + if ((null_value= args[0]->null_value)) 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; if ((err= my_decimal_div(E_DEC_FATAL_ERROR & ~E_DEC_DIV_ZERO, &tmp,