From: Ole John Aske Date: December 7 2010 5:27pm Subject: bzr commit into mysql-5.1-telco-7.0-spj-scan-vs-scan branch (ole.john.aske:3392) Bug#58791 List-Archive: http://lists.mysql.com/commits/126247 X-Bug: 58791 Message-Id: <20101207172706.DC7D1223@fimafeng09.norway.sun.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0676196854022184499==" --===============0676196854022184499== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///net/fimafeng09/export/home/tmp/oleja/mysql/mysql-5.1-telco-7.0-spj-scan-scan/ based on revid:ole.john.aske@stripped 3392 Ole John Aske 2010-12-07 SPJ-scan-scan: Cherry picked fix for bug#58791: Incorrect result as Cluster may fail to reject an unpushable condition. modified: mysql-test/suite/ndb/r/ndb_condition_pushdown.result mysql-test/suite/ndb/t/ndb_condition_pushdown.test sql/ha_ndbcluster.cc === modified file 'mysql-test/suite/ndb/r/ndb_condition_pushdown.result' --- a/mysql-test/suite/ndb/r/ndb_condition_pushdown.result 2010-12-02 08:51:17 +0000 +++ b/mysql-test/suite/ndb/r/ndb_condition_pushdown.result 2010-12-07 17:27:02 +0000 @@ -2285,5 +2285,18 @@ Note 1644 Table 't2' is not pushable: GR Note 1644 Table 'tx' is not pushable: GROUP BY cannot be done using index on grouped columns. Note 1003 select `test`.`t2`.`c` AS `c`,count(distinct `test`.`t2`.`a`) AS `count(distinct t2.a)` from `test`.`tx` join `test`.`tx` `t2` where ((`test`.`tx`.`b` = `test`.`t2`.`d`) and (`test`.`tx`.`a` = `test`.`t2`.`c`) and (`test`.`t2`.`a` = 4)) group by `test`.`t2`.`c` drop table tx; +create table t (pk1 int, pk2 int, primary key(pk1,pk2)) engine = ndb; +insert into t values (1,0), (2,0), (3,0), (4,0); +set engine_condition_pushdown=1; +select table1.pk1, table2.pk1, table1.pk2, table2.pk2 +from t as table1, t as table2 +where table2.pk1 in (0,3) and +(table1.pk1 = 7 or table2.pk1 = 3); +pk1 pk1 pk2 pk2 +1 3 0 0 +4 3 0 0 +3 3 0 0 +2 3 0 0 +drop table t; set engine_condition_pushdown = @old_ecpd; DROP TABLE t1,t2,t3,t4,t5; === modified file 'mysql-test/suite/ndb/t/ndb_condition_pushdown.test' --- a/mysql-test/suite/ndb/t/ndb_condition_pushdown.test 2010-12-01 22:00:42 +0000 +++ b/mysql-test/suite/ndb/t/ndb_condition_pushdown.test 2010-12-07 17:27:02 +0000 @@ -2345,6 +2345,26 @@ group by t2.c; drop table tx; + +# Bug#58791 Incorrect result as Cluster may fail to reject an unpushable condition + +create table t (pk1 int, pk2 int, primary key(pk1,pk2)) engine = ndb; +insert into t values (1,0), (2,0), (3,0), (4,0); + +set engine_condition_pushdown=1; + +# Multiple instances of same table (t as table, ) confused +# ha_ndbcluster::cond_push() which accepted +# '(table1.pk1 = 7 or table2.pk1 = 3)' as a pushable cond. +# for 'table2' +# +select table1.pk1, table2.pk1, table1.pk2, table2.pk2 + from t as table1, t as table2 + where table2.pk1 in (0,3) and + (table1.pk1 = 7 or table2.pk1 = 3); + +drop table t; + set engine_condition_pushdown = @old_ecpd; DROP TABLE t1,t2,t3,t4,t5; === modified file 'sql/ha_ndbcluster.cc' --- a/sql/ha_ndbcluster.cc 2010-12-06 11:38:21 +0000 +++ b/sql/ha_ndbcluster.cc 2010-12-07 17:27:02 +0000 @@ -15141,6 +15141,18 @@ COND* ha_ndbcluster::cond_push(const COND *cond) { DBUG_ENTER("cond_push"); + + if (cond->used_tables() & ~table->map) + { + /** + * 'cond' refers fields from other tables, or other instances + * of this table, -> reject it. + * (Optimizer need to have a better understanding of what is + * pushable by each handler.) + */ + DBUG_EXECUTE("where",print_where((COND *)cond, "Rejected cond_push", QT_ORDINARY);); + DBUG_RETURN(NULL); + } if (!m_cond) m_cond= new ha_ndbcluster_cond; if (!m_cond) --===============0676196854022184499== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/ole.john.aske@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: ole.john.aske@stripped\ # 10htessx2apylwp2 # target_branch: file:///net/fimafeng09/export/home/tmp/oleja/mysql\ # /mysql-5.1-telco-7.0-spj-scan-scan/ # testament_sha1: 471150ce2ecc2ae6845d00f16af30645fc5402f0 # timestamp: 2010-12-07 18:27:06 +0100 # source_branch: bzr+ssh://oaske@stripped/bzrroot/server\ # /mysql-5.1-telco-7.0-spj/ # base_revision_id: ole.john.aske@stripped\ # 4ccfweuygzyj0dq7 # # Begin bundle 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 --===============0676196854022184499==--