2006-08-16 14:58:49 +02:00
|
|
|
SET SESSION STORAGE_ENGINE = InnoDB;
|
2006-01-05 23:47:49 +01:00
|
|
|
drop table if exists t1,t3,t4,t5;
|
2011-01-10 22:22:40 +01:00
|
|
|
create table t1 (a int, b char(10), key a (a), key b (a,b));
|
2001-09-28 07:05:54 +02:00
|
|
|
insert into t1 values
|
|
|
|
(17,"ddd"),(18,"eee"),(19,"fff"),(19,"yyy"),
|
2011-01-10 22:22:40 +01:00
|
|
|
(14,"aaa"),(16,"ccc"),(16,"xxx"),
|
2001-09-28 07:05:54 +02:00
|
|
|
(20,"ggg"),(21,"hhh"),(22,"iii");
|
|
|
|
handler t1 open as t2;
|
|
|
|
handler t2 read a first;
|
2001-04-07 00:18:33 +02:00
|
|
|
a b
|
|
|
|
14 aaa
|
2001-09-28 07:05:54 +02:00
|
|
|
handler t2 read a next;
|
2001-04-07 00:18:33 +02:00
|
|
|
a b
|
2011-01-10 22:22:40 +01:00
|
|
|
16 ccc
|
2001-09-28 07:05:54 +02:00
|
|
|
handler t2 read a next;
|
2001-04-07 00:18:33 +02:00
|
|
|
a b
|
2011-01-10 22:22:40 +01:00
|
|
|
16 xxx
|
2001-09-28 07:05:54 +02:00
|
|
|
handler t2 read a prev;
|
2001-04-07 00:18:33 +02:00
|
|
|
a b
|
2011-01-10 22:22:40 +01:00
|
|
|
16 ccc
|
2001-09-28 07:05:54 +02:00
|
|
|
handler t2 read a last;
|
2001-04-07 00:18:33 +02:00
|
|
|
a b
|
|
|
|
22 iii
|
2001-09-28 07:05:54 +02:00
|
|
|
handler t2 read a prev;
|
2001-04-07 00:18:33 +02:00
|
|
|
a b
|
|
|
|
21 hhh
|
2001-09-28 07:05:54 +02:00
|
|
|
handler t2 read a prev;
|
2001-04-07 00:18:33 +02:00
|
|
|
a b
|
|
|
|
20 ggg
|
2001-09-28 07:05:54 +02:00
|
|
|
handler t2 read a first;
|
2001-04-07 00:18:33 +02:00
|
|
|
a b
|
|
|
|
14 aaa
|
2001-09-28 07:05:54 +02:00
|
|
|
handler t2 read a prev;
|
2001-04-07 00:18:33 +02:00
|
|
|
a b
|
2001-09-28 07:05:54 +02:00
|
|
|
handler t2 read a last;
|
2001-04-07 00:18:33 +02:00
|
|
|
a b
|
|
|
|
22 iii
|
2001-09-28 07:05:54 +02:00
|
|
|
handler t2 read a prev;
|
2001-04-07 00:18:33 +02:00
|
|
|
a b
|
|
|
|
21 hhh
|
2001-09-28 07:05:54 +02:00
|
|
|
handler t2 read a next;
|
2001-04-07 00:18:33 +02:00
|
|
|
a b
|
|
|
|
22 iii
|
2001-09-28 07:05:54 +02:00
|
|
|
handler t2 read a next;
|
2001-04-07 00:18:33 +02:00
|
|
|
a b
|
2001-09-28 07:05:54 +02:00
|
|
|
handler t2 read a=(15);
|
2001-04-07 00:18:33 +02:00
|
|
|
a b
|
2001-09-28 07:05:54 +02:00
|
|
|
handler t2 read a=(16);
|
2001-04-15 20:14:40 +02:00
|
|
|
a b
|
|
|
|
16 ccc
|
2001-09-28 07:05:54 +02:00
|
|
|
handler t2 read a=(19,"fff");
|
2004-06-15 22:38:36 +02:00
|
|
|
ERROR 42000: Too many key parts specified; max 1 parts allowed
|
2001-09-28 07:05:54 +02:00
|
|
|
handler t2 read b=(19,"fff");
|
2001-04-15 20:14:40 +02:00
|
|
|
a b
|
|
|
|
19 fff
|
2001-09-28 07:05:54 +02:00
|
|
|
handler t2 read b=(19,"yyy");
|
2001-04-15 20:14:40 +02:00
|
|
|
a b
|
|
|
|
19 yyy
|
2001-09-28 07:05:54 +02:00
|
|
|
handler t2 read b=(19);
|
2001-04-15 20:14:40 +02:00
|
|
|
a b
|
|
|
|
19 fff
|
2001-09-28 07:05:54 +02:00
|
|
|
handler t1 read a last;
|
2003-06-04 17:28:51 +02:00
|
|
|
ERROR 42S02: Unknown table 't1' in HANDLER
|
2001-09-28 07:05:54 +02:00
|
|
|
handler t2 read a=(11);
|
2001-04-15 20:14:40 +02:00
|
|
|
a b
|
2001-09-28 07:05:54 +02:00
|
|
|
handler t2 read a>=(11);
|
2001-04-15 20:14:40 +02:00
|
|
|
a b
|
|
|
|
14 aaa
|
2001-09-28 07:05:54 +02:00
|
|
|
handler t2 read a=(18);
|
2001-04-15 20:14:40 +02:00
|
|
|
a b
|
|
|
|
18 eee
|
2001-09-28 07:05:54 +02:00
|
|
|
handler t2 read a>=(18);
|
2001-04-15 20:14:40 +02:00
|
|
|
a b
|
|
|
|
18 eee
|
2001-09-28 07:05:54 +02:00
|
|
|
handler t2 read a>(18);
|
2001-04-15 20:14:40 +02:00
|
|
|
a b
|
|
|
|
19 fff
|
2001-09-28 07:05:54 +02:00
|
|
|
handler t2 read a<=(18);
|
2001-04-15 20:14:40 +02:00
|
|
|
a b
|
|
|
|
18 eee
|
2001-09-28 07:05:54 +02:00
|
|
|
handler t2 read a<(18);
|
2001-04-15 20:14:40 +02:00
|
|
|
a b
|
|
|
|
17 ddd
|
2011-01-10 22:22:40 +01:00
|
|
|
handler t2 read a=(15);
|
|
|
|
a b
|
|
|
|
handler t2 read a>=(15);
|
|
|
|
a b
|
|
|
|
16 ccc
|
|
|
|
handler t2 read a>(15);
|
|
|
|
a b
|
|
|
|
16 ccc
|
|
|
|
handler t2 read a<=(15);
|
|
|
|
a b
|
|
|
|
14 aaa
|
|
|
|
handler t2 read a<(15);
|
|
|
|
a b
|
|
|
|
14 aaa
|
|
|
|
handler t2 read a=(54);
|
|
|
|
a b
|
|
|
|
handler t2 read a>=(54);
|
|
|
|
a b
|
|
|
|
handler t2 read a>(54);
|
|
|
|
a b
|
|
|
|
handler t2 read a<=(54);
|
|
|
|
a b
|
|
|
|
22 iii
|
|
|
|
handler t2 read a<(54);
|
|
|
|
a b
|
|
|
|
22 iii
|
|
|
|
handler t2 read a=(1);
|
|
|
|
a b
|
|
|
|
handler t2 read a>=(1);
|
|
|
|
a b
|
|
|
|
14 aaa
|
|
|
|
handler t2 read a>(1);
|
|
|
|
a b
|
|
|
|
14 aaa
|
|
|
|
handler t2 read a<=(1);
|
|
|
|
a b
|
|
|
|
handler t2 read a<(1);
|
|
|
|
a b
|
2001-09-28 07:05:54 +02:00
|
|
|
handler t2 read a first limit 5;
|
2001-04-15 20:14:40 +02:00
|
|
|
a b
|
|
|
|
14 aaa
|
|
|
|
16 ccc
|
|
|
|
16 xxx
|
|
|
|
17 ddd
|
2011-01-10 22:22:40 +01:00
|
|
|
18 eee
|
2001-09-28 07:05:54 +02:00
|
|
|
handler t2 read a next limit 3;
|
2001-04-15 20:14:40 +02:00
|
|
|
a b
|
|
|
|
19 fff
|
|
|
|
19 yyy
|
2011-01-10 22:22:40 +01:00
|
|
|
20 ggg
|
2001-09-28 07:05:54 +02:00
|
|
|
handler t2 read a prev limit 10;
|
2001-04-15 20:14:40 +02:00
|
|
|
a b
|
2011-01-10 22:22:40 +01:00
|
|
|
19 yyy
|
2001-04-15 20:14:40 +02:00
|
|
|
19 fff
|
|
|
|
18 eee
|
|
|
|
17 ddd
|
|
|
|
16 xxx
|
|
|
|
16 ccc
|
|
|
|
14 aaa
|
2001-09-28 07:05:54 +02:00
|
|
|
handler t2 read a>=(16) limit 4;
|
2001-04-15 20:14:40 +02:00
|
|
|
a b
|
|
|
|
16 ccc
|
|
|
|
16 xxx
|
|
|
|
17 ddd
|
|
|
|
18 eee
|
2001-09-28 07:05:54 +02:00
|
|
|
handler t2 read a>=(16) limit 2,2;
|
2001-04-15 20:14:40 +02:00
|
|
|
a b
|
|
|
|
17 ddd
|
|
|
|
18 eee
|
2001-09-28 07:05:54 +02:00
|
|
|
handler t2 read a last limit 3;
|
2001-04-15 20:14:40 +02:00
|
|
|
a b
|
|
|
|
22 iii
|
|
|
|
21 hhh
|
|
|
|
20 ggg
|
2001-09-28 07:05:54 +02:00
|
|
|
handler t2 read a=(19);
|
2001-04-15 20:14:40 +02:00
|
|
|
a b
|
|
|
|
19 fff
|
2001-09-28 07:05:54 +02:00
|
|
|
handler t2 read a=(19) where b="yyy";
|
2001-04-15 20:14:40 +02:00
|
|
|
a b
|
|
|
|
19 yyy
|
2001-09-28 07:05:54 +02:00
|
|
|
handler t2 read first;
|
2001-04-15 20:14:40 +02:00
|
|
|
a b
|
|
|
|
17 ddd
|
2001-09-28 07:05:54 +02:00
|
|
|
handler t2 read next;
|
2001-04-15 20:14:40 +02:00
|
|
|
a b
|
|
|
|
18 eee
|
2001-09-28 07:05:54 +02:00
|
|
|
handler t2 read next;
|
2001-04-15 20:14:40 +02:00
|
|
|
a b
|
|
|
|
19 fff
|
2001-09-28 07:05:54 +02:00
|
|
|
handler t2 close;
|
2006-08-16 14:58:49 +02:00
|
|
|
handler t1 open;
|
|
|
|
handler t1 read a next;
|
|
|
|
a b
|
|
|
|
14 aaa
|
|
|
|
handler t1 read a next;
|
|
|
|
a b
|
2011-01-10 22:22:40 +01:00
|
|
|
16 ccc
|
2006-08-16 14:58:49 +02:00
|
|
|
handler t1 close;
|
|
|
|
handler t1 open;
|
|
|
|
handler t1 read a prev;
|
|
|
|
a b
|
|
|
|
22 iii
|
|
|
|
handler t1 read a prev;
|
|
|
|
a b
|
|
|
|
21 hhh
|
|
|
|
handler t1 close;
|
|
|
|
handler t1 open as t2;
|
|
|
|
handler t2 read first;
|
|
|
|
a b
|
|
|
|
17 ddd
|
|
|
|
alter table t1 engine = InnoDB;
|
|
|
|
handler t2 read first;
|
|
|
|
ERROR 42S02: Unknown table 't2' in HANDLER
|
2003-01-28 14:36:22 +01:00
|
|
|
handler t1 open as t2;
|
|
|
|
drop table t1;
|
2011-01-10 22:22:40 +01:00
|
|
|
create table t1 (a int not null);
|
2003-01-28 14:36:22 +01:00
|
|
|
insert into t1 values (17);
|
|
|
|
handler t2 read first;
|
2003-06-04 17:28:51 +02:00
|
|
|
ERROR 42S02: Unknown table 't2' in HANDLER
|
2003-02-22 18:22:39 +01:00
|
|
|
handler t1 open as t2;
|
2011-01-10 22:22:40 +01:00
|
|
|
alter table t1 engine=CSV;
|
2003-02-22 18:22:39 +01:00
|
|
|
handler t2 read first;
|
2003-06-04 17:28:51 +02:00
|
|
|
ERROR 42S02: Unknown table 't2' in HANDLER
|
2003-01-28 14:36:22 +01:00
|
|
|
drop table t1;
|
2003-07-04 11:41:01 +02:00
|
|
|
create table t1 (a int);
|
|
|
|
insert into t1 values (1),(2),(3),(4),(5),(6);
|
|
|
|
delete from t1 limit 2;
|
|
|
|
handler t1 open;
|
|
|
|
handler t1 read first;
|
|
|
|
a
|
|
|
|
3
|
|
|
|
handler t1 read first limit 1,1;
|
|
|
|
a
|
|
|
|
4
|
|
|
|
handler t1 read first limit 2,2;
|
|
|
|
a
|
|
|
|
5
|
|
|
|
6
|
|
|
|
delete from t1 limit 3;
|
|
|
|
handler t1 read first;
|
|
|
|
a
|
|
|
|
6
|
|
|
|
drop table t1;
|
2011-01-10 22:22:40 +01:00
|
|
|
create table t1(a int, index (a));
|
2003-07-03 17:57:51 +02:00
|
|
|
insert into t1 values (1), (2), (3);
|
|
|
|
handler t1 open;
|
|
|
|
handler t1 read a=(W);
|
2003-08-18 23:08:08 +02:00
|
|
|
ERROR 42S22: Unknown column 'W' in 'field list'
|
2003-07-04 12:55:25 +02:00
|
|
|
handler t1 read a=(a);
|
2004-06-15 22:38:36 +02:00
|
|
|
ERROR HY000: Incorrect arguments to HANDLER ... READ
|
2003-07-03 17:57:51 +02:00
|
|
|
drop table t1;
|
2004-01-13 12:31:25 +01:00
|
|
|
create table t1 (a char(5));
|
|
|
|
insert into t1 values ("Ok");
|
|
|
|
handler t1 open as t;
|
|
|
|
handler t read first;
|
|
|
|
a
|
|
|
|
Ok
|
|
|
|
use mysql;
|
|
|
|
handler t read first;
|
|
|
|
a
|
|
|
|
Ok
|
|
|
|
handler t close;
|
|
|
|
handler test.t1 open as t;
|
|
|
|
handler t read first;
|
|
|
|
a
|
|
|
|
Ok
|
|
|
|
handler t close;
|
|
|
|
use test;
|
|
|
|
drop table t1;
|
2011-01-10 22:22:40 +01:00
|
|
|
create table t1 ( a int, b int, INDEX a (a) );
|
2004-05-18 20:59:43 +02:00
|
|
|
insert into t1 values (1,2), (2,1);
|
|
|
|
handler t1 open;
|
|
|
|
handler t1 read a=(1) where b=2;
|
|
|
|
a b
|
|
|
|
1 2
|
|
|
|
handler t1 read a=(1) where b=3;
|
|
|
|
a b
|
|
|
|
handler t1 read a=(1) where b=1;
|
|
|
|
a b
|
|
|
|
handler t1 close;
|
|
|
|
drop table t1;
|
2004-09-24 18:39:25 +02:00
|
|
|
create table t1 (c1 char(20));
|
|
|
|
insert into t1 values ("t1");
|
|
|
|
handler t1 open as h1;
|
|
|
|
handler h1 read first limit 9;
|
|
|
|
c1
|
|
|
|
t1
|
|
|
|
create table t2 (c1 char(20));
|
|
|
|
insert into t2 values ("t2");
|
|
|
|
handler t2 open as h2;
|
|
|
|
handler h2 read first limit 9;
|
|
|
|
c1
|
|
|
|
t2
|
|
|
|
create table t3 (c1 char(20));
|
|
|
|
insert into t3 values ("t3");
|
|
|
|
handler t3 open as h3;
|
|
|
|
handler h3 read first limit 9;
|
|
|
|
c1
|
|
|
|
t3
|
|
|
|
create table t4 (c1 char(20));
|
|
|
|
insert into t4 values ("t4");
|
|
|
|
handler t4 open as h4;
|
|
|
|
handler h4 read first limit 9;
|
|
|
|
c1
|
|
|
|
t4
|
|
|
|
create table t5 (c1 char(20));
|
|
|
|
insert into t5 values ("t5");
|
|
|
|
handler t5 open as h5;
|
|
|
|
handler h5 read first limit 9;
|
|
|
|
c1
|
|
|
|
t5
|
|
|
|
alter table t1 engine=MyISAM;
|
|
|
|
handler h1 read first limit 9;
|
2004-10-07 09:50:13 +02:00
|
|
|
ERROR 42S02: Unknown table 'h1' in HANDLER
|
2004-09-24 18:39:25 +02:00
|
|
|
handler h2 read first limit 9;
|
|
|
|
c1
|
|
|
|
t2
|
|
|
|
handler h3 read first limit 9;
|
|
|
|
c1
|
|
|
|
t3
|
|
|
|
handler h4 read first limit 9;
|
|
|
|
c1
|
|
|
|
t4
|
|
|
|
handler h5 read first limit 9;
|
|
|
|
c1
|
|
|
|
t5
|
|
|
|
alter table t5 engine=MyISAM;
|
|
|
|
handler h1 read first limit 9;
|
2004-10-07 09:50:13 +02:00
|
|
|
ERROR 42S02: Unknown table 'h1' in HANDLER
|
2004-09-24 18:39:25 +02:00
|
|
|
handler h2 read first limit 9;
|
|
|
|
c1
|
|
|
|
t2
|
|
|
|
handler h3 read first limit 9;
|
|
|
|
c1
|
|
|
|
t3
|
|
|
|
handler h4 read first limit 9;
|
|
|
|
c1
|
|
|
|
t4
|
|
|
|
handler h5 read first limit 9;
|
2004-10-07 09:50:13 +02:00
|
|
|
ERROR 42S02: Unknown table 'h5' in HANDLER
|
2004-09-24 18:39:25 +02:00
|
|
|
alter table t3 engine=MyISAM;
|
|
|
|
handler h1 read first limit 9;
|
2004-10-07 09:50:13 +02:00
|
|
|
ERROR 42S02: Unknown table 'h1' in HANDLER
|
2004-09-24 18:39:25 +02:00
|
|
|
handler h2 read first limit 9;
|
|
|
|
c1
|
|
|
|
t2
|
|
|
|
handler h3 read first limit 9;
|
2004-10-07 09:50:13 +02:00
|
|
|
ERROR 42S02: Unknown table 'h3' in HANDLER
|
2004-09-24 18:39:25 +02:00
|
|
|
handler h4 read first limit 9;
|
|
|
|
c1
|
|
|
|
t4
|
|
|
|
handler h5 read first limit 9;
|
2004-10-07 09:50:13 +02:00
|
|
|
ERROR 42S02: Unknown table 'h5' in HANDLER
|
2004-09-24 18:39:25 +02:00
|
|
|
handler h2 close;
|
|
|
|
handler h4 close;
|
|
|
|
handler t1 open as h1_1;
|
|
|
|
handler t1 open as h1_2;
|
|
|
|
handler t1 open as h1_3;
|
|
|
|
handler h1_1 read first limit 9;
|
|
|
|
c1
|
|
|
|
t1
|
|
|
|
handler h1_2 read first limit 9;
|
|
|
|
c1
|
|
|
|
t1
|
|
|
|
handler h1_3 read first limit 9;
|
|
|
|
c1
|
|
|
|
t1
|
2006-08-16 19:29:49 +02:00
|
|
|
alter table t1 engine=InnoDB;
|
2004-09-24 18:39:25 +02:00
|
|
|
handler h1_1 read first limit 9;
|
2004-10-07 09:50:13 +02:00
|
|
|
ERROR 42S02: Unknown table 'h1_1' in HANDLER
|
2004-09-24 18:39:25 +02:00
|
|
|
handler h1_2 read first limit 9;
|
2004-10-07 09:50:13 +02:00
|
|
|
ERROR 42S02: Unknown table 'h1_2' in HANDLER
|
2004-09-24 18:39:25 +02:00
|
|
|
handler h1_3 read first limit 9;
|
2004-10-07 09:50:13 +02:00
|
|
|
ERROR 42S02: Unknown table 'h1_3' in HANDLER
|
2004-09-24 18:39:25 +02:00
|
|
|
drop table t1;
|
|
|
|
drop table t2;
|
|
|
|
drop table t3;
|
|
|
|
drop table t4;
|
|
|
|
drop table t5;
|
2005-11-15 21:57:02 +01:00
|
|
|
create table t1 (c1 int);
|
|
|
|
insert into t1 values (1);
|
|
|
|
handler t1 open;
|
|
|
|
handler t1 read first;
|
|
|
|
c1
|
|
|
|
1
|
|
|
|
send the below to another connection, do not wait for the result
|
2006-10-04 23:48:24 +02:00
|
|
|
optimize table t1;
|
2005-11-15 21:57:02 +01:00
|
|
|
proceed with the normal connection
|
|
|
|
handler t1 read next;
|
|
|
|
c1
|
|
|
|
1
|
|
|
|
handler t1 close;
|
|
|
|
read the result from the other connection
|
|
|
|
Table Op Msg_type Msg_text
|
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
The main problem was that ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR
PARTITION took another code path (over mysql_alter_table instead of
mysql_admin_table) which differs in two ways:
1) alter table opens the tables in a different way than admin tables do
resulting in returning with error before it tried the command
2) alter table does not start to send any diagnostic rows to the client
which the lower admin functions continue to use -> resulting in
assertion crash
The fix:
Remapped ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR PARTITION to use
the same code path as ANALYZE/CHECK/OPTIMIZE/REPAIR TABLE t.
Adding check in mysql_admin_table to setup the partition list for
which partitions that should be used.
Partitioned tables will still not work with
REPAIR TABLE/PARTITION USE_FRM, since that requires moving partitions
to tables, REPAIR TABLE t USE_FRM, and check that the data still
fulfills the partitioning function and then move the table back to
being a partition.
NOTE: I have removed the following functions from the handler
interface:
analyze_partitions, check_partitions, optimize_partitions,
repair_partitions
Since they are not longer needed.
THIS ALTERS THE STORAGE ENGINE API
mysql-test/r/handler_innodb.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/r/innodb.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/r/innodb_mysql.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/r/partition.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/r/trigger-trans.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/suite/ndb/r/ndb_partition_key.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/ndb/t/ndb_partition_key.test:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/parts/inc/partition_alter4.inc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/parts/r/partition_alter4_innodb.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/parts/r/partition_alter4_myisam.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/rpl/r/rpl_failed_optimize.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/t/partition.test:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
sql/ha_partition.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a function for returning admin commands result rows
Updated handle_opt_partitions to handle admin commands result rows,
and some error filtering (as mysql_admin_table do).
Removed the functions analyze/check/optimize/repair_partitions
since they have no longer any use.
sql/ha_partition.h:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Removed analyze/check/optimize/repair_partitions since they
are no longer are needed.
sql/handler.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Removed analyze/check/optimize/repair_partitions since they
are no longer are needed.
sql/handler.h:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Removed analyze/check/optimize/repair_partitions since they
are no longer are needed.
sql/mysql_priv.h:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added set_part_state for reuse of code in mysql_admin_table.
(Originally fond in sql/sql_partition.cc:prep_alter_part_table)
sql/protocol.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added one assert and a debug print.
sql/sql_partition.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Refactored code for setting up partition state, set_part_state,
now used in both prep_alter_part_table and
sql_table.cc:mysql_admin_table.
Removed code for handling ANALYZE/CHECK/OPTIMIZE/REPAIR partitions,
since it is now handled by mysql_admin_table.
sql/sql_table.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added functionality in mysql_admin_table to work with partitioned
tables.
Fixed a possible assertion bug for HA_ADMIN_TRY_ALTER
(If analyze would output a row, it fails since the row was already
started).
sql/sql_yacc.yy:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Remapped ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR PARTITION
to use the same code path as ANALYZE/CHECK/OPTIMIZE/REPAIR TABLE
instead of taking the ALTER TABLE path.
Added reset of alter_info for ANALYZE/CHECK/OPTIMIZE/REPAIR TABLE
since it is now used by partitioned tables.
storage/myisam/mi_check.c:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Changed warning message from "Found X parts Should be: Y parts"
to "Found X key parts. Should be Y", since it could be confusing
with partitioned tables.
2008-08-11 20:02:03 +02:00
|
|
|
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
|
2005-11-15 21:57:02 +01:00
|
|
|
test.t1 optimize status OK
|
|
|
|
proceed with the normal connection
|
|
|
|
drop table t1;
|
2006-08-16 14:58:49 +02:00
|
|
|
CREATE TABLE t1 ( no1 smallint(5) NOT NULL default '0', no2 int(10) NOT NULL default '0', PRIMARY KEY (no1,no2));
|
|
|
|
INSERT INTO t1 VALUES (1,274),(1,275),(2,6),(2,8),(4,1),(4,2);
|
|
|
|
HANDLER t1 OPEN;
|
|
|
|
HANDLER t1 READ `primary` = (1, 1000);
|
|
|
|
no1 no2
|
|
|
|
HANDLER t1 READ `primary` PREV;
|
|
|
|
no1 no2
|
|
|
|
1 275
|
2011-01-10 22:22:40 +01:00
|
|
|
HANDLER t1 READ `primary` = (1, 1000);
|
|
|
|
no1 no2
|
|
|
|
HANDLER t1 READ `primary` NEXT;
|
|
|
|
no1 no2
|
|
|
|
2 8
|
2006-08-16 14:58:49 +02:00
|
|
|
DROP TABLE t1;
|
2005-11-15 21:57:02 +01:00
|
|
|
create table t1 (c1 int);
|
|
|
|
insert into t1 values (14397);
|
|
|
|
flush tables with read lock;
|
|
|
|
drop table t1;
|
|
|
|
ERROR HY000: Can't execute the query because you have a conflicting read lock
|
|
|
|
send the below to another connection, do not wait for the result
|
2006-10-04 23:48:24 +02:00
|
|
|
drop table t1;
|
2005-11-15 21:57:02 +01:00
|
|
|
proceed with the normal connection
|
|
|
|
select * from t1;
|
|
|
|
c1
|
|
|
|
14397
|
|
|
|
unlock tables;
|
|
|
|
read the result from the other connection
|
|
|
|
proceed with the normal connection
|
|
|
|
select * from t1;
|
|
|
|
ERROR 42S02: Table 'test.t1' doesn't exist
|
|
|
|
drop table if exists t1;
|
|
|
|
Warnings:
|
|
|
|
Note 1051 Unknown table 't1'
|
2011-01-10 22:22:40 +01:00
|
|
|
create table t1 (a int not null) ENGINE=CSV;
|
2007-08-21 01:50:42 +02:00
|
|
|
--> client 2
|
|
|
|
handler t1 open;
|
|
|
|
ERROR HY000: Table storage engine for 't1' doesn't have this option
|
|
|
|
--> client 1
|
|
|
|
drop table t1;
|
2007-08-30 00:00:49 +02:00
|
|
|
create table t1 (a int);
|
|
|
|
handler t1 open as t1_alias;
|
|
|
|
handler t1_alias read a next;
|
|
|
|
ERROR 42000: Key 'a' doesn't exist in table 't1_alias'
|
|
|
|
handler t1_alias READ a next where inexistent > 0;
|
|
|
|
ERROR 42S22: Unknown column 'inexistent' in 'field list'
|
|
|
|
handler t1_alias read a next;
|
|
|
|
ERROR 42000: Key 'a' doesn't exist in table 't1_alias'
|
|
|
|
handler t1_alias READ a next where inexistent > 0;
|
|
|
|
ERROR 42S22: Unknown column 'inexistent' in 'field list'
|
|
|
|
handler t1_alias close;
|
|
|
|
drop table t1;
|
2011-01-10 22:22:40 +01:00
|
|
|
create temporary table t1 (a int, b char(1), key a (a), key b(a,b));
|
2007-11-01 21:52:56 +01:00
|
|
|
insert into t1 values (0,"a"),(1,"b"),(2,"c"),(3,"d"),(4,"e"),
|
2011-01-10 22:22:40 +01:00
|
|
|
(5,"f"),(6,"g"),(7,"h"),(8,"i"),(9,"j"),(9,'k');
|
2007-11-01 21:52:56 +01:00
|
|
|
select a,b from t1;
|
|
|
|
a b
|
|
|
|
0 a
|
|
|
|
1 b
|
|
|
|
2 c
|
|
|
|
3 d
|
|
|
|
4 e
|
|
|
|
5 f
|
|
|
|
6 g
|
|
|
|
7 h
|
|
|
|
8 i
|
|
|
|
9 j
|
2011-01-10 22:22:40 +01:00
|
|
|
9 k
|
2007-11-01 21:52:56 +01:00
|
|
|
handler t1 open as a1;
|
2011-01-10 22:22:40 +01:00
|
|
|
handler a1 read a=(1);
|
2007-11-01 21:52:56 +01:00
|
|
|
a b
|
|
|
|
1 b
|
|
|
|
handler a1 read a next;
|
|
|
|
a b
|
|
|
|
2 c
|
2011-01-10 22:22:40 +01:00
|
|
|
handler a1 read a next;
|
|
|
|
a b
|
|
|
|
3 d
|
2007-11-01 21:52:56 +01:00
|
|
|
select a,b from t1;
|
|
|
|
ERROR HY000: Can't reopen table: 'a1'
|
|
|
|
handler a1 read a prev;
|
|
|
|
a b
|
2011-01-10 22:22:40 +01:00
|
|
|
2 c
|
2007-11-01 21:52:56 +01:00
|
|
|
handler a1 read a prev;
|
|
|
|
a b
|
2011-01-10 22:22:40 +01:00
|
|
|
1 b
|
2007-11-01 21:52:56 +01:00
|
|
|
handler a1 read a=(6) where b="g";
|
|
|
|
a b
|
|
|
|
6 g
|
|
|
|
handler a1 close;
|
|
|
|
select a,b from t1;
|
|
|
|
a b
|
|
|
|
0 a
|
|
|
|
1 b
|
|
|
|
2 c
|
|
|
|
3 d
|
|
|
|
4 e
|
|
|
|
5 f
|
|
|
|
6 g
|
|
|
|
7 h
|
|
|
|
8 i
|
|
|
|
9 j
|
2011-01-10 22:22:40 +01:00
|
|
|
9 k
|
2007-11-01 21:52:56 +01:00
|
|
|
handler t1 open as a2;
|
2011-01-10 22:22:40 +01:00
|
|
|
handler a2 read a=(9);
|
2007-11-01 21:52:56 +01:00
|
|
|
a b
|
2011-01-10 22:22:40 +01:00
|
|
|
9 j
|
|
|
|
handler a2 read a next;
|
|
|
|
a b
|
|
|
|
9 k
|
|
|
|
handler a2 read a prev limit 2;
|
2007-11-01 21:52:56 +01:00
|
|
|
a b
|
|
|
|
9 j
|
2011-01-10 22:22:40 +01:00
|
|
|
8 i
|
|
|
|
handler a2 read a last;
|
|
|
|
a b
|
|
|
|
9 k
|
2007-11-01 21:52:56 +01:00
|
|
|
handler a2 read a prev;
|
|
|
|
a b
|
2011-01-10 22:22:40 +01:00
|
|
|
9 j
|
2007-11-01 21:52:56 +01:00
|
|
|
handler a2 close;
|
|
|
|
drop table t1;
|
2007-11-20 18:17:53 +01:00
|
|
|
create table t1 (a int);
|
2011-01-10 22:22:40 +01:00
|
|
|
create temporary table t2 (a int, key (a));
|
2007-11-20 18:17:53 +01:00
|
|
|
handler t1 open as a1;
|
|
|
|
handler t2 open as a2;
|
|
|
|
handler a2 read a first;
|
|
|
|
a
|
|
|
|
drop table t1, t2;
|
|
|
|
handler a2 read a next;
|
|
|
|
ERROR 42S02: Unknown table 'a2' in HANDLER
|
|
|
|
handler a1 close;
|
|
|
|
ERROR 42S02: Unknown table 'a1' in HANDLER
|
2011-01-10 22:22:40 +01:00
|
|
|
create table t1 (a int, key (a));
|
2007-11-20 18:17:53 +01:00
|
|
|
create table t2 like t1;
|
|
|
|
handler t1 open as a1;
|
|
|
|
handler t2 open as a2;
|
|
|
|
handler a1 read a first;
|
|
|
|
a
|
|
|
|
handler a2 read a first;
|
|
|
|
a
|
|
|
|
alter table t1 add b int;
|
|
|
|
handler a1 close;
|
|
|
|
ERROR 42S02: Unknown table 'a1' in HANDLER
|
|
|
|
handler a2 close;
|
|
|
|
drop table t1, t2;
|
2011-01-10 22:22:40 +01:00
|
|
|
create table t1 (a int, key (a));
|
2007-11-20 18:17:53 +01:00
|
|
|
handler t1 open as a1;
|
|
|
|
handler a1 read a first;
|
|
|
|
a
|
|
|
|
rename table t1 to t2;
|
|
|
|
handler a1 read a first;
|
|
|
|
ERROR 42S02: Unknown table 'a1' in HANDLER
|
|
|
|
drop table t2;
|
2011-01-10 22:22:40 +01:00
|
|
|
create table t1 (a int, key (a));
|
2007-11-20 18:17:53 +01:00
|
|
|
create table t2 like t1;
|
|
|
|
handler t1 open as a1;
|
|
|
|
handler t2 open as a2;
|
|
|
|
handler a1 read a first;
|
|
|
|
a
|
|
|
|
handler a2 read a first;
|
|
|
|
a
|
|
|
|
optimize table t1;
|
|
|
|
Table Op Msg_type Msg_text
|
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
The main problem was that ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR
PARTITION took another code path (over mysql_alter_table instead of
mysql_admin_table) which differs in two ways:
1) alter table opens the tables in a different way than admin tables do
resulting in returning with error before it tried the command
2) alter table does not start to send any diagnostic rows to the client
which the lower admin functions continue to use -> resulting in
assertion crash
The fix:
Remapped ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR PARTITION to use
the same code path as ANALYZE/CHECK/OPTIMIZE/REPAIR TABLE t.
Adding check in mysql_admin_table to setup the partition list for
which partitions that should be used.
Partitioned tables will still not work with
REPAIR TABLE/PARTITION USE_FRM, since that requires moving partitions
to tables, REPAIR TABLE t USE_FRM, and check that the data still
fulfills the partitioning function and then move the table back to
being a partition.
NOTE: I have removed the following functions from the handler
interface:
analyze_partitions, check_partitions, optimize_partitions,
repair_partitions
Since they are not longer needed.
THIS ALTERS THE STORAGE ENGINE API
mysql-test/r/handler_innodb.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/r/innodb.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/r/innodb_mysql.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/r/partition.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/r/trigger-trans.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/suite/ndb/r/ndb_partition_key.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/ndb/t/ndb_partition_key.test:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/parts/inc/partition_alter4.inc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/parts/r/partition_alter4_innodb.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/parts/r/partition_alter4_myisam.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
mysql-test/suite/rpl/r/rpl_failed_optimize.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a note result row.
mysql-test/t/partition.test:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
tables.
sql/ha_partition.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added a function for returning admin commands result rows
Updated handle_opt_partitions to handle admin commands result rows,
and some error filtering (as mysql_admin_table do).
Removed the functions analyze/check/optimize/repair_partitions
since they have no longer any use.
sql/ha_partition.h:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Removed analyze/check/optimize/repair_partitions since they
are no longer are needed.
sql/handler.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Removed analyze/check/optimize/repair_partitions since they
are no longer are needed.
sql/handler.h:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Removed analyze/check/optimize/repair_partitions since they
are no longer are needed.
sql/mysql_priv.h:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added set_part_state for reuse of code in mysql_admin_table.
(Originally fond in sql/sql_partition.cc:prep_alter_part_table)
sql/protocol.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added one assert and a debug print.
sql/sql_partition.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Refactored code for setting up partition state, set_part_state,
now used in both prep_alter_part_table and
sql_table.cc:mysql_admin_table.
Removed code for handling ANALYZE/CHECK/OPTIMIZE/REPAIR partitions,
since it is now handled by mysql_admin_table.
sql/sql_table.cc:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Added functionality in mysql_admin_table to work with partitioned
tables.
Fixed a possible assertion bug for HA_ADMIN_TRY_ALTER
(If analyze would output a row, it fails since the row was already
started).
sql/sql_yacc.yy:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Remapped ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR PARTITION
to use the same code path as ANALYZE/CHECK/OPTIMIZE/REPAIR TABLE
instead of taking the ALTER TABLE path.
Added reset of alter_info for ANALYZE/CHECK/OPTIMIZE/REPAIR TABLE
since it is now used by partitioned tables.
storage/myisam/mi_check.c:
Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
partition is corrupt
Changed warning message from "Found X parts Should be: Y parts"
to "Found X key parts. Should be Y", since it could be confusing
with partitioned tables.
2008-08-11 20:02:03 +02:00
|
|
|
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
|
2007-11-20 18:17:53 +01:00
|
|
|
test.t1 optimize status OK
|
|
|
|
handler a1 close;
|
|
|
|
ERROR 42S02: Unknown table 'a1' in HANDLER
|
|
|
|
handler a2 close;
|
|
|
|
drop table t1, t2;
|
2011-01-10 22:22:40 +01:00
|
|
|
#
|
|
|
|
# BUG#51877 - HANDLER interface causes invalid memory read
|
|
|
|
#
|
|
|
|
CREATE TABLE t1(a INT, KEY (a));
|
|
|
|
HANDLER t1 OPEN;
|
|
|
|
HANDLER t1 READ a FIRST;
|
|
|
|
a
|
|
|
|
INSERT INTO t1 VALUES(1);
|
|
|
|
HANDLER t1 READ a NEXT;
|
|
|
|
a
|
|
|
|
HANDLER t1 CLOSE;
|
|
|
|
DROP TABLE t1;
|