From 1fa7b95d987bb97dc2a4855df1f33ac355b2014a Mon Sep 17 00:00:00 2001 From: "jimw@mysql.com" <> Date: Wed, 22 Jun 2005 20:00:21 -0700 Subject: [PATCH] Fix multiplication of abs() by a negative value. (Bug #11402) --- mysql-test/r/func_math.result | 3 +++ mysql-test/t/func_math.test | 5 +++++ sql/item_func.cc | 3 --- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/mysql-test/r/func_math.result b/mysql-test/r/func_math.result index 9cb1e4a56d6..80b15d1d3c8 100644 --- a/mysql-test/r/func_math.result +++ b/mysql-test/r/func_math.result @@ -137,3 +137,6 @@ select * from t1; round(1, 6) 1.000000 drop table t1; +select abs(-2) * -2; +abs(-2) * -2 +-4 diff --git a/mysql-test/t/func_math.test b/mysql-test/t/func_math.test index 4c24dae8c5d..11af874380e 100644 --- a/mysql-test/t/func_math.test +++ b/mysql-test/t/func_math.test @@ -71,3 +71,8 @@ create table t1 select round(1, 6); show create table t1; select * from t1; drop table t1; + +# +# Bug #11402: abs() forces rest of calculation to unsigned +# +select abs(-2) * -2; diff --git a/sql/item_func.cc b/sql/item_func.cc index 442ef15bba8..657eb374c6f 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -914,10 +914,7 @@ void Item_func_abs::fix_length_and_dec() max_length=args[0]->max_length; hybrid_type= REAL_RESULT; if (args[0]->result_type() == INT_RESULT) - { hybrid_type= INT_RESULT; - unsigned_flag= 1; - } }