diff options
-rw-r--r-- | mysql-test/r/subselect.result | 6 | ||||
-rw-r--r-- | mysql-test/t/subselect.test | 2 | ||||
-rw-r--r-- | sql/sql_yacc.yy | 5 |
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: |