Commit 55eb6fa5 authored by Igor Babaev's avatar Igor Babaev

Another attempt to fix bug mdev-10785 + cleanup for the previous attempt.

parent c22d307a
...@@ -1242,18 +1242,11 @@ bool pushdown_cond_for_derived(THD *thd, Item *cond, TABLE_LIST *derived) ...@@ -1242,18 +1242,11 @@ bool pushdown_cond_for_derived(THD *thd, Item *cond, TABLE_LIST *derived)
(uchar*) sl); (uchar*) sl);
if (!extracted_cond_copy) if (!extracted_cond_copy)
continue; continue;
/*
Create the conjunction of the existing having condition of sl
and the pushed condition, take it as the new having condition of sl
and fix this new condition
*/
extracted_cond_copy->walk(&Item::cleanup_processor, 0, 0); extracted_cond_copy->walk(&Item::cleanup_processor, 0, 0);
sl->cond_pushed_into_having= extracted_cond_copy; sl->cond_pushed_into_having= extracted_cond_copy;
} }
thd->lex->current_select= save_curr_select; thd->lex->current_select= save_curr_select;
return false; return false;
err:
thd->lex->current_select= save_curr_select;
return true;
} }
...@@ -4923,6 +4923,7 @@ void binlog_unsafe_map_init() ...@@ -4923,6 +4923,7 @@ void binlog_unsafe_map_init()
void st_select_lex::collect_grouping_fields(THD *thd) void st_select_lex::collect_grouping_fields(THD *thd)
{ {
grouping_tmp_fields.empty();
List_iterator<Item> li(join->fields_list); List_iterator<Item> li(join->fields_list);
Item *item= li++; Item *item= li++;
for (uint i= 0; i < master_unit()->derived->table->s->fields; i++, (item=li++)) for (uint i= 0; i < master_unit()->derived->table->s->fields; i++, (item=li++))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment