From c4930a820aeba156169b157971223bed81ea1876 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Mon, 5 Feb 2018 16:00:13 +0100 Subject: [PATCH] don't set derived->merged until derived is really irreversibly merged it was set before big if() that could decide not to merge and go with materialization. this fixes a crash in main.view test --- sql/sql_derived.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/sql_derived.cc b/sql/sql_derived.cc index 60827bd1772..0147271f068 100644 --- a/sql/sql_derived.cc +++ b/sql/sql_derived.cc @@ -388,7 +388,6 @@ bool mysql_derived_merge(THD *thd, LEX *lex, TABLE_LIST *derived) thd->save_prep_leaf_list= TRUE; arena= thd->activate_stmt_arena_if_needed(&backup); // For easier test - derived->merged= TRUE; if (!derived->merged_for_insert || (derived->is_multitable() && @@ -452,6 +451,7 @@ bool mysql_derived_merge(THD *thd, LEX *lex, TABLE_LIST *derived) if (parent_lex->join) parent_lex->join->table_count+= dt_select->join->table_count - 1; } + derived->merged= TRUE; if (derived->get_unit()->prepared) { Item *expr= derived->on_expr;