From: Roy Lyseng Date: April 6 2011 2:39pm Subject: Re: bzr commit into mysql-trunk branch (epotemkin:3002) Bug#11807437 List-Archive: http://lists.mysql.com/commits/134831 Message-Id: <4D9C7B33.8020309@oracle.com> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="------------060003020508060106080709" --------------060003020508060106080709 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Hi Evgeny, the fix is approved. Roy On 18.03.11 09.59, Evgeny Potemkin wrote: > #At file:///work/bzrroot/11807437-bug/ based on revid:epotemkin@stripped > > 3002 Evgeny Potemkin 2011-03-18 > Bug#11807437: VALGRIND WARNING IN MYSQL_DERIVED_OPTIMIZE() LINE 293 > After a merge initialization of JOIN::best_rowcount wasn't added in few > cases, thus valgrind was throwing reported warning. > Added initialization of JOIN::best_rowcount. > @ mysql-test/r/derived.result > Added a test case for the bug#11807437. > @ mysql-test/t/derived.test > Added a test case for the bug#11807437. > @ sql/sql_select.cc > Bug#11807437: VALGRIND WARNING IN MYSQL_DERIVED_OPTIMIZE() LINE 293 > Added initialization of JOIN::best_rowcount. > > modified: > mysql-test/r/derived.result > mysql-test/t/derived.test > sql/sql_select.cc > === modified file 'mysql-test/r/derived.result' > --- a/mysql-test/r/derived.result 2011-02-17 12:14:26 +0000 > +++ b/mysql-test/r/derived.result 2011-03-18 08:59:36 +0000 > @@ -1328,3 +1328,20 @@ f1 f11 f2 f22 f3 f33 > DROP TABLE t1,t2,t3; > DROP VIEW v1,v2,v3,v4,v6,v7; > # > +# > +# Bug#11807437: VALGRIND WARNING IN MYSQL_DERIVED_OPTIMIZE() LINE 293 > +# > +CREATE TABLE t1 ( > +f1 int(11) DEFAULT NULL > +); > +SELECT 1 > +FROM ( > +SELECT 1, 2 FROM DUAL > +WHERE EXISTS ( > +SELECT f1 > +FROM t1 > +)) AS tt > +; > +1 > +DROP TABLE t1; > +# > > === modified file 'mysql-test/t/derived.test' > --- a/mysql-test/t/derived.test 2011-02-17 12:14:26 +0000 > +++ b/mysql-test/t/derived.test 2011-03-18 08:59:36 +0000 > @@ -693,3 +693,22 @@ DROP VIEW v1,v2,v3,v4,v6,v7; > > --echo # > > +--echo # > +--echo # Bug#11807437: VALGRIND WARNING IN MYSQL_DERIVED_OPTIMIZE() LINE 293 > +--echo # > +CREATE TABLE t1 ( > + f1 int(11) DEFAULT NULL > +); > + > +SELECT 1 > +FROM ( > + SELECT 1, 2 FROM DUAL > + WHERE EXISTS ( > + SELECT f1 > + FROM t1 > + )) AS tt > +; > + > +DROP TABLE t1; > +--echo # > + > > === modified file 'sql/sql_select.cc' > --- a/sql/sql_select.cc 2011-02-17 12:14:26 +0000 > +++ b/sql/sql_select.cc 2011-03-18 08:59:36 +0000 > @@ -1853,6 +1853,7 @@ JOIN::optimize() > zero_result_cause= select_lex->having_value == Item::COND_FALSE ? > "Impossible HAVING" : "Impossible WHERE"; > tables= 0; > + best_rowcount= 0; > goto setup_subq_exit; > } > } > @@ -1898,6 +1899,7 @@ JOIN::optimize() > */ > if ((res=opt_sum_query(select_lex->leaf_tables, all_fields, conds))) > { > + best_rowcount= 0; > if (res == HA_ERR_KEY_NOT_FOUND) > { > DBUG_PRINT("info",("No matching min/max row")); > @@ -1921,6 +1923,7 @@ JOIN::optimize() > DBUG_PRINT("info",("Select tables optimized away")); > zero_result_cause= "Select tables optimized away"; > tables_list= 0; // All tables resolved > + best_rowcount= 1; > const_tables= tables; > /* > Extract all table-independent conditions and replace the WHERE > > > > --------------060003020508060106080709--