diff --git a/mysql-test/r/derived.result b/mysql-test/r/derived.result index 5a41a51463eb11c11a00cc295c4e9dc76fab4da1..822993a7bf2e5e632ac24457e41e0f573b50e154 100644 --- a/mysql-test/r/derived.result +++ b/mysql-test/r/derived.result @@ -1,4 +1,4 @@ -drop table if exists t1,t2; +drop table if exists t1,t2,t3; CREATE TABLE t1 (a int not null, b char (10) not null); insert into t1 values(1,'a'),(2,'b'),(3,'c'),(3,'c'); CREATE TABLE t2 (a int not null, b char (10) not null); @@ -7,4 +7,10 @@ select t1.a,t3.y from t1,(select a as y from t2 where b='c') as t3 where t1.a a y 3 3 3 3 -drop table if exists t1.t2; +CREATE TABLE t3 (a int not null, b char (10) not null); +insert into t3 values (3,'f'),(4,'y'),(5,'z'),(6,'c'); +select t1.a,t4.y from t1,(select t2.a as y from t2,(select t3.b from t3 where t3.a>3) as t5 where t2.b=t5.b) as t4 where t1.a = t4.y; +a y +3 3 +3 3 +drop table if exists t1.t2,t3; diff --git a/mysql-test/t/derived.test b/mysql-test/t/derived.test index 4a3e8e86d4ab97bc54164aea8e6344336a713cb4..c5f57007e54be03e1a7e2fee3e641830c96ad9bb 100644 --- a/mysql-test/t/derived.test +++ b/mysql-test/t/derived.test @@ -1,7 +1,10 @@ -drop table if exists t1,t2; +drop table if exists t1,t2,t3; CREATE TABLE t1 (a int not null, b char (10) not null); insert into t1 values(1,'a'),(2,'b'),(3,'c'),(3,'c'); CREATE TABLE t2 (a int not null, b char (10) not null); insert into t2 values (3,'c'),(4,'d'),(5,'f'),(6,'e'); select t1.a,t3.y from t1,(select a as y from t2 where b='c') as t3 where t1.a = t3.y; -drop table if exists t1.t2; \ No newline at end of file +CREATE TABLE t3 (a int not null, b char (10) not null); +insert into t3 values (3,'f'),(4,'y'),(5,'z'),(6,'c'); +select t1.a,t4.y from t1,(select t2.a as y from t2,(select t3.b from t3 where t3.a>3) as t5 where t2.b=t5.b) as t4 where t1.a = t4.y; +drop table if exists t1.t2,t3; diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index 6317b21a603eee0c415fb05d4accaec7159168af..24321dbdb53fa4b6bddcae70dc6be793ad79af21 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -2155,8 +2155,10 @@ join_table: | '(' SELECT_SYM select_part3 ')' opt_table_alias { LEX *lex=Lex; + SELECT_LEX *select_to_execute= lex->select; lex->select=lex->select->prev; - if (!($$=add_table_to_list(new Table_ident(Lex->last_select),$5,0,TL_UNLOCK))) + if (!($$=add_table_to_list(new Table_ident(select_to_execute), + $5,0,TL_UNLOCK))) YYABORT; }