From: Sergey Glukhov Date: December 24 2010 11:33am Subject: bzr push into mysql-trunk-bugfixing branch (sergey.glukhov:3470 to 3471) List-Archive: http://lists.mysql.com/commits/127583 Message-Id: <201012241143.oBOBhI0B003600@rcsinet13.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 3471 Sergey Glukhov 2010-12-24 [merge] 5.5-bugteam->trunk-bugfixing merge modified: mysql-test/r/func_math.result mysql-test/t/func_math.test sql/item_func.cc 3470 Tor Didriksen 2010-12-23 Change test names, and test case names, to be compliant with google recommendations. See http://code.google.com/p/googletest/wiki/Primer#Simple_Tests "Both names must be valid C++ identifiers, and they should not contain underscore (_)" Switch from MySQL style do_some_test to camelcase DoSomeTest. @ unittest/gunit/thread_utils.cc Fix warning from SunPro compiler. modified: unittest/gunit/bounded_queue-t.cc unittest/gunit/mdl-t.cc unittest/gunit/mdl_mytap-t.cc unittest/gunit/my_regex-t.cc unittest/gunit/sql_list-t.cc unittest/gunit/thread_utils-t.cc unittest/gunit/thread_utils.cc === modified file 'mysql-test/r/func_math.result' --- a/mysql-test/r/func_math.result 2010-12-17 11:28:59 +0000 +++ b/mysql-test/r/func_math.result 2010-12-24 11:30:28 +0000 @@ -501,6 +501,19 @@ SHOW WARNINGS; Level Code Message Warning 1292 Truncated incorrect DECIMAL value: '' 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 # # Bug #8433: Overflow must be an error === modified file 'mysql-test/t/func_math.test' --- a/mysql-test/t/func_math.test 2010-12-17 11:28:59 +0000 +++ b/mysql-test/t/func_math.test 2010-12-24 11:30:28 +0000 @@ -336,6 +336,15 @@ select 123456789012345678901234567890.12 select "123456789012345678901234567890.123456789012345678901234567890" div 1 as x; 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 # === modified file 'sql/item_func.cc' --- a/sql/item_func.cc 2010-12-17 11:28:59 +0000 +++ b/sql/item_func.cc 2010-12-24 11:30:28 +0000 @@ -1561,9 +1561,14 @@ void Item_func_div::fix_length_and_dec() { decimals=max(args[0]->decimals,args[1]->decimals)+prec_increment; set_if_smaller(decimals, NOT_FIXED_DEC); - max_length=args[0]->max_length - args[0]->decimals + 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; } case INT_RESULT: No bundle (reason: useless for push emails).