mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
A fix for a bug with derived tables within subselect
within derived tables within ......
This commit is contained in:
@ -65,3 +65,6 @@ a t
|
||||
19 19
|
||||
20 20
|
||||
drop table if exists t1;
|
||||
SELECT * FROM (SELECT (SELECT * FROM (SELECT 1 as a)));
|
||||
(SELECT * FROM (SELECT 1 as a))
|
||||
1
|
||||
|
@ -34,3 +34,4 @@ while ($1)
|
||||
enable_query_log;
|
||||
SELECT * FROM (SELECT * FROM t1) ORDER BY a ASC LIMIT 0,20;
|
||||
drop table if exists t1;
|
||||
SELECT * FROM (SELECT (SELECT * FROM (SELECT 1 as a)));
|
||||
|
@ -50,15 +50,19 @@ int mysql_derived(THD *thd, LEX *lex, SELECT_LEX_UNIT *unit, TABLE_LIST *t)
|
||||
if (res)
|
||||
DBUG_RETURN(-1);
|
||||
|
||||
for (TABLE_LIST *cursor= (TABLE_LIST *)tables;
|
||||
cursor;
|
||||
cursor=cursor->next)
|
||||
for (SELECT_LEX *ssl= sl; ssl; ssl= ssl->next_select_in_list())
|
||||
{
|
||||
if (cursor->derived)
|
||||
TABLE_LIST *t_tables= (TABLE_LIST *)ssl->table_list.first;
|
||||
for (TABLE_LIST *cursor= (TABLE_LIST *)t_tables;
|
||||
cursor;
|
||||
cursor=cursor->next)
|
||||
{
|
||||
res= mysql_derived(thd, lex, (SELECT_LEX_UNIT *)cursor->derived,
|
||||
cursor);
|
||||
if (res) DBUG_RETURN(res);
|
||||
if (cursor->derived)
|
||||
{
|
||||
res= mysql_derived(thd, lex, (SELECT_LEX_UNIT *)cursor->derived,
|
||||
cursor);
|
||||
if (res) DBUG_RETURN(res);
|
||||
}
|
||||
}
|
||||
}
|
||||
Item *item;
|
||||
|
Reference in New Issue
Block a user