mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
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
This commit is contained in:
@ -388,7 +388,6 @@ bool mysql_derived_merge(THD *thd, LEX *lex, TABLE_LIST *derived)
|
|||||||
thd->save_prep_leaf_list= TRUE;
|
thd->save_prep_leaf_list= TRUE;
|
||||||
|
|
||||||
arena= thd->activate_stmt_arena_if_needed(&backup); // For easier test
|
arena= thd->activate_stmt_arena_if_needed(&backup); // For easier test
|
||||||
derived->merged= TRUE;
|
|
||||||
|
|
||||||
if (!derived->merged_for_insert ||
|
if (!derived->merged_for_insert ||
|
||||||
(derived->is_multitable() &&
|
(derived->is_multitable() &&
|
||||||
@ -452,6 +451,7 @@ bool mysql_derived_merge(THD *thd, LEX *lex, TABLE_LIST *derived)
|
|||||||
if (parent_lex->join)
|
if (parent_lex->join)
|
||||||
parent_lex->join->table_count+= dt_select->join->table_count - 1;
|
parent_lex->join->table_count+= dt_select->join->table_count - 1;
|
||||||
}
|
}
|
||||||
|
derived->merged= TRUE;
|
||||||
if (derived->get_unit()->prepared)
|
if (derived->get_unit()->prepared)
|
||||||
{
|
{
|
||||||
Item *expr= derived->on_expr;
|
Item *expr= derived->on_expr;
|
||||||
|
Reference in New Issue
Block a user