From: Sergey Glukhov Date: March 30 2011 11:36am Subject: bzr commit into mysql-5.1 branch (sergey.glukhov:3645) Bug#11766212 List-Archive: http://lists.mysql.com/commits/134241 X-Bug: 11766212 Message-Id: <201103301138.p2UBc2H4019947@acsmt358.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============8477678052619871801==" --===============8477678052619871801== 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 3645 Sergey Glukhov 2011-03-30 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-03-30 11:36:21 +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-03-30 11:36:21 +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-03-30 11:36:21 +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(); --===============8477678052619871801== 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\ # r4x2huj23u264z9y # target_branch: file:///home/gluh/MySQL/mysql-5.1/ # testament_sha1: d1cf3e86405800129a5373c6685d96b7158908be # timestamp: 2011-03-30 15:36:24 +0400 # source_branch: bzr+ssh://sgluhov@stripped/bzrroot\ # /server/mysql-5.1/ # base_revision_id: sergey.glukhov@stripped\ # 7ediaz6fsldjp11w # # Begin bundle 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 --===============8477678052619871801==--