mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Fixed bug#18175: The nest_level counter wasn't decremented for union parts which
resulted in a wrong error message. The nest_level counter indicates the depth of nesting for a subselect. It is needed to properly resolve aggregate functions in nested subselects. Obviously it shouldn't be incremented for UNION parts because they have the same level of nesting. This counter was incremented by 1 in the mysql_new_select() function for any new select and wasn't decremented for UNION parts. This resulted in wrongly reported error messages. Now the nest_level counter is decremented by 1 for any union part.
This commit is contained in:
@ -1306,3 +1306,48 @@ id
|
|||||||
5
|
5
|
||||||
99
|
99
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1));
|
||||||
|
avg(1)
|
||||||
|
NULL
|
||||||
|
@ -793,3 +793,51 @@ select id from t1 union all select 99 order by 1;
|
|||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
# End of 4.1 tests
|
# End of 4.1 tests
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#18175: Union select over 129 tables with a sum function fails.
|
||||||
|
#
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1)) union
|
||||||
|
(select avg(1)) union (select avg(1)) union (select avg(1));
|
||||||
|
|
||||||
|
@ -8752,6 +8752,8 @@ union_list:
|
|||||||
yyerror(ER(ER_SYNTAX_ERROR));
|
yyerror(ER(ER_SYNTAX_ERROR));
|
||||||
YYABORT;
|
YYABORT;
|
||||||
}
|
}
|
||||||
|
/* This counter shouldn't be incremented for UNION parts */
|
||||||
|
Lex->nest_level--;
|
||||||
if (mysql_new_select(lex, 0))
|
if (mysql_new_select(lex, 0))
|
||||||
YYABORT;
|
YYABORT;
|
||||||
mysql_init_select(lex);
|
mysql_init_select(lex);
|
||||||
|
Reference in New Issue
Block a user