Commit 391f6b4f authored by Oleksandr Byelkin's avatar Oleksandr Byelkin

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)
parent e835cc85
...@@ -7513,6 +7513,17 @@ bool setup_fields(THD *thd, Ref_ptr_array ref_pointer_array, ...@@ -7513,6 +7513,17 @@ bool setup_fields(THD *thd, Ref_ptr_array ref_pointer_array,
thd->column_usage= column_usage; thd->column_usage= column_usage;
DBUG_PRINT("info", ("thd->column_usage: %d", thd->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) if (allow_sum_func)
thd->lex->allow_sum_func.set_bit(thd->lex->current_select->nest_level); thd->lex->allow_sum_func.set_bit(thd->lex->current_select->nest_level);
thd->where= THD::DEFAULT_WHERE; thd->where= THD::DEFAULT_WHERE;
......
...@@ -5288,7 +5288,6 @@ bool LEX::add_unit_in_brackets(SELECT_LEX *nselect) ...@@ -5288,7 +5288,6 @@ bool LEX::add_unit_in_brackets(SELECT_LEX *nselect)
DBUG_ASSERT(nselect->outer_select() == dummy_select); DBUG_ASSERT(nselect->outer_select() == dummy_select);
current_select= dummy_select; current_select= dummy_select;
current_select->nest_level--;
SELECT_LEX_UNIT *unit= nselect->master_unit(); SELECT_LEX_UNIT *unit= nselect->master_unit();
Table_ident *ti= new (thd->mem_root) Table_ident(unit); Table_ident *ti= new (thd->mem_root) Table_ident(unit);
...@@ -5314,7 +5313,6 @@ bool LEX::add_unit_in_brackets(SELECT_LEX *nselect) ...@@ -5314,7 +5313,6 @@ bool LEX::add_unit_in_brackets(SELECT_LEX *nselect)
derived_tables|= DERIVED_SUBQUERY; derived_tables|= DERIVED_SUBQUERY;
current_select= nselect; current_select= nselect;
current_select->nest_level++;
DBUG_RETURN(rc); DBUG_RETURN(rc);
} }
......
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