Commit 1d602012 authored by unknown's avatar unknown

A fix (bug #9837: round(1, 6) delivers wrong value in create table context).


sql/item_func.cc:
  A fix (bug #9837: round(1, 6) delivers wrong value in create table context).
  As we change decimals, we should change max_length accordingly.
parent 300d33fb
drop table if exists t1;
select floor(5.5),floor(-5.5); select floor(5.5),floor(-5.5);
floor(5.5) floor(-5.5) floor(5.5) floor(-5.5)
5 -6 5 -6
...@@ -126,3 +127,13 @@ Warnings: ...@@ -126,3 +127,13 @@ Warnings:
Note 1003 select degrees(pi()) AS `degrees(pi())`,radians(360) AS `radians(360)` Note 1003 select degrees(pi()) AS `degrees(pi())`,radians(360) AS `radians(360)`
select rand(rand); select rand(rand);
ERROR 42S22: Unknown column 'rand' in 'field list' 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;
...@@ -2,6 +2,10 @@ ...@@ -2,6 +2,10 @@
# Test of math functions # Test of math functions
# #
--disable_warnings
drop table if exists t1;
--enable_warnings
select floor(5.5),floor(-5.5); select floor(5.5),floor(-5.5);
explain extended select floor(5.5),floor(-5.5); explain extended select floor(5.5),floor(-5.5);
select ceiling(5.5),ceiling(-5.5); select ceiling(5.5),ceiling(-5.5);
...@@ -58,3 +62,12 @@ explain extended select degrees(pi()),radians(360); ...@@ -58,3 +62,12 @@ explain extended select degrees(pi()),radians(360);
--error 1054 --error 1054
select rand(rand); 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;
...@@ -1072,6 +1072,8 @@ void Item_func_round::fix_length_and_dec() ...@@ -1072,6 +1072,8 @@ void Item_func_round::fix_length_and_dec()
decimals=0; decimals=0;
else else
decimals=min(tmp,NOT_FIXED_DEC); decimals=min(tmp,NOT_FIXED_DEC);
if ((tmp= decimals - args[0]->decimals) > 0)
max_length+= 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