From b2a6994b22bff1ee9cb9afd730bd0b88eff978ba Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 9 Sep 2003 15:23:38 +0300 Subject: [PATCH] Fix for a bug #1226. Happens when braces are used on a single select, which leads to the uninitialized global parameters structure. --- mysql-test/r/subselect.result | 6 ++++++ mysql-test/t/subselect.test | 2 ++ 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: