A fix for a bug with derived tables within subselect

within derived tables within ......
parent e8c7830e
...@@ -65,3 +65,6 @@ a t ...@@ -65,3 +65,6 @@ a t
19 19 19 19
20 20 20 20
drop table if exists t1; drop table if exists t1;
SELECT * FROM (SELECT (SELECT * FROM (SELECT 1 as a)));
(SELECT * FROM (SELECT 1 as a))
1
...@@ -33,4 +33,5 @@ while ($1) ...@@ -33,4 +33,5 @@ while ($1)
} }
enable_query_log; enable_query_log;
SELECT * FROM (SELECT * FROM t1) ORDER BY a ASC LIMIT 0,20; SELECT * FROM (SELECT * FROM t1) ORDER BY a ASC LIMIT 0,20;
drop table if exists t1; drop table if exists t1;
\ No newline at end of file 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) ...@@ -50,15 +50,19 @@ int mysql_derived(THD *thd, LEX *lex, SELECT_LEX_UNIT *unit, TABLE_LIST *t)
if (res) if (res)
DBUG_RETURN(-1); DBUG_RETURN(-1);
for (TABLE_LIST *cursor= (TABLE_LIST *)tables; for (SELECT_LEX *ssl= sl; ssl; ssl= ssl->next_select_in_list())
cursor;
cursor=cursor->next)
{ {
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, if (cursor->derived)
cursor); {
if (res) DBUG_RETURN(res); res= mysql_derived(thd, lex, (SELECT_LEX_UNIT *)cursor->derived,
cursor);
if (res) DBUG_RETURN(res);
}
} }
} }
Item *item; Item *item;
......
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