From d8b4d6bd26c185d9e8072abb0f9f28f72c894a20 Mon Sep 17 00:00:00 2001 From: "Sinisa@sinisa.nasamreza.org" <> Date: Mon, 9 Dec 2002 20:47:47 +0200 Subject: [PATCH] fix for a bug with UNION in sub-select's and start working on UNION's in derived tables --- mysql-test/r/union.result | 3 +++ mysql-test/t/union.test | 1 + sql/sql_union.cc | 2 ++ sql/sql_yacc.yy | 2 +- 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/union.result b/mysql-test/r/union.result index 02dda58d48..9f62ffe5c4 100644 --- a/mysql-test/r/union.result +++ b/mysql-test/r/union.result @@ -201,3 +201,6 @@ set SQL_SELECT_LIMIT=DEFAULT; drop table t1,t2; select * union select 1; No tables used +select 1 as a,(select a union select a); +a (select a union select a) +1 1 diff --git a/mysql-test/t/union.test b/mysql-test/t/union.test index 9ddfda7872..449bafbdef 100644 --- a/mysql-test/t/union.test +++ b/mysql-test/t/union.test @@ -103,3 +103,4 @@ drop table t1,t2; --error 1096 select * union select 1; +select 1 as a,(select a union select a); diff --git a/sql/sql_union.cc b/sql/sql_union.cc index 6e8c2ebdb5..6b0f6b660a 100644 --- a/sql/sql_union.cc +++ b/sql/sql_union.cc @@ -125,6 +125,8 @@ int st_select_lex_unit::prepare(THD *thd, select_result *result) SELECT_LEX_NODE *lex_select_save= thd->lex.current_select; SELECT_LEX *sl; + if (lex_select_save->linkage != DERIVED_TABLE_TYPE) + thd->lex.current_select=first_select(); /* Global option */ if (((void*)(global_parameters)) == ((void*)this)) { diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index ed8e8f0fb5..c1057033bd 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -2504,7 +2504,7 @@ select_derived: mysql_init_select(lex); lex->current_select->linkage= DERIVED_TABLE_TYPE; } - select_options select_item_list opt_select_from + select_options select_item_list opt_select_from union_opt ; opt_outer: -- 2.30.9