From: Ole John Aske Date: November 17 2010 11:59am Subject: bzr commit into mysql-5.1-telco-7.0-spj-scan-vs-scan branch (ole.john.aske:3373) List-Archive: http://lists.mysql.com/commits/124144 Message-Id: <20101117115940.DA73F222@fimafeng09.norway.sun.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============8689984159276932855==" --===============8689984159276932855== 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 3373 Ole John Aske 2010-11-17 SPJ-scan-scan: Rework / refactoring of http://lists.mysql.com/commits/124035 Changed the way AQP determines a table to has been 'optimized away, or const'ified by optimizer' modified: mysql-test/suite/ndb/r/ndb_join_pushdown.result sql/abstract_query_plan.cc sql/ha_ndbcluster.cc === modified file 'mysql-test/suite/ndb/r/ndb_join_pushdown.result' --- a/mysql-test/suite/ndb/r/ndb_join_pushdown.result 2010-11-16 13:26:19 +0000 +++ b/mysql-test/suite/ndb/r/ndb_join_pushdown.result 2010-11-17 11:59:32 +0000 @@ -2709,7 +2709,7 @@ id select_type table type possible_keys 1 SIMPLE t1 const PRIMARY PRIMARY 4 const 1 100.00 1 SIMPLE t2 eq_ref PRIMARY PRIMARY 4 const 1 100.00 Warnings: -Note 1644 Table 't1' not pushable, select list can't contain BLOB columns +Note 1644 Table 't1' was optimized away, or const'ified by optimizer Note 1003 select '2' AS `a`,'1' AS `b`,'kalle' AS `c`,`test`.`t2`.`a` AS `a`,`test`.`t2`.`b` AS `b` from `test`.`t1` join `test`.`t2` where ((`test`.`t2`.`a` = '1')) select * from t1, t2 @@ -4528,7 +4528,7 @@ id select_type table type possible_keys 1 SIMPLE b system NULL NULL NULL NULL 1 100.00 1 SIMPLE a ALL NULL NULL NULL NULL 4 50.00 Warnings: -Note 1644 Table 'b' was const-table optimized, no runtime access required +Note 1644 Table 'b' was optimized away, or const'ified by optimizer Note 1003 select `test`.`a`.`k` AS `k`,`test`.`a`.`uq` AS `uq`,NULL AS `k`,NULL AS `uq` from `test`.`t` `a` left join `test`.`t` `b` on((isnull(`test`.`a`.`k`) and (`test`.`a`.`uq` = NULL))) select * from t as a left join t as b on a.k is null and a.uq=b.uq; === modified file 'sql/abstract_query_plan.cc' --- a/sql/abstract_query_plan.cc 2010-11-16 13:26:19 +0000 +++ b/sql/abstract_query_plan.cc 2010-11-17 11:59:32 +0000 @@ -298,6 +298,16 @@ namespace AQP DBUG_VOID_RETURN; } + /* Tables below 'const_tables' has been const'ified, or entirely + * optimized away due to 'impossible WHERE/ON' + */ + if (join_tab < join->join_tab+join->const_tables) + { + DBUG_PRINT("info", ("Operation %d is const-optimized.", m_tab_no)); + m_access_type= AT_FIXED; + DBUG_VOID_RETURN; + } + /* First non-const table may provide 'simple' ordering for entire join */ if (join_tab == join->join_tab+join->const_tables) { @@ -309,11 +319,6 @@ namespace AQP */ switch (join_tab->type) { - case JT_SYSTEM: - DBUG_PRINT("info", ("Operation %d is const-optimized.", m_tab_no)); - m_access_type= AT_FIXED; - break; - case JT_EQ_REF: case JT_CONST: m_index_no= join_tab->ref.key; === modified file 'sql/ha_ndbcluster.cc' --- a/sql/ha_ndbcluster.cc 2010-11-16 13:26:19 +0000 +++ b/sql/ha_ndbcluster.cc 2010-11-17 11:59:32 +0000 @@ -862,7 +862,6 @@ ndb_pushed_builder_ctx::init_pushability const AQP::Table_access* const table_access = m_plan.get_table_access(i); if (table_access->get_table()->file->ht != ndbcluster_hton) { - m_tables[i].m_maybe_pushable= 0; EXPLAIN_NO_PUSH("Table '%s' not in ndb engine, not pushable", table_access->get_table()->alias); continue; @@ -875,16 +874,14 @@ ndb_pushed_builder_ctx::init_pushability break; case AQP::AT_FIXED: - EXPLAIN_NO_PUSH("Table '%s' was const-table optimized, no runtime access required", + EXPLAIN_NO_PUSH("Table '%s' was optimized away, or const'ified by optimizer", table_access->get_table()->alias); - m_tables[i].m_maybe_pushable= 0; break; case AQP::AT_OTHER: EXPLAIN_NO_PUSH("Table '%s' is not pushable: %s", table_access->get_table()->alias, table_access->get_other_access_reason()); - m_tables[i].m_maybe_pushable= 0; break; case AQP::AT_UNDECIDED: @@ -892,7 +889,6 @@ ndb_pushed_builder_ctx::init_pushability " execution time and '%s' is therefore not pushable.", table_access->get_table()->alias, table_access->get_table()->alias); - m_tables[i].m_maybe_pushable= 0; break; default: --===============8689984159276932855== 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\ # ic60ihx8q8mpn35b # target_branch: file:///net/fimafeng09/export/home/tmp/oleja/mysql\ # /mysql-5.1-telco-7.0-spj-scan-scan/ # testament_sha1: f70b6724f3b865e509fbafdeb436dad4d329ab37 # timestamp: 2010-11-17 12:59:40 +0100 # source_branch: bzr+ssh://oaske@stripped/bzrroot/server\ # /mysql-5.1-telco-7.0-spj/ # base_revision_id: ole.john.aske@stripped\ # zuu9y396ff21j05e # # Begin bundle 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 --===============8689984159276932855==--