Commit 0a1433d7 authored by Sergey Glukhov's avatar Sergey Glukhov

5.1-bugteam->5.5-bugteam merge

parents 28363035 bc56dcea
...@@ -501,6 +501,19 @@ SHOW WARNINGS; ...@@ -501,6 +501,19 @@ SHOW WARNINGS;
Level Code Message Level Code Message
Warning 1292 Truncated incorrect DECIMAL value: '' Warning 1292 Truncated incorrect DECIMAL value: ''
Error 1690 BIGINT value is out of range in '('123456789012345678901234567890.123456789012345678901234567890' DIV 1)' Error 1690 BIGINT value is out of range in '('123456789012345678901234567890.123456789012345678901234567890' DIV 1)'
#
# Bug#57810 case/when/then : Assertion failed: length || !scale
#
SELECT CASE(('')) WHEN (CONVERT(1, CHAR(1))) THEN (('' / 1)) END;
CASE(('')) WHEN (CONVERT(1, CHAR(1))) THEN (('' / 1)) END
NULL
CREATE TABLE t1 SELECT CAST((CASE(('')) WHEN (CONVERT(1, CHAR(1))) THEN (('' / 1)) END) AS CHAR) as C;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`C` varchar(23) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
End of 5.1 tests End of 5.1 tests
# #
# Bug #8433: Overflow must be an error # Bug #8433: Overflow must be an error
......
...@@ -336,6 +336,15 @@ select 123456789012345678901234567890.123456789012345678901234567890 div 1 as x; ...@@ -336,6 +336,15 @@ select 123456789012345678901234567890.123456789012345678901234567890 div 1 as x;
select "123456789012345678901234567890.123456789012345678901234567890" div 1 as x; select "123456789012345678901234567890.123456789012345678901234567890" div 1 as x;
SHOW WARNINGS; SHOW WARNINGS;
--echo #
--echo # Bug#57810 case/when/then : Assertion failed: length || !scale
--echo #
SELECT CASE(('')) WHEN (CONVERT(1, CHAR(1))) THEN (('' / 1)) END;
CREATE TABLE t1 SELECT CAST((CASE(('')) WHEN (CONVERT(1, CHAR(1))) THEN (('' / 1)) END) AS CHAR) as C;
SHOW CREATE TABLE t1;
DROP TABLE t1;
--echo End of 5.1 tests --echo End of 5.1 tests
--echo # --echo #
......
...@@ -1543,9 +1543,14 @@ void Item_func_div::fix_length_and_dec() ...@@ -1543,9 +1543,14 @@ void Item_func_div::fix_length_and_dec()
{ {
decimals=max(args[0]->decimals,args[1]->decimals)+prec_increment; decimals=max(args[0]->decimals,args[1]->decimals)+prec_increment;
set_if_smaller(decimals, NOT_FIXED_DEC); set_if_smaller(decimals, NOT_FIXED_DEC);
max_length=args[0]->max_length - args[0]->decimals + decimals;
uint tmp=float_length(decimals); uint tmp=float_length(decimals);
set_if_smaller(max_length,tmp); if (decimals == NOT_FIXED_DEC)
max_length= tmp;
else
{
max_length=args[0]->max_length - args[0]->decimals + decimals;
set_if_smaller(max_length,tmp);
}
break; break;
} }
case INT_RESULT: case INT_RESULT:
......
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