mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 20:12:31 +01:00
MDEV-26362: incorrect nest_level value with INTERSECT
Add DBUG_ASSERT (should be kept in merge) Fix nest_level assignment in LEX::add_unit_in_brackets (should be ignored in merge to 10.4)
This commit is contained in:
parent
e835cc851e
commit
391f6b4f1e
2 changed files with 11 additions and 2 deletions
|
@ -7513,6 +7513,17 @@ bool setup_fields(THD *thd, Ref_ptr_array ref_pointer_array,
|
|||
|
||||
thd->column_usage= column_usage;
|
||||
DBUG_PRINT("info", ("thd->column_usage: %d", thd->column_usage));
|
||||
/*
|
||||
Followimg 2 condition always should be true (but they was added
|
||||
due to an error present only in 10.3):
|
||||
1) nest_level shoud be 0 or positive;
|
||||
2) nest level of all SELECTs on the same level shoud be equal first
|
||||
SELECT on this level (and each other).
|
||||
*/
|
||||
DBUG_ASSERT(thd->lex->current_select->nest_level >= 0);
|
||||
DBUG_ASSERT(thd->lex->current_select->master_unit()->first_select()
|
||||
->nest_level ==
|
||||
thd->lex->current_select->nest_level);
|
||||
if (allow_sum_func)
|
||||
thd->lex->allow_sum_func.set_bit(thd->lex->current_select->nest_level);
|
||||
thd->where= THD::DEFAULT_WHERE;
|
||||
|
|
|
@ -5288,7 +5288,6 @@ bool LEX::add_unit_in_brackets(SELECT_LEX *nselect)
|
|||
DBUG_ASSERT(nselect->outer_select() == dummy_select);
|
||||
|
||||
current_select= dummy_select;
|
||||
current_select->nest_level--;
|
||||
|
||||
SELECT_LEX_UNIT *unit= nselect->master_unit();
|
||||
Table_ident *ti= new (thd->mem_root) Table_ident(unit);
|
||||
|
@ -5314,7 +5313,6 @@ bool LEX::add_unit_in_brackets(SELECT_LEX *nselect)
|
|||
derived_tables|= DERIVED_SUBQUERY;
|
||||
|
||||
current_select= nselect;
|
||||
current_select->nest_level++;
|
||||
DBUG_RETURN(rc);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue