From: Sergey Glukhov Date: March 28 2011 8:35am Subject: bzr commit into mysql-5.1 branch (sergey.glukhov:3633) Bug#11764994 List-Archive: http://lists.mysql.com/commits/133980 X-Bug: 11764994 Message-Id: <201103280837.p2S8btHB028090@acsmt357.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============9031146654273196508==" --===============9031146654273196508== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///home/gluh/MySQL/mysql-5.1/ based on revid:sergey.glukhov@stripped 3633 Sergey Glukhov 2011-03-28 Bug#11764994 57900: CREATE TABLE .. SELECT ASSERTS SCALE >= 0 && PRECISION > 0 && SCALE <= PR Assert fails due to overflow which happens in Item_func_int_val::fix_num_length_and_dec() as geometry functions have max_length value equal to max_field_size(4294967295U). The fix is to skip max_length calculation for some boundary cases. @ mysql-test/r/func_math.result test case @ mysql-test/t/func_math.test test case @ sql/item_func.cc skip max_length calculation if argument max_length is near max_field_size. modified: mysql-test/r/func_math.result mysql-test/t/func_math.test sql/item_func.cc === modified file 'mysql-test/r/func_math.result' --- a/mysql-test/r/func_math.result 2010-12-24 11:05:04 +0000 +++ b/mysql-test/r/func_math.result 2011-03-28 08:35:50 +0000 @@ -511,4 +511,11 @@ t1 CREATE TABLE `t1` ( `C` varchar(23) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 DROP TABLE t1; +# +# Bug#11764994 57900: CREATE TABLE .. SELECT ASSERTS SCALE >= 0 && PRECISION > 0 && SCALE <= PR +# +CREATE TABLE t1 SELECT CEIL(LINESTRINGFROMWKB(1) DIV NULL); +DROP TABLE t1; +CREATE TABLE t1 SELECT FLOOR(LINESTRINGFROMWKB(1) DIV NULL); +DROP TABLE t1; End of 5.1 tests === modified file 'mysql-test/t/func_math.test' --- a/mysql-test/t/func_math.test 2010-12-24 11:05:04 +0000 +++ b/mysql-test/t/func_math.test 2011-03-28 08:35:50 +0000 @@ -324,4 +324,13 @@ CREATE TABLE t1 SELECT CAST((CASE(('')) SHOW CREATE TABLE t1; DROP TABLE t1; +--echo # +--echo # Bug#11764994 57900: CREATE TABLE .. SELECT ASSERTS SCALE >= 0 && PRECISION > 0 && SCALE <= PR +--echo # + +CREATE TABLE t1 SELECT CEIL(LINESTRINGFROMWKB(1) DIV NULL); +DROP TABLE t1; +CREATE TABLE t1 SELECT FLOOR(LINESTRINGFROMWKB(1) DIV NULL); +DROP TABLE t1; + --echo End of 5.1 tests === modified file 'sql/item_func.cc' --- a/sql/item_func.cc 2011-03-28 08:28:30 +0000 +++ b/sql/item_func.cc 2011-03-28 08:35:50 +0000 @@ -1803,9 +1803,10 @@ void Item_func_integer::fix_length_and_d void Item_func_int_val::fix_num_length_and_dec() { - max_length= args[0]->max_length - (args[0]->decimals ? - args[0]->decimals + 1 : - 0) + 2; + ulonglong tmp_max_length= (ulonglong ) args[0]->max_length - + (args[0]->decimals ? args[0]->decimals + 1 : 0) + 2; + max_length= tmp_max_length > (ulonglong) max_field_size ? + max_field_size : (uint32) tmp_max_length; uint tmp= float_length(decimals); set_if_smaller(max_length,tmp); decimals= 0; --===============9031146654273196508== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/sergey.glukhov@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: sergey.glukhov@stripped\ # ul77ei8af31we08u # target_branch: file:///home/gluh/MySQL/mysql-5.1/ # testament_sha1: 636ef124e0b50c8aa835a3a5d04e64abf16b8527 # timestamp: 2011-03-28 12:35:54 +0400 # base_revision_id: sergey.glukhov@stripped\ # jr73sx1za32oeztp # # Begin bundle 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 L2XBOt0B4OGAGOfDgy/xdyRThQkFb7eugA== --===============9031146654273196508==--