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;
2001-09-28 07:05:54 +02:00
create table t1 (a int, b char(10), key a(a), key b(a,b));
insert into t1 values
(17,"ddd"),(18,"eee"),(19,"fff"),(19,"yyy"),
(14,"aaa"),(15,"bbb"),(16,"ccc"),(16,"xxx"),
(20,"ggg"),(21,"hhh"),(22,"iii");
handler t1 open as t2;
2003-01-10 16:36:59 +01:00
handler t2 read a=(SELECT 1);
2004-06-16 05:18:20 +02:00
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT 1)' at line 1
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 next;
2001-04-07 00:18:33 +02:00
a b
15 bbb
2001-09-28 07:05:54 +02:00
handler t2 read a next;
2001-04-07 00:18:33 +02:00
a b
16 ccc
2001-09-28 07:05:54 +02:00
handler t2 read a prev;
2001-04-07 00:18:33 +02:00
a b
15 bbb
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
15 bbb
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
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
15 bbb
16 ccc
16 xxx
17 ddd
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
18 eee
19 fff
19 yyy
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
19 fff
18 eee
17 ddd
16 xxx
16 ccc
15 bbb
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 read last;
2004-06-16 05:18:20 +02:00
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
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
15 bbb
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;
create table t1 (a int);
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;
2006-08-16 19:29:49 +02:00
alter table t1 engine=MEMORY;
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;
2003-07-03 17:57:51 +02:00
create table t1(a int, index(a));
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;
2004-05-18 20:59:43 +02:00
create table t1 ( a int, b int, INDEX a (a) );
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
drop database if exists test_test;
create database test_test;
use test_test;
create table t1(table_id char(20) primary key);
insert into t1 values ('test_test.t1');
insert into t1 values ('');
handler t1 open;
handler t1 read first limit 9;
table_id
2006-08-16 14:58:49 +02:00
test_test.t1
2004-09-24 18:39:25 +02:00
create table t2(table_id char(20) primary key);
insert into t2 values ('test_test.t2');
insert into t2 values ('');
handler t2 open;
handler t2 read first limit 9;
table_id
2006-08-16 14:58:49 +02:00
test_test.t2
2004-09-24 18:39:25 +02:00
use test;
drop table if exists t1;
create table t1(table_id char(20) primary key);
insert into t1 values ('test.t1');
insert into t1 values ('');
handler t1 open;
2004-10-07 09:50:13 +02:00
ERROR 42000: Not unique table/alias: 't1'
2004-09-24 18:39:25 +02:00
use test;
handler test.t1 read first limit 9;
2004-10-07 09:50:13 +02:00
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'read first limit 9' at line 1
2004-09-24 18:39:25 +02:00
handler test_test.t1 read first limit 9;
2004-10-07 09:50:13 +02:00
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'read first limit 9' at line 1
2004-09-24 18:39:25 +02:00
handler t1 read first limit 9;
table_id
2006-08-16 14:58:49 +02:00
test_test.t1
2004-09-24 18:39:25 +02:00
handler test_test.t2 read first limit 9;
2004-10-07 09:50:13 +02:00
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'read first limit 9' at line 1
2004-09-24 18:39:25 +02:00
handler t2 read first limit 9;
table_id
2006-08-16 14:58:49 +02:00
test_test.t2
2004-09-24 18:39:25 +02:00
handler test_test.t1 close;
2004-10-07 09:50:13 +02:00
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'close' at line 1
2004-09-24 18:39:25 +02:00
handler t1 close;
drop table test_test.t1;
handler test_test.t2 close;
2004-10-07 09:50:13 +02:00
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'close' at line 1
2004-09-24 18:39:25 +02:00
handler t2 close;
drop table test_test.t2;
drop database test_test;
use test;
handler test.t1 close;
2004-10-07 09:50:13 +02:00
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'close' at line 1
2004-09-24 18:39:25 +02:00
handler t1 close;
2004-10-07 09:50:13 +02:00
ERROR 42S02: Unknown table 't1' in HANDLER
2004-09-24 18:39:25 +02:00
drop table test.t1;
drop database if exists test_test;
drop table if exists t1;
drop table if exists t2;
drop table if exists t3;
create database test_test;
use test_test;
create table t1 (c1 char(20));
insert into t1 values ('test_test.t1');
create table t3 (c1 char(20));
insert into t3 values ('test_test.t3');
handler t1 open;
handler t1 read first limit 9;
c1
test_test.t1
handler t1 open h1;
handler h1 read first limit 9;
c1
test_test.t1
use test;
create table t1 (c1 char(20));
create table t2 (c1 char(20));
create table t3 (c1 char(20));
insert into t1 values ('t1');
insert into t2 values ('t2');
insert into t3 values ('t3');
handler t1 open;
2004-10-07 09:50:13 +02:00
ERROR 42000: Not unique table/alias: 't1'
2004-09-24 18:39:25 +02:00
handler t2 open t1;
2004-10-07 09:50:13 +02:00
ERROR 42000: Not unique table/alias: 't1'
2004-09-24 18:39:25 +02:00
handler t3 open t1;
2004-10-07 09:50:13 +02:00
ERROR 42000: Not unique table/alias: 't1'
2004-09-24 18:39:25 +02:00
handler t1 read first limit 9;
c1
test_test.t1
handler test.t1 close;
2004-10-07 09:50:13 +02:00
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'close' at line 1
2004-09-24 18:39:25 +02:00
handler test.t1 open h1;
2004-10-07 09:50:13 +02:00
ERROR 42000: Not unique table/alias: 'h1'
2004-09-24 18:39:25 +02:00
handler test_test.t1 open h1;
2004-10-07 09:50:13 +02:00
ERROR 42000: Not unique table/alias: 'h1'
2004-09-24 18:39:25 +02:00
handler test_test.t3 open h3;
handler test.t1 open h2;
handler t1 read first limit 9;
c1
test_test.t1
handler h1 read first limit 9;
c1
test_test.t1
handler h2 read first limit 9;
c1
t1
handler h3 read first limit 9;
c1
test_test.t3
2004-10-07 09:50:13 +02:00
handler h2 read first limit 9;
2004-09-24 18:39:25 +02:00
c1
t1
handler test.h1 close;
2004-10-07 09:50:13 +02:00
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'close' at line 1
handler t1 close;
handler h1 close;
2004-09-24 18:39:25 +02:00
handler h2 close;
handler t1 read first limit 9;
2004-10-07 09:50:13 +02:00
ERROR 42S02: Unknown table 't1' in HANDLER
2004-09-24 18:39:25 +02:00
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;
2004-10-07 09:50:13 +02:00
ERROR 42S02: Unknown table 'h2' in HANDLER
2004-09-24 18:39:25 +02:00
handler h3 read first limit 9;
c1
test_test.t3
2004-10-07 09:50:13 +02:00
handler h3 read first limit 9;
2004-09-24 18:39:25 +02:00
c1
test_test.t3
use test_test;
handler h3 read first limit 9;
c1
test_test.t3
handler test.h3 read first limit 9;
2004-10-07 09:50:13 +02:00
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'read first limit 9' at line 1
handler h3 close;
2004-09-24 18:39:25 +02:00
use test;
drop table t3;
drop table t2;
drop table t1;
drop database test_test;
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
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'
2007-08-21 01:50:42 +02:00
drop table if exists t1;
create table t1 (a int) ENGINE=MEMORY;
--> 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
drop table if exists t1;
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;
2007-10-11 00:06:53 +02:00
drop table if exists t1,t2;
create table t1 (c1 int);
create table t2 (c1 int);
insert into t1 values (1);
insert into t2 values (2);
connection: default
handler t1 open;
handler t1 read first;
c1
1
connection: flush
flush tables;;
connection: default
handler t2 open;
handler t2 read first;
c1
2
handler t1 read next;
c1
2007-10-11 02:39:22 +02:00
1
2007-10-11 00:06:53 +02:00
handler t1 close;
handler t2 close;
drop table t1,t2;
2007-10-11 02:39:22 +02:00
drop table if exists t1,t2;
create table t1 (c1 int);
connection: default
handler t1 open;
handler t1 read first;
c1
connection: flush
rename table t1 to t2;;
connection: default
handler t2 open;
handler t2 read first;
c1
handler t1 read next;
ERROR 42S02: Table 'test.t1' doesn't exist
handler t1 close;
handler t2 close;
drop table t2;
2007-11-01 21:52:56 +01:00
drop table if exists t1;
create temporary table t1 (a int, b char(1), key a(a), key b(a,b));
insert into t1 values (0,"a"),(1,"b"),(2,"c"),(3,"d"),(4,"e"),
(5,"f"),(6,"g"),(7,"h"),(8,"i"),(9,"j");
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
handler t1 open as a1;
handler a1 read a first;
a b
0 a
handler a1 read a next;
a b
1 b
handler a1 read a next;
a b
2 c
select a,b from t1;
ERROR HY000: Can't reopen table: 'a1'
handler a1 read a prev;
a b
1 b
handler a1 read a prev;
a b
0 a
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
handler t1 open as a2;
handler a2 read a first;
a b
0 a
handler a2 read a last;
a b
9 j
handler a2 read a prev;
a b
8 i
handler a2 close;
drop table t1;
2007-11-20 18:17:53 +01:00
drop table if exists t1,t2;
create table t1 (a int);
handler t1 open as t1_alias;
drop table t1;
create table t1 (a int);
handler t1 open as t1_alias;
flush tables;
drop table t1;
create table t1 (a int);
handler t1 open as t1_alias;
handler t1_alias close;
drop table t1;
create table t1 (a int);
handler t1 open as t1_alias;
handler t1_alias read first;
a
drop table t1;
handler t1_alias read next;
ERROR 42S02: Unknown table 't1_alias' in HANDLER
create table t1 (a int);
create temporary table t2 (a int, key(a));
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
create table t1 (a int, key(a));
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;
create table t1 (a int, key(a));
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;
create table t1 (a int, key(a));
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;
create table t1 (a int, b char(1), key a(a), key b(a,b));
insert into t1 values (0,"a"),(1,"b"),(2,"c"),(3,"d"),(4,"e"),
(5,"f"),(6,"g"),(7,"h"),(8,"i"),(9,"j");
handler t1 open;
handler t1 read a first;
a b
0 a
handler t1 read a next;
a b
1 b
flush tables;
handler t1 read a next;
a b
0 a
handler t1 read a next;
a b
1 b
flush tables with read lock;
handler t1 read a next;
a b
0 a
unlock tables;
drop table t1;
handler t1 read a next;
ERROR 42S02: Unknown table 't1' in HANDLER
2009-02-24 10:49:18 +01:00
drop table if exists t1;
create table t1 (a int);
insert into t1 values (1);
handler t1 open;
alter table t1 engine=memory;
handler t1 read a next;
ERROR HY000: Table storage engine for 't1' doesn't have this option
handler t1 close;
drop table t1;
2009-04-17 09:41:15 +02:00
USE information_schema;
HANDLER COLUMNS OPEN;
ERROR HY000: Incorrect usage of HANDLER OPEN and information_schema
USE test;