fixed uncachable union (bug #150)

mysql-test/r/union.result:
  sect of uncachable union
mysql-test/t/union.test:
  sect of uncachable union
sql/sql_lex.h:
  fixed uncachable union
This commit is contained in:
unknown 2003-03-14 14:16:09 +02:00
parent 13d28097e7
commit 6da897e04b
3 changed files with 12 additions and 4 deletions

View File

@ -269,3 +269,7 @@ id select_type table type possible_keys key key_len ref rows Extra
drop table t1,t2;
(select 1) union (select 2) order by 0;
Unknown column '0' in 'order clause'
SELECT @a:=1 UNION SELECT @a:=@a+1;
@a:=1
1
2

View File

@ -144,3 +144,5 @@ explain (select * from t1 where a=1) union (select * from t1 where b=1);
drop table t1,t2;
--error 1054
(select 1) union (select 2) order by 0;
SELECT @a:=1 UNION SELECT @a:=@a+1;

View File

@ -501,11 +501,13 @@ typedef struct st_lex
but we should merk all subselects as uncacheable from current till
most upper
*/
for (SELECT_LEX_NODE *sl= current_select;
sl != &select_lex;
sl= sl->outer_select())
SELECT_LEX_NODE *sl;
SELECT_LEX_UNIT *un;
for (sl= current_select, un= sl->master_unit();
un != &unit;
sl= sl->outer_select(), un= sl->master_unit())
{
sl->uncacheable = sl->master_unit()->uncacheable= 1;
sl->uncacheable = un->uncacheable= 1;
}
}
} LEX;