2001-09-27 23:05:54 -06:00
drop table if exists t1;
SET SQL_SAFE_UPDATES=1,SQL_SELECT_LIMIT=4, SQL_MAX_JOIN_SIZE=9;
2003-04-24 09:18:53 +03:00
create table t1 (a int auto_increment primary key, b char(20));
2001-09-27 23:05:54 -06:00
insert into t1 values(1,"test");
SELECT SQL_BUFFER_RESULT * from t1;
2000-12-28 03:56:38 +02:00
a b
1 test
2001-09-27 23:05:54 -06:00
update t1 set b="a" where a=1;
delete from t1 where a=1;
insert into t1 values(1,"test"),(2,"test2");
SELECT SQL_BUFFER_RESULT * from t1;
2000-12-28 03:56:38 +02:00
a b
1 test
2 test2
2001-09-27 23:05:54 -06:00
update t1 set b="a" where a=1;
2003-06-27 03:04:54 +03:00
select 1 from t1,t1 as t2,t1 as t3;
2000-12-28 03:56:38 +02:00
1
1
1
1
1
2001-09-27 23:05:54 -06:00
update t1 set b="a";
2003-06-04 18:28:51 +03:00
ERROR HY000: You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column
2001-09-27 23:05:54 -06:00
update t1 set b="a" where b="test";
2003-06-04 18:28:51 +03:00
ERROR HY000: You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column
2001-09-27 23:05:54 -06:00
delete from t1;
2003-06-04 18:28:51 +03:00
ERROR HY000: You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column
2001-09-27 23:05:54 -06:00
delete from t1 where b="test";
2003-06-04 18:28:51 +03:00
ERROR HY000: You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column
2001-09-27 23:05:54 -06:00
delete from t1 where a+0=1;
2003-06-04 18:28:51 +03:00
ERROR HY000: You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column
2001-09-27 23:05:54 -06:00
select 1 from t1,t1 as t2,t1 as t3,t1 as t4,t1 as t5;
2004-06-15 22:18:20 -05:00
ERROR 42000: The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay
2001-09-27 23:05:54 -06:00
update t1 set b="a" limit 1;
update t1 set b="a" where b="b" limit 2;
delete from t1 where b="test" limit 1;
delete from t1 where a+0=1 limit 2;
2003-06-27 06:40:24 +03:00
alter table t1 add key b (b);
2003-04-24 09:18:53 +03:00
SET MAX_JOIN_SIZE=2;
SELECT @@MAX_JOIN_SIZE, @@SQL_BIG_SELECTS;
2003-07-06 19:09:57 +03:00
@@MAX_JOIN_SIZE @@SQL_BIG_SELECTS
2003-04-24 09:18:53 +03:00
2 0
insert into t1 values (null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a");
2003-06-27 06:40:24 +03:00
SELECT * from t1 order by a;
2004-06-15 22:18:20 -05:00
ERROR 42000: The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay
2003-04-24 09:18:53 +03:00
SET SQL_BIG_SELECTS=1;
2003-06-27 06:40:24 +03:00
SELECT * from t1 order by a;
2003-04-24 09:18:53 +03:00
a b
2 test2
2003-06-27 06:40:24 +03:00
3 a
2003-04-24 09:18:53 +03:00
4 a
5 a
SET MAX_JOIN_SIZE=2;
SELECT * from t1;
2004-06-15 22:18:20 -05:00
ERROR 42000: The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay
2003-04-24 09:18:53 +03:00
SET MAX_JOIN_SIZE=DEFAULT;
SELECT * from t1;
a b
2 test2
2003-06-27 06:40:24 +03:00
3 a
2003-04-24 09:18:53 +03:00
4 a
5 a
2003-06-27 03:04:54 +03:00
SELECT @@MAX_SEEKS_FOR_KEY;
2003-08-19 00:08:08 +03:00
@@MAX_SEEKS_FOR_KEY
2003-06-27 03:04:54 +03:00
4294967295
analyze table t1;
Table Op Msg_type Msg_text
test.t1 analyze status OK
insert into t1 values (null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a");
2003-08-22 04:07:40 +03:00
explain select STRAIGHT_JOIN * from t1,t1 as t2 where t1.b=t2.b;
2003-08-19 00:08:08 +03:00
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ALL b NULL NULL NULL 21
2003-10-08 12:01:58 +03:00
1 SIMPLE t2 ref b b 21 test.t1.b 6 Using where
2003-06-27 03:04:54 +03:00
set MAX_SEEKS_FOR_KEY=1;
2003-08-22 04:07:40 +03:00
explain select STRAIGHT_JOIN * from t1,t1 as t2 where t1.b=t2.b;
2003-08-19 00:08:08 +03:00
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ALL b NULL NULL NULL 21
1 SIMPLE t2 ref b b 21 test.t1.b 6 Using where
2003-06-27 03:04:54 +03:00
SET MAX_SEEKS_FOR_KEY=DEFAULT;
2001-09-27 23:05:54 -06:00
drop table t1;
SET SQL_SAFE_UPDATES=0,SQL_SELECT_LIMIT=DEFAULT, SQL_MAX_JOIN_SIZE=DEFAULT;