From: Sergey Glukhov Date: April 12 2011 8:47am Subject: bzr commit into mysql-5.1 branch (sergey.glukhov:3646) Bug#11765923 List-Archive: http://lists.mysql.com/commits/135233 X-Bug: 11765923 Message-Id: <201104120847.p3C8lG5T007295@acsmt357.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============5186544260410392659==" --===============5186544260410392659== 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 3646 Sergey Glukhov 2011-04-12 Bug#11765923 58937: MANY VALGRIND ERRORS AFTER GROUPING BY RESULT OF DECIMAL COLUMN FUNCTION When ROUND evaluates decimal result it uses Item::decimal value as fraction value for the result. In some cases Item::decimal is greater than real result fraction value and uninitialised memory of result(decimal) buffer can be used in further calculations. Issue is introduced by Bug33143 fix. The fix is to remove erroneous assignment. @ mysql-test/r/func_math.result test case @ mysql-test/t/func_math.test test case @ sql/item_func.cc remove erroneous assignment 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 2011-03-28 08:35:50 +0000 +++ b/mysql-test/r/func_math.result 2011-04-12 08:47:46 +0000 @@ -518,4 +518,18 @@ CREATE TABLE t1 SELECT CEIL(LINESTRINGFR DROP TABLE t1; CREATE TABLE t1 SELECT FLOOR(LINESTRINGFROMWKB(1) DIV NULL); DROP TABLE t1; +# +# Bug#11765923 58937: MANY VALGRIND ERRORS AFTER GROUPING BY RESULT OF DECIMAL COLUMN FUNCTION +# +CREATE TABLE t1(f1 DECIMAL(22,1)); +INSERT INTO t1 VALUES (0),(1); +SELECT ROUND(f1, f1) FROM t1; +ROUND(f1, f1) +0.0 +1.0 +SELECT ROUND(f1, f1) FROM t1 GROUP BY 1; +ROUND(f1, f1) +0.0 +1.0 +DROP TABLE t1; End of 5.1 tests === modified file 'mysql-test/t/func_math.test' --- a/mysql-test/t/func_math.test 2011-03-28 08:35:50 +0000 +++ b/mysql-test/t/func_math.test 2011-04-12 08:47:46 +0000 @@ -333,4 +333,14 @@ DROP TABLE t1; CREATE TABLE t1 SELECT FLOOR(LINESTRINGFROMWKB(1) DIV NULL); DROP TABLE t1; +--echo # +--echo # Bug#11765923 58937: MANY VALGRIND ERRORS AFTER GROUPING BY RESULT OF DECIMAL COLUMN FUNCTION +--echo # + +CREATE TABLE t1(f1 DECIMAL(22,1)); +INSERT INTO t1 VALUES (0),(1); +SELECT ROUND(f1, f1) FROM t1; +SELECT ROUND(f1, f1) FROM t1 GROUP BY 1; +DROP TABLE t1; + --echo End of 5.1 tests === modified file 'sql/item_func.cc' --- a/sql/item_func.cc 2011-03-28 13:27:44 +0000 +++ b/sql/item_func.cc 2011-04-12 08:47:46 +0000 @@ -2122,10 +2122,7 @@ my_decimal *Item_func_round::decimal_op( if (!(null_value= (args[0]->null_value || args[1]->null_value || my_decimal_round(E_DEC_FATAL_ERROR, value, (int) dec, truncate, decimal_value) > 1))) - { - decimal_value->frac= decimals; return decimal_value; - } return 0; } --===============5186544260410392659== 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\ # a6ex7dlgy1x0a6ni # target_branch: file:///home/gluh/MySQL/mysql-5.1/ # testament_sha1: c0388c6fd7e7fda0283c9f2bcb6b13e93c46644d # timestamp: 2011-04-12 12:47:51 +0400 # source_branch: bzr+ssh://sgluhov@stripped/bzrroot\ # /server/mysql-5.1/ # base_revision_id: sergey.glukhov@stripped\ # ighkkh6m1p94mk0g # # Begin bundle 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 Eh+kG3mg --===============5186544260410392659==--