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).
| Thread |
|---|
| • bzr push into mysql-5.5 branch (ole.john.aske:3235 to 3236) Bug#58134 | Ole John Aske | 13 Jan |