From 775010a40dd4bbfe37e92df185dac3080e7b52ff Mon Sep 17 00:00:00 2001 From: "ramil@mysql.com" <> Date: Tue, 19 Apr 2005 14:44:54 +0500 Subject: [PATCH] A fix (bug #9837: round(1, 6) delivers wrong value in create table context). --- mysql-test/r/func_math.result | 11 +++++++++++ mysql-test/t/func_math.test | 13 +++++++++++++ sql/item_func.cc | 2 ++ 3 files changed, 26 insertions(+) diff --git a/mysql-test/r/func_math.result b/mysql-test/r/func_math.result index 3a28cccfac..9cb1e4a56d 100644 --- a/mysql-test/r/func_math.result +++ b/mysql-test/r/func_math.result @@ -1,3 +1,4 @@ +drop table if exists t1; select floor(5.5),floor(-5.5); floor(5.5) floor(-5.5) 5 -6 @@ -126,3 +127,13 @@ Warnings: Note 1003 select degrees(pi()) AS `degrees(pi())`,radians(360) AS `radians(360)` select rand(rand); ERROR 42S22: Unknown column 'rand' in 'field list' +create table t1 select round(1, 6); +show create table t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `round(1, 6)` double(7,6) NOT NULL default '0.000000' +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +select * from t1; +round(1, 6) +1.000000 +drop table t1; diff --git a/mysql-test/t/func_math.test b/mysql-test/t/func_math.test index 668aefc2d8..4c24dae8c5 100644 --- a/mysql-test/t/func_math.test +++ b/mysql-test/t/func_math.test @@ -2,6 +2,10 @@ # Test of math functions # +--disable_warnings +drop table if exists t1; +--enable_warnings + select floor(5.5),floor(-5.5); explain extended select floor(5.5),floor(-5.5); select ceiling(5.5),ceiling(-5.5); @@ -58,3 +62,12 @@ explain extended select degrees(pi()),radians(360); --error 1054 select rand(rand); + +# +# Bug #9837: problem with round() +# + +create table t1 select round(1, 6); +show create table t1; +select * from t1; +drop table t1; diff --git a/sql/item_func.cc b/sql/item_func.cc index eb6e395c26..2b38584fe2 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -1072,6 +1072,8 @@ void Item_func_round::fix_length_and_dec() decimals=0; else decimals=min(tmp,NOT_FIXED_DEC); + if ((tmp= decimals - args[0]->decimals) > 0) + max_length+= tmp; } } -- 2.30.9