summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mysql-test/r/subselect.result6
-rw-r--r--mysql-test/t/subselect.test2
-rw-r--r--sql/sql_yacc.yy5
3 files changed, 11 insertions, 2 deletions
diff --git a/mysql-test/r/subselect.result b/mysql-test/r/subselect.result
index 625fb9f9c29..52cd500944c 100644
--- a/mysql-test/r/subselect.result
+++ b/mysql-test/r/subselect.result
@@ -1368,4 +1368,10 @@ insert into t1 values ('tttt');
select * from t1 where ('a','b')=(select 'a','b' from t1 union select 'a','b' from t1);
s1
tttt
+explain (select * from t1);
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 system NULL NULL NULL NULL 1
+(select * from t1);
+s1
+tttt
drop table t1;
diff --git a/mysql-test/t/subselect.test b/mysql-test/t/subselect.test
index 4b8d63b681e..bd6a4037f3d 100644
--- a/mysql-test/t/subselect.test
+++ b/mysql-test/t/subselect.test
@@ -931,4 +931,6 @@ create table t1 (s1 char(5));
select (select 'a','b' from t1 union select 'a','b' from t1) from t1;
insert into t1 values ('tttt');
select * from t1 where ('a','b')=(select 'a','b' from t1 union select 'a','b' from t1);
+explain (select * from t1);
+(select * from t1);
drop table t1;
diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy
index c753123b2be..b84a21b1440 100644
--- a/sql/sql_yacc.yy
+++ b/sql/sql_yacc.yy
@@ -2012,8 +2012,9 @@ select_init:
YYABORT;
}
/* select in braces, can't contain global parameters */
- sel->master_unit()->global_parameters=
- sel->master_unit()->fake_select_lex;
+ if (sel->master_unit()->fake_select_lex)
+ sel->master_unit()->global_parameters=
+ sel->master_unit()->fake_select_lex;
} union_opt;
select_init2: