From: Sergey Glukhov Date: March 23 2011 12:21pm Subject: bzr commit into mysql-5.1 branch (sergey.glukhov:3620) Bug#11764994 List-Archive: http://lists.mysql.com/commits/133621 X-Bug: 11764994 Message-Id: <201103231208.p2NC8mbT017842@acsmt356.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============6192359387732394264==" --===============6192359387732394264== 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 3620 Sergey Glukhov 2011-03-23 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-23 12:21:52 +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-23 12:21:52 +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-03 12:04:04 +0000 +++ b/sql/item_func.cc 2011-03-23 12:21:52 +0000 @@ -1803,9 +1803,17 @@ 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; + /* + avoid overflow for Geometry functions which + have max_length = max_field_size. + */ + if (max_field_size - args[0]->max_length > 2) + max_length= args[0]->max_length - (args[0]->decimals ? + args[0]->decimals + 1 : + 0) + 2; + else + max_length= args[0]->max_length; + uint tmp= float_length(decimals); set_if_smaller(max_length,tmp); decimals= 0; --===============6192359387732394264== 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\ # i7bbu1en4ncfpkf8 # target_branch: file:///home/gluh/MySQL/mysql-5.1/ # testament_sha1: ddc4163a05a14fc3043eaf6d6a6b8f398f2a28ba # timestamp: 2011-03-23 15:21:58 +0300 # base_revision_id: sergey.glukhov@stripped\ # kz59ituzrsn1mk9k # # Begin bundle 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 4A29TSB1WjesF3KusDTLBaP8XckU4UJBKo9X3A== --===============6192359387732394264==--