From: Ole John Aske Date: January 13 2011 9:24am Subject: bzr push into mysql-5.5 branch (ole.john.aske:3235 to 3236) Bug#58134 List-Archive: http://lists.mysql.com/commits/128611 X-Bug: 58134 Message-Id: <20110113092431.E16F9223@fimafeng09.norway.sun.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 3236 Ole John Aske 2011-01-13 Fix for bug#58134: 'Incorrectly condition pushdown inside subquery to NDB engine' An incorrect 'table_map' containing both the table itself, and possible any outer-refs if this was the last table in the subquery, was presented to make_cond_for_table(). As a pushed condition is only able to refer column from the table the condition is pushed to, nothing else than columns from the table itself (tab->table->map) may be refered in the pushed condition constructed by 'push_cond= make_cond_for_table()'. Also fix a minor 'copy and paste' bug in a comment inside make_cond_for_table(). No testcase is possible on mainbranch as the NDB engine is not available (yet) on mysql >= 5.5 modified: sql/sql_select.cc 3235 Georgi Kodinov 2011-01-13 [merge] null merge of the version bumps. === modified file 'sql/sql_select.cc' --- a/sql/sql_select.cc 2011-01-12 09:31:41 +0000 +++ b/sql/sql_select.cc 2011-01-13 09:20:45 +0000 @@ -6480,7 +6480,7 @@ make_join_select(JOIN *join,SQL_SELECT * OPTIMIZER_SWITCH_ENGINE_CONDITION_PUSHDOWN) { COND *push_cond= - make_cond_for_table(tmp, current_map, current_map); + make_cond_for_table(tmp, tab->table->map, tab->table->map); if (push_cond) { /* Push condition to handler */ @@ -13099,7 +13099,7 @@ make_cond_for_table(COND *cond, table_ma new_cond->argument_list()->push_back(fix); } /* - Item_cond_and do not need fix_fields for execution, its parameters + Item_cond_or do not need fix_fields for execution, its parameters are fixed or do not need fix_fields, too */ new_cond->quick_fix_field(); No bundle (reason: useless for push emails).