6
drop table if exists t1;
9
SET SQL_SELECT_LIMIT=4, MAX_JOIN_SIZE=9;
10
create table t1 (a int auto_increment primary key, b char(20));
11
insert into t1 values(1,"test");
13
SELECT SQL_BUFFER_RESULT * from t1;
14
update t1 set b="a" where a=1;
15
delete from t1 where a=1;
16
insert into t1 values(1,"test"),(2,"test2");
18
SELECT SQL_BUFFER_RESULT * from t1;
19
update t1 set b="a" where a=1;
20
select 1 from t1 CROSS JOIN t1 as t2 CROSS JOIN t1 as t3;
22
# The following should NOT give errors:
24
update t1 set b="a" where b="test";
26
delete from t1 where b="test";
27
delete from t1 where a+0=1;
28
select 1 from t1 CROSS JOIN t1 as t2 CROSS JOIN t1 as t3 CROSS JOIN t1 as t4 CROSS JOIN t1 as t5;
30
# The following should be ok:
31
update t1 set b="a" limit 1;
32
update t1 set b="a" where b="b" limit 2;
33
delete from t1 where b="test" limit 1;
34
delete from t1 where a+0=1 limit 2;
36
# Test SQL_BIG_SELECTS
38
alter table t1 add key b (b);
40
SELECT @@MAX_JOIN_SIZE, @@SQL_BIG_SELECTS;
41
insert into t1 values (null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a");
42
--error ER_TOO_BIG_SELECT
43
SELECT * from t1 order by a;
44
SET SQL_BIG_SELECTS=1;
45
SELECT * from t1 order by a;
47
--error ER_TOO_BIG_SELECT
49
SET MAX_JOIN_SIZE=DEFAULT;
53
# Test MAX_SEEKS_FOR_KEY
56
insert into t1 values (null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a");
57
explain select STRAIGHT_JOIN * from t1,t1 as t2 where t1.b=t2.b;
58
set MAX_SEEKS_FOR_KEY=1;
59
explain select STRAIGHT_JOIN * from t1,t1 as t2 where t1.b=t2.b;
60
SET MAX_SEEKS_FOR_KEY=DEFAULT;
65
create table t1 (a int);
66
insert into t1 values (1),(2),(3),(4),(5);
67
insert into t1 select * from t1;
68
insert into t1 select * from t1;
69
insert into t1 select * from t1;
71
set local max_join_size=8;
72
--error ER_TOO_BIG_SELECT
73
select * from (select * from t1) x;
75
set local max_join_size=1;
76
--error ER_TOO_BIG_SELECT
77
select * from (select a.a as aa, b.a as ba from t1 a, t1 b) x;
79
set local max_join_size=1;
80
--error ER_TOO_BIG_SELECT
81
select * from (select 1 union select 2 union select 3) x;
84
SET SQL_SELECT_LIMIT=DEFAULT, MAX_JOIN_SIZE=DEFAULT;