diff options
author | unknown <Sinisa@sinisa.nasamreza.org> | 2003-09-09 15:23:38 +0300 |
---|---|---|
committer | unknown <Sinisa@sinisa.nasamreza.org> | 2003-09-09 15:23:38 +0300 |
commit | b2a6994b22bff1ee9cb9afd730bd0b88eff978ba (patch) | |
tree | af5b9d9e7a58ba397cfd79cb87978e30ac54b584 | |
parent | d2008574d618db0fb1eafddb3ea99ddd3f0529d3 (diff) | |
download | mariadb-git-b2a6994b22bff1ee9cb9afd730bd0b88eff978ba.tar.gz |
Fix for a bug #1226.
Happens when braces are used on a single select, which leads
to the uninitialized global parameters structure.
-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: |