Commit 2c9bf0ae authored by Igor Babaev's avatar Igor Babaev

This commit adds the same call of st_select_lex::set_unique_exclude() that

complemented the fix for MDEV-24823 in 10.2. As it is the only call of
this function in 10.3 the commit also has added the code of the function.
parent c425d93b
......@@ -1013,7 +1013,7 @@ int mysql_multi_delete_prepare(THD *thd)
Multi-delete can't be constructed over-union => we always have
single SELECT on top and have to check underlying SELECTs of it
*/
lex->select_lex.exclude_from_table_unique_test= TRUE;
lex->select_lex.set_unique_exclude();
/* Fix tables-to-be-deleted-from list to point at opened tables */
for (target_tbl= (TABLE_LIST*) aux_tables;
target_tbl;
......
......@@ -4927,6 +4927,27 @@ bool st_select_lex::save_prep_leaf_tables(THD *thd)
}
/**
Set exclude_from_table_unique_test for selects of this select and all selects
belonging to the underlying units of derived tables or views
*/
void st_select_lex::set_unique_exclude()
{
exclude_from_table_unique_test= TRUE;
for (SELECT_LEX_UNIT *unit= first_inner_unit();
unit;
unit= unit->next_unit())
{
if (unit->derived && unit->derived->is_view_or_derived())
{
for (SELECT_LEX *sl= unit->first_select(); sl; sl= sl->next_select())
sl->set_unique_exclude();
}
}
}
/*
Return true if this select_lex has been converted into a semi-join nest
within 'ancestor'.
......
......@@ -1354,6 +1354,8 @@ class st_select_lex: public st_select_lex_node
bool save_leaf_tables(THD *thd);
bool save_prep_leaf_tables(THD *thd);
void set_unique_exclude();
bool is_merged_child_of(st_select_lex *ancestor);
/*
......
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