From: Sergey Glukhov Date: April 12 2011 9:51am Subject: bzr commit into mysql-5.1 branch (sergey.glukhov:3654) Bug#11766212 List-Archive: http://lists.mysql.com/commits/135243 X-Bug: 11766212 Message-Id: <201104120951.p3C9p4sX028504@acsmt357.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============3166432337611720690==" --===============3166432337611720690== 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:sven.sandberg@stripped 3654 Sergey Glukhov 2011-04-12 Bug#11766212 59270: NOT IN (YEAR( ... ), ... ) PRODUCES MANY VALGRIND WARNINGS Valgrind warning happens due to early null values check in Item_func_in::fix_length_and_dec(before item evaluation). As result null value items with uninitialized values are placed into array and it leads to valgrind warnings during value array sorting. The fix is to check null value after item evaluation, item is evaluated in in_array::set() method. @ mysql-test/r/func_in.result test case @ mysql-test/t/func_in.test test case @ sql/item_cmpfunc.cc The fix is to check null value after item evaluation. modified: mysql-test/r/func_in.result mysql-test/t/func_in.test sql/item_cmpfunc.cc === modified file 'mysql-test/r/func_in.result' --- a/mysql-test/r/func_in.result 2010-06-22 18:53:08 +0000 +++ b/mysql-test/r/func_in.result 2011-04-12 09:51:36 +0000 @@ -770,4 +770,10 @@ CASE a WHEN a THEN a END NULL DROP TABLE t1; # +# Bug #11766212 59270: NOT IN (YEAR( ... ), ... ) PRODUCES MANY VALGRIND WARNINGS +# +SELECT 1 IN (YEAR(FROM_UNIXTIME(NULL)) ,1); +1 IN (YEAR(FROM_UNIXTIME(NULL)) ,1) +1 +# End of 5.1 tests === modified file 'mysql-test/t/func_in.test' --- a/mysql-test/t/func_in.test 2010-06-22 18:53:08 +0000 +++ b/mysql-test/t/func_in.test 2011-04-12 09:51:36 +0000 @@ -555,5 +555,11 @@ SELECT CASE a WHEN a THEN a END FROM t1 DROP TABLE t1; --echo # +--echo # Bug #11766212 59270: NOT IN (YEAR( ... ), ... ) PRODUCES MANY VALGRIND WARNINGS +--echo # + +SELECT 1 IN (YEAR(FROM_UNIXTIME(NULL)) ,1); + +--echo # --echo End of 5.1 tests === modified file 'sql/item_cmpfunc.cc' --- a/sql/item_cmpfunc.cc 2011-03-03 20:11:47 +0000 +++ b/sql/item_cmpfunc.cc 2011-04-12 09:51:36 +0000 @@ -4000,13 +4000,11 @@ void Item_func_in::fix_length_and_dec() uint j=0; for (uint i=1 ; i < arg_count ; i++) { - if (!args[i]->null_value) // Skip NULL values - { - array->set(j,args[i]); - j++; - } - else - have_null= 1; + array->set(j,args[i]); + if (!args[i]->null_value) // Skip NULL values + j++; + else + have_null= 1; } if ((array->used_count= j)) array->sort(); --===============3166432337611720690== 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\ # uirtqyq7pu1q16td # target_branch: file:///home/gluh/MySQL/mysql-5.1/ # testament_sha1: 0394cc43291455b899ae159f5ef055d83ad07b10 # timestamp: 2011-04-12 13:51:40 +0400 # source_branch: bzr+ssh://sgluhov@stripped/bzrroot\ # /server/mysql-5.1/ # base_revision_id: sven.sandberg@stripped\ # 7k8jfmazuu0qdqse # # Begin bundle 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 --===============3166432337611720690==--