mirror of
https://github.com/MariaDB/server.git
synced 2025-07-27 18:02:13 +03:00
MDEV-334: Backport of UNION ALL optimization from mysql-5.7.
Although the original code of mysql-5.7 was adjusted to the current MariaDB code the main ideas of the optimization were preserved.
This commit is contained in:
@ -5592,7 +5592,7 @@ static bool execute_sqlcom_select(THD *thd, TABLE_LIST *all_tables)
|
||||
bool res;
|
||||
/* assign global limit variable if limit is not given */
|
||||
{
|
||||
SELECT_LEX *param= lex->unit.global_parameters;
|
||||
SELECT_LEX *param= lex->unit.global_parameters();
|
||||
if (!param->explicit_limit)
|
||||
param->select_limit=
|
||||
new Item_int((ulonglong) thd->variables.select_limit);
|
||||
@ -6675,7 +6675,6 @@ mysql_new_select(LEX *lex, bool move_down)
|
||||
unit->first_select()->context.outer_context;
|
||||
}
|
||||
|
||||
select_lex->master_unit()->global_parameters= select_lex;
|
||||
select_lex->include_global((st_select_lex_node**)&lex->all_selects_list);
|
||||
lex->current_select= select_lex;
|
||||
/*
|
||||
@ -7642,7 +7641,7 @@ bool st_select_lex_unit::add_fake_select_lex(THD *thd_arg)
|
||||
fake_select_lex->context.outer_context=first_sl->context.outer_context;
|
||||
/* allow item list resolving in fake select for ORDER BY */
|
||||
fake_select_lex->context.resolve_in_select_list= TRUE;
|
||||
fake_select_lex->context.select_lex= fake_select_lex;
|
||||
fake_select_lex->context.select_lex= fake_select_lex;
|
||||
|
||||
if (!is_union())
|
||||
{
|
||||
@ -7652,7 +7651,6 @@ bool st_select_lex_unit::add_fake_select_lex(THD *thd_arg)
|
||||
(SELECT ... LIMIT n) ORDER BY order_list [LIMIT m]
|
||||
just before the parser starts processing order_list
|
||||
*/
|
||||
global_parameters= fake_select_lex;
|
||||
fake_select_lex->no_table_names_allowed= 1;
|
||||
thd_arg->lex->current_select= fake_select_lex;
|
||||
}
|
||||
|
Reference in New Issue
Block a user