diff --git a/sql/sql_derived.cc b/sql/sql_derived.cc index 677a4c4d91a..85a85b9c3b2 100644 --- a/sql/sql_derived.cc +++ b/sql/sql_derived.cc @@ -1242,18 +1242,11 @@ bool pushdown_cond_for_derived(THD *thd, Item *cond, TABLE_LIST *derived) (uchar*) sl); if (!extracted_cond_copy) 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); sl->cond_pushed_into_having= extracted_cond_copy; } thd->lex->current_select= save_curr_select; return false; -err: - thd->lex->current_select= save_curr_select; - return true; } diff --git a/sql/sql_lex.cc b/sql/sql_lex.cc index 592de98ca0f..4d161b32577 100644 --- a/sql/sql_lex.cc +++ b/sql/sql_lex.cc @@ -4923,6 +4923,7 @@ void binlog_unsafe_map_init() void st_select_lex::collect_grouping_fields(THD *thd) { + grouping_tmp_fields.empty(); List_iterator li(join->fields_list); Item *item= li++; for (uint i= 0; i < master_unit()->derived->table->s->fields; i++, (item=li++))