polardbxengine/mysql-test/suite/innodb/r/innodb-import-partition.result

1494 lines
46 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

SET @old_innodb_file_per_table = @@innodb_file_per_table;
SET GLOBAL innodb_file_per_table = 1;
SELECT @@innodb_file_per_table;
@@innodb_file_per_table
1
# Following testcases are created from JET cases (where import
# export instance are different servers)
# Here test will be run on same import and export instance.
#
# case 1 Simple export, discard and import.
#
CREATE TABLE t1 (c1 INT) ENGINE = InnoDB
PARTITION BY HASH(c1) PARTITIONS 3;
INSERT INTO t1 VALUES (1),(123),(331);
SELECT c1 FROM t1;
c1
123
1
331
FLUSH TABLES t1 FOR EXPORT;
SELECT * FROM t1 ORDER BY c1;
c1
1
123
331
backup: t1#P#p0
backup: t1#P#p1
backup: t1#P#p2
UNLOCK TABLES;
DROP TABLE t1;
CREATE TABLE t1 (c1 INT) ENGINE = InnoDB
PARTITION BY HASH(c1) PARTITIONS 3;
ALTER TABLE t1 DISCARD TABLESPACE;
restore: t1#P#p0 .ibd and .cfg files
restore: t1#P#p1 .ibd and .cfg files
restore: t1#P#p2 .ibd and .cfg files
ALTER TABLE t1 IMPORT TABLESPACE;
SELECT * FROM t1 ORDER BY c1;
c1
1
123
331
DROP TABLE t1;
#
# case 2 With indexes and more datatypes.
#
CREATE TABLE t1 (
col1 BIT(1),
col2 BOOLEAN,
col3 TINYINT,
col4 SMALLINT,
col5 MEDIUMINT,
col6 INT,
col7 BIGINT,
col8 FLOAT (14,3),
col9 DOUBLE (14,3),
col10 VARCHAR(20),
col11 TEXT,
col12 ENUM('a','b','c'),
col13 TEXT,
col14 CHAR(20),
col15 VARBINARY (400),
col16 BINARY(40),
col17 BLOB (400),
col18 INT NOT NULL PRIMARY KEY,
col19 DATE,
col20 DATETIME,
col21 TIMESTAMP NULL,
col22 TIME,
col23 YEAR) ENGINE = InnoDB
PARTITION BY RANGE (col18)
SUBPARTITION BY HASH (col18) SUBPARTITIONS 3
(PARTITION `First_partition` VALUES LESS THAN (10),
PARTITION `Last_partition` VALUES LESS THAN MAXVALUE);
Warnings:
Warning 1681 Specifying number of digits for floating point data types is deprecated and will be removed in a future release.
Warning 1681 Specifying number of digits for floating point data types is deprecated and will be removed in a future release.
CREATE INDEX idx1 ON t1(col18);
CREATE INDEX prefix_idx ON t1(col14 (10));
INSERT INTO t1 VALUES
(1,1,-128,32767,-8388608,2147483647,-9223372036854775808, 92233720368.222,
-92233720368.222,'aaa', + 'aaaaaaaaaa','b','bbbbb','ccccc',
REPEAT('d',40),REPEAT('d',40),REPEAT('d',40),1,'1000-01-01',
'3000-12-31 23:59:59.99','1990-01-01 00:00:01.00',
'01:59:59.00','1901');
INSERT INTO t1 VALUES
(NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,3,NULL,NULL,NULL,NULL,NULL);
INSERT INTO t1 VALUES (NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
ERROR 23000: Column 'col18' cannot be null
INSERT INTO t1 VALUES (NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL);
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
FLUSH TABLES t1 WITH READ LOCK;
SELECT * FROM t1;
col1 col2 col3 col4 col5 col6 col7 col8 col9 col10 col11 col12 col13 col14 col15 col16 col17 col18 col19 col20 col21 col22 col23
NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 3 NULL NULL NULL NULL NULL
 1 -128 32767 -8388608 2147483647 -9223372036854775808 92233719808.000 -92233720368.222 aaa aaaaaaaaaa b bbbbb ccccc dddddddddddddddddddddddddddddddddddddddd dddddddddddddddddddddddddddddddddddddddd dddddddddddddddddddddddddddddddddddddddd 1 1000-01-01 3001-01-01 00:00:00 1990-01-01 00:00:01 01:59:59 1901
backup: t1#P#First_partition#SP#First_partitionsp0
backup: t1#P#First_partition#SP#First_partitionsp1
backup: t1#P#First_partition#SP#First_partitionsp2
backup: t1#P#Last_partition#SP#Last_partitionsp0
backup: t1#P#Last_partition#SP#Last_partitionsp1
backup: t1#P#Last_partition#SP#Last_partitionsp2
UNLOCK TABLES;
DROP TABLE t1;
CREATE TABLE t1 (
col1 BIT(1),
col2 BOOLEAN,
col3 TINYINT,
col4 SMALLINT,
col5 MEDIUMINT,
col6 INT,
col7 BIGINT,
col8 FLOAT (14,3),
col9 DOUBLE (14,3),
col10 VARCHAR(20),
col11 TEXT,
col12 ENUM('a','b','c'),
col13 TEXT,
col14 CHAR(20),
col15 VARBINARY (400),
col16 BINARY(40),
col17 BLOB (400),
col18 INT NOT NULL PRIMARY KEY,
col19 DATE,
col20 DATETIME,
col21 TIMESTAMP NULL,
col22 TIME,
col23 YEAR) ENGINE = InnoDB
PARTITION BY RANGE (col18)
SUBPARTITION BY HASH (col18) SUBPARTITIONS 3
(PARTITION `First_partition` VALUES LESS THAN (10),
PARTITION `Last_partition` VALUES LESS THAN MAXVALUE);
Warnings:
Warning 1681 Specifying number of digits for floating point data types is deprecated and will be removed in a future release.
Warning 1681 Specifying number of digits for floating point data types is deprecated and will be removed in a future release.
CREATE INDEX idx1 ON t1(col18);
CREATE INDEX prefix_idx ON t1(col14 (10));
ALTER TABLE t1 DISCARD TABLESPACE;
restore: t1#P#First_partition#SP#First_partitionsp0 .ibd and .cfg files
restore: t1#P#First_partition#SP#First_partitionsp1 .ibd and .cfg files
restore: t1#P#First_partition#SP#First_partitionsp2 .ibd and .cfg files
restore: t1#P#Last_partition#SP#Last_partitionsp0 .ibd and .cfg files
restore: t1#P#Last_partition#SP#Last_partitionsp1 .ibd and .cfg files
restore: t1#P#Last_partition#SP#Last_partitionsp2 .ibd and .cfg files
ALTER TABLE t1 IMPORT TABLESPACE;
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check status OK
SELECT * FROM t1;
col1 col2 col3 col4 col5 col6 col7 col8 col9 col10 col11 col12 col13 col14 col15 col16 col17 col18 col19 col20 col21 col22 col23
NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 3 NULL NULL NULL NULL NULL
 1 -128 32767 -8388608 2147483647 -9223372036854775808 92233719808.000 -92233720368.222 aaa aaaaaaaaaa b bbbbb ccccc dddddddddddddddddddddddddddddddddddddddd dddddddddddddddddddddddddddddddddddddddd dddddddddddddddddddddddddddddddddddddddd 1 1000-01-01 3001-01-01 00:00:00 1990-01-01 00:00:01 01:59:59 1901
DROP TABLE t1;
#
# case 3 - with blob objects
#
CREATE TABLE t1 (
col_1_varbinary VARBINARY (4000),
col_2_varchar VARCHAR (4000),
col_3_text TEXT (4000),
col_4_blob BLOB (4000),
col_5_text TEXT (4000),
col_6_varchar VARCHAR (4000),
col_7_binary BINARY (255)
) ROW_FORMAT=DYNAMIC ENGINE = InnoDB
PARTITION BY KEY (col_7_binary) PARTITIONS 3;
INSERT INTO t1 VALUES(
REPEAT('a', 4000),REPEAT('o', 4000),REPEAT('a', 4000), REPEAT('o', 4000),
REPEAT('a', 4000),REPEAT('a', 4000),REPEAT('a', 255));
SELECT col_1_varbinary = REPEAT("a", 4000),
col_2_varchar = REPEAT("o", 4000),
col_3_text = REPEAT("a", 4000),
col_4_blob = REPEAT("o", 4000),
col_5_text = REPEAT("a", 4000),
col_6_varchar = REPEAT("a", 4000),
col_7_binary = REPEAT("a", 255)
FROM t1;
col_1_varbinary = REPEAT("a", 4000) col_2_varchar = REPEAT("o", 4000) col_3_text = REPEAT("a", 4000) col_4_blob = REPEAT("o", 4000) col_5_text = REPEAT("a", 4000) col_6_varchar = REPEAT("a", 4000) col_7_binary = REPEAT("a", 255)
1 1 1 1 1 1 1
FLUSH TABLES t1 FOR EXPORT;
backup: t1#P#p0
backup: t1#P#p1
backup: t1#P#p2
UNLOCK TABLES;
DROP TABLE t1;
CREATE TABLE t1 (
col_1_varbinary VARBINARY (4000),
col_2_varchar VARCHAR (4000),
col_3_text TEXT (4000),
col_4_blob BLOB (4000),
col_5_text TEXT (4000),
col_6_varchar VARCHAR (4000),
col_7_binary BINARY (255)
) ROW_FORMAT=DYNAMIC ENGINE = InnoDB
PARTITION BY KEY (col_7_binary) PARTITIONS 3;
ALTER TABLE t1 DISCARD TABLESPACE;
restore: t1#P#p0 .ibd and .cfg files
restore: t1#P#p1 .ibd and .cfg files
restore: t1#P#p2 .ibd and .cfg files
ALTER TABLE t1 IMPORT TABLESPACE;
SELECT col_1_varbinary = REPEAT("a", 4000),
col_2_varchar = REPEAT("o", 4000),
col_3_text = REPEAT("a", 4000),
col_4_blob = REPEAT("o", 4000),
col_5_text = REPEAT("a", 4000),
col_6_varchar = REPEAT("a", 4000),
col_7_binary = REPEAT("a", 255)
FROM t1;
col_1_varbinary = REPEAT("a", 4000) col_2_varchar = REPEAT("o", 4000) col_3_text = REPEAT("a", 4000) col_4_blob = REPEAT("o", 4000) col_5_text = REPEAT("a", 4000) col_6_varchar = REPEAT("a", 4000) col_7_binary = REPEAT("a", 255)
1 1 1 1 1 1 1
DROP TABLE t1;
#
# case 4 - transportable tablespace with auto_increment
#
CREATE TABLE t1 (
col_1_int INT AUTO_INCREMENT,
col_2_varchar VARCHAR (20),
PRIMARY KEY (col_1_int)) ENGINE = InnoDB
PARTITION BY HASH (col_1_int) PARTITIONS 3;
INSERT INTO t1 VALUES (1,'a1'),(2,'a2'),(3,'a3');
INSERT INTO t1 (col_2_varchar) VALUES ('a4'),('a5'),('a6');
SELECT * FROM t1 ORDER BY col_1_int;
col_1_int col_2_varchar
1 a1
2 a2
3 a3
4 a4
5 a5
6 a6
FLUSH TABLES t1 FOR EXPORT;
backup: t1#P#p0
backup: t1#P#p1
backup: t1#P#p2
UNLOCK TABLES;
DROP TABLE t1;
CREATE TABLE t1 (
col_1_int INT AUTO_INCREMENT,
col_2_varchar VARCHAR (20),
PRIMARY KEY (col_1_int)) ENGINE = InnoDB
PARTITION BY HASH (col_1_int) PARTITIONS 3;
ALTER TABLE t1 DISCARD TABLESPACE;
restore: t1#P#p0 .ibd and .cfg files
restore: t1#P#p1 .ibd and .cfg files
restore: t1#P#p2 .ibd and .cfg files
ALTER TABLE t1 IMPORT TABLESPACE;
SELECT * FROM t1 ORDER BY col_1_int;
col_1_int col_2_varchar
1 a1
2 a2
3 a3
4 a4
5 a5
6 a6
INSERT INTO t1 VALUES (1,'a1');
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
INSERT INTO t1(col_2_varchar) VALUES ('a101'),('a102'),('a103');
SELECT * FROM t1 ORDER BY col_1_int;
col_1_int col_2_varchar
1 a1
2 a2
3 a3
4 a4
5 a5
6 a6
7 a101
8 a102
9 a103
ALTER TABLE t1 MODIFY col_1_int BIGINT;
SELECT * FROM t1 ORDER BY col_1_int;
col_1_int col_2_varchar
1 a1
2 a2
3 a3
4 a4
5 a5
6 a6
7 a101
8 a102
9 a103
DROP TABLE t1;
#
# case 5 - check with primary and foreign key
#
# Foreign Keys not supported by partitioned tables.
#
# case 6 - transportable tablespace with transactions
#
CREATE TABLE t1 (
col_1_int int,col_2_varchar VARCHAR (20),
PRIMARY KEY (col_2_varchar)) ENGINE = InnoDB
PARTITION BY KEY (col_2_varchar) PARTITIONS 3;
SET AUTOCOMMIT = 0;
INSERT INTO t1 VALUES (1,'a1'),(2,'a2');
SELECT * FROM t1;
col_1_int col_2_varchar
1 a1
2 a2
COMMIT;
INSERT INTO t1 VALUES (3,'a3'),(4,'a4');
ROLLBACK;
INSERT INTO t1 VALUES (5,'a5'),(6,'a6');
COMMIT;
SELECT * FROM t1 ORDER BY col_1_int;
col_1_int col_2_varchar
1 a1
2 a2
5 a5
6 a6
FLUSH TABLES t1 FOR EXPORT;
backup: t1#P#p0
backup: t1#P#p1
backup: t1#P#p2
UNLOCK TABLES;
DROP TABLE t1;
CREATE TABLE t1 (
col_1_int int,col_2_varchar VARCHAR (20),
PRIMARY KEY (col_2_varchar)) ENGINE = InnoDB
PARTITION BY KEY (col_2_varchar) PARTITIONS 3;
ALTER TABLE t1 DISCARD TABLESPACE;
SET AUTOCOMMIT = 0;
restore: t1#P#p0 .ibd and .cfg files
restore: t1#P#p1 .ibd and .cfg files
restore: t1#P#p2 .ibd and .cfg files
ALTER TABLE t1 IMPORT TABLESPACE;
INSERT INTO t1 VALUES (7,'a7'),(8,'a8');
COMMIT;
INSERT INTO t1 VALUES (9,'a9'),(10,'a10');
ROLLBACK;
INSERT INTO t1 VALUES (11,'a11'),(12,'a12');
COMMIT;
SELECT * FROM t1 ORDER BY col_1_int;
col_1_int col_2_varchar
1 a1
2 a2
5 a5
6 a6
7 a7
8 a8
11 a11
12 a12
SET AUTOCOMMIT = 1;
DROP TABLE t1;
#
# case 7 - Transportable tablespace with transaction
# (earlier failed with jet)
#
CREATE TABLE t1 (i int) ENGINE = InnoDB
PARTITION BY HASH (i) PARTITIONS 3;
INSERT INTO t1 VALUES (100),(200),(300);
SELECT * FROM t1 ORDER BY i;
i
100
200
300
FLUSH TABLES t1 FOR EXPORT;
backup: t1#P#p0
backup: t1#P#p1
backup: t1#P#p2
UNLOCK TABLES;
DROP TABLE t1;
CREATE TABLE t1 (i int) ENGINE = InnoDB
PARTITION BY HASH (i) PARTITIONS 3;
ALTER TABLE t1 DISCARD TABLESPACE;
restore: t1#P#p0 .ibd and .cfg files
restore: t1#P#p1 .ibd and .cfg files
restore: t1#P#p2 .ibd and .cfg files
ALTER TABLE t1 IMPORT TABLESPACE;
SELECT * FROM t1 ORDER BY i;
i
100
200
300
SET AUTOCOMMIT = 0;
INSERT INTO t1 VALUES (101),(102),(103);
COMMIT;
SELECT * FROM t1 ORDER BY i;
i
100
101
102
103
200
300
SET AUTOCOMMIT = 1;
DROP TABLE t1;
#
# case 8 - negative cases
#
CREATE TABLE t1 (i int) ENGINE = InnoDB
PARTITION BY HASH (i) PARTITIONS 3;
INSERT INTO t1 VALUES (100),(200),(300);
SELECT * FROM t1 ORDER BY i;
i
100
200
300
FLUSH TABLES t1 FOR EXPORT;
backup: t1#P#p0
backup: t1#P#p1
backup: t1#P#p2
UNLOCK TABLES;
# try if we can flush again
FLUSH TABLES t1 FOR EXPORT;
UNLOCK TABLES;
DROP TABLE t1;
# create table with incorrect schema
CREATE TABLE t1 (i bigint) ENGINE = InnoDB
PARTITION BY HASH (i) PARTITIONS 3;
ALTER TABLE t1 DISCARD TABLESPACE;
restore: t1#P#p0 .ibd and .cfg files
restore: t1#P#p1 .ibd and .cfg files
restore: t1#P#p2 .ibd and .cfg files
# error as mismatch in column data type
ALTER TABLE t1 IMPORT TABLESPACE;
ERROR HY000: Schema mismatch (Column i precise type mismatch.)
# explicitly delete ibd file before creating table with correct schema
unlink: t1#P#p0.ibd
unlink: t1#P#p0.cfg
unlink: t1#P#p1.ibd
unlink: t1#P#p1.cfg
unlink: t1#P#p2.ibd
unlink: t1#P#p2.cfg
DROP TABLE t1;
CREATE TABLE t1 (i int) ENGINE = InnoDB
PARTITION BY HASH (i) PARTITIONS 3;
ALTER TABLE t1 DISCARD TABLESPACE;
restore: t1#P#p0 .ibd and .cfg files
restore: t1#P#p1 .ibd and .cfg files
restore: t1#P#p2 .ibd and .cfg files
# Import should succeed
ALTER TABLE t1 IMPORT TABLESPACE;
# Try to import twice
ALTER TABLE t1 IMPORT TABLESPACE;
ERROR HY000: Tablespace 'test/t1#P#p0' exists.
SELECT * FROM t1 ORDER BY i;
i
100
200
300
SET AUTOCOMMIT = 0;
INSERT INTO t1 VALUES (101),(102),(103);
COMMIT;
SELECT * FROM t1 ORDER BY i;
i
100
101
102
103
200
300
DROP TABLE t1;
CREATE TABLE t1 (i int) ENGINE = InnoDB
PARTITION BY HASH (i) PARTITIONS 3;
ALTER TABLE t1 DISCARD TABLESPACE;
# do not delete ibd file and try to import
restore: t1#P#p0 .ibd and .cfg files
restore: t1#P#p1 .ibd and .cfg files
restore: t1#P#p2 .ibd and .cfg files
ALTER TABLE t1 IMPORT TABLESPACE;
DROP TABLE t1;
SET AUTOCOMMIT = 1;
#
# case 9 - empty table import
#
CREATE TABLE t1 (c1 INT) ENGINE = InnoDB
PARTITION BY HASH(c1) PARTITIONS 3;
SET AUTOCOMMIT = 0;
INSERT INTO t1 VALUES (1),(123),(331);
SELECT c1 FROM t1;
c1
123
1
331
ROLLBACK;
FLUSH TABLES t1 FOR EXPORT;
backup: t1#P#p0
backup: t1#P#p1
backup: t1#P#p2
UNLOCK TABLES;
DROP TABLE t1;
CREATE TABLE t1 (c1 INT) ENGINE = InnoDB
PARTITION BY HASH(c1) PARTITIONS 3;
ALTER TABLE t1 DISCARD TABLESPACE;
restore: t1#P#p0 .ibd and .cfg files
restore: t1#P#p1 .ibd and .cfg files
restore: t1#P#p2 .ibd and .cfg files
ALTER TABLE t1 IMPORT TABLESPACE;
SELECT * FROM t1 ORDER BY c1;
c1
DROP TABLE t1;
SET AUTOCOMMIT = 1;
#
# case 10 - Transportable tablespaces with prefix index
#
CREATE TABLE t1 (col_1 CHAR (255),
col_2 VARCHAR (255), col_3 VARCHAR (255),
col_4 VARCHAR (255),col_5 VARCHAR (255),
col_6 text (255), col_7 text (255),
col_8 text (255),col_9 text (255),
col_10 BLOB (255),col_11 BLOB (255),
col_12 BLOB (255), col_13 BLOB (255),
col_14 BLOB (255), col_15 int) ENGINE = InnoDB charset latin1
PARTITION BY KEY (col_1) PARTITIONS 3;
CREATE INDEX prefix_idx ON t1(
col_1 (50),col_2 (50),col_3 (50),
col_4 (50),col_5 (50),col_6 (50),
col_7 (50),col_8 (50),col_9 (50),
col_10 (50),col_11 (50),col_12 (50),
col_13(50));
INSERT INTO t1 VALUES (
REPEAT("col1_00001",10),REPEAT("col2_00001",10),REPEAT("col3_00001",10),
REPEAT("col4_00001",10),REPEAT("col5_00001",10),REPEAT("col6_00001",10),
REPEAT("col7_00001",10),REPEAT("col8_00001",10),REPEAT("col9_00001",10),
REPEAT("col10_00001",10),REPEAT("col11_00001",10),REPEAT("col12_00001",10),
REPEAT("col13_00001",10),REPEAT("col14_00001",10),1);
SELECT
col_1 = REPEAT("col1_00001",10),
col_2 = REPEAT("col2_00001",10),
col_3 = REPEAT("col3_00001",10),
col_4 = REPEAT("col4_00001",10),
col_5 = REPEAT("col5_00001",10),
col_6 = REPEAT("col6_00001",10),
col_7 = REPEAT("col7_00001",10),
col_8 = REPEAT("col8_00001",10),
col_9 = REPEAT("col9_00001",10),
col_10 = REPEAT("col10_00001",10),
col_11 = REPEAT("col11_00001",10),
col_12 = REPEAT("col12_00001",10),
col_13 = REPEAT("col13_00001",10),
col_14 = REPEAT("col14_00001",10),
col_15
FROM t1;
col_1 = REPEAT("col1_00001",10) col_2 = REPEAT("col2_00001",10) col_3 = REPEAT("col3_00001",10) col_4 = REPEAT("col4_00001",10) col_5 = REPEAT("col5_00001",10) col_6 = REPEAT("col6_00001",10) col_7 = REPEAT("col7_00001",10) col_8 = REPEAT("col8_00001",10) col_9 = REPEAT("col9_00001",10) col_10 = REPEAT("col10_00001",10) col_11 = REPEAT("col11_00001",10) col_12 = REPEAT("col12_00001",10) col_13 = REPEAT("col13_00001",10) col_14 = REPEAT("col14_00001",10) col_15
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
FLUSH TABLES t1 FOR EXPORT;
backup: t1#P#p0
backup: t1#P#p1
backup: t1#P#p2
UNLOCK TABLES;
DROP TABLE t1;
CREATE TABLE t1 (col_1 CHAR (255),
col_2 VARCHAR (255), col_3 VARCHAR (255),
col_4 VARCHAR (255),col_5 VARCHAR (255),
col_6 text (255), col_7 text (255),
col_8 text (255),col_9 text (255),
col_10 BLOB (255),col_11 BLOB (255),
col_12 BLOB (255), col_13 BLOB (255),
col_14 BLOB (255), col_15 int) ENGINE = InnoDB charset latin1
PARTITION BY KEY (col_1) PARTITIONS 3;
CREATE INDEX prefix_idx ON t1(
col_1 (50),col_2 (50),col_3 (50),
col_4 (50),col_5 (50),col_6 (50),
col_7 (50),col_8 (50),col_9 (50),
col_10 (50),col_11 (50),col_12 (50),
col_13(50));
ALTER TABLE t1 DISCARD TABLESPACE;
restore: t1#P#p0 .ibd and .cfg files
restore: t1#P#p1 .ibd and .cfg files
restore: t1#P#p2 .ibd and .cfg files
ALTER TABLE t1 IMPORT TABLESPACE;
SELECT
col_1 = REPEAT("col1_00001",10),
col_2 = REPEAT("col2_00001",10),
col_3 = REPEAT("col3_00001",10),
col_4 = REPEAT("col4_00001",10),
col_5 = REPEAT("col5_00001",10),
col_6 = REPEAT("col6_00001",10),
col_7 = REPEAT("col7_00001",10),
col_8 = REPEAT("col8_00001",10),
col_9 = REPEAT("col9_00001",10),
col_10 = REPEAT("col10_00001",10),
col_11 = REPEAT("col11_00001",10),
col_12 = REPEAT("col12_00001",10),
col_13 = REPEAT("col13_00001",10),
col_14 = REPEAT("col14_00001",10),
col_15
FROM t1;
col_1 = REPEAT("col1_00001",10) col_2 = REPEAT("col2_00001",10) col_3 = REPEAT("col3_00001",10) col_4 = REPEAT("col4_00001",10) col_5 = REPEAT("col5_00001",10) col_6 = REPEAT("col6_00001",10) col_7 = REPEAT("col7_00001",10) col_8 = REPEAT("col8_00001",10) col_9 = REPEAT("col9_00001",10) col_10 = REPEAT("col10_00001",10) col_11 = REPEAT("col11_00001",10) col_12 = REPEAT("col12_00001",10) col_13 = REPEAT("col13_00001",10) col_14 = REPEAT("col14_00001",10) col_15
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
DROP TABLE t1;
#
# case 11 - Transportable tablespaces with secondary index
#
CREATE TABLE t1 (col_1 CHAR (255),
col_2 VARCHAR (255), col_3 VARCHAR (255),
col_4 VARCHAR (255),col_5 VARCHAR (255),
col_6 text (255), col_7 text (255),
col_8 text (255),col_9 text (255),
col_10 BLOB (255),col_11 BLOB (255),
col_12 BLOB (255), col_13 BLOB (255),
col_14 BLOB (255), col_15 int) ENGINE = InnoDB charset latin1
PARTITION BY KEY (col_1) PARTITIONS 3;
CREATE INDEX idx1 ON t1(col_1);
CREATE INDEX idx2 ON t1(col_2);
CREATE INDEX idx3 ON t1(col_3);
CREATE INDEX idx4 ON t1(col_4);
CREATE INDEX idx5 ON t1(col_5);
CREATE INDEX idx6 ON t1(col_6(255));
CREATE INDEX idx7 ON t1(col_7(255));
CREATE INDEX idx8 ON t1(col_8(255));
CREATE INDEX idx9 ON t1(col_9(255));
CREATE INDEX idx10 ON t1(col_10(255));
CREATE INDEX idx11 ON t1(col_11(255));
CREATE INDEX idx12 ON t1(col_12(255));
CREATE INDEX idx13 ON t1(col_13(255));
CREATE INDEX idx14 ON t1(col_14(255));
INSERT INTO t1 VALUES (
REPEAT("col1_00001",10),REPEAT("col2_00001",10),REPEAT("col3_00001",10),
REPEAT("col4_00001",10),REPEAT("col5_00001",10),REPEAT("col6_00001",10),
REPEAT("col7_00001",10),REPEAT("col8_00001",10),REPEAT("col9_00001",10),
REPEAT("col10_00001",10),REPEAT("col11_00001",10),REPEAT("col12_00001",10),
REPEAT("col13_00001",10),REPEAT("col14_00001",10),1);
SELECT
col_1 = REPEAT("col1_00001",10),
col_2 = REPEAT("col2_00001",10),
col_3 = REPEAT("col3_00001",10),
col_4 = REPEAT("col4_00001",10),
col_5 = REPEAT("col5_00001",10),
col_6 = REPEAT("col6_00001",10),
col_7 = REPEAT("col7_00001",10),
col_8 = REPEAT("col8_00001",10),
col_9 = REPEAT("col9_00001",10),
col_10 = REPEAT("col10_00001",10),
col_11 = REPEAT("col11_00001",10),
col_12 = REPEAT("col12_00001",10),
col_13 = REPEAT("col13_00001",10),
col_14 = REPEAT("col14_00001",10),
col_15
FROM t1;
col_1 = REPEAT("col1_00001",10) col_2 = REPEAT("col2_00001",10) col_3 = REPEAT("col3_00001",10) col_4 = REPEAT("col4_00001",10) col_5 = REPEAT("col5_00001",10) col_6 = REPEAT("col6_00001",10) col_7 = REPEAT("col7_00001",10) col_8 = REPEAT("col8_00001",10) col_9 = REPEAT("col9_00001",10) col_10 = REPEAT("col10_00001",10) col_11 = REPEAT("col11_00001",10) col_12 = REPEAT("col12_00001",10) col_13 = REPEAT("col13_00001",10) col_14 = REPEAT("col14_00001",10) col_15
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
FLUSH TABLES t1 FOR EXPORT;
backup: t1#P#p0
backup: t1#P#p1
backup: t1#P#p2
UNLOCK TABLES;
DROP TABLE t1;
CREATE TABLE t1 (col_1 CHAR (255),
col_2 VARCHAR (255), col_3 VARCHAR (255),
col_4 VARCHAR (255),col_5 VARCHAR (255),
col_6 text (255), col_7 text (255),
col_8 text (255),col_9 text (255),
col_10 BLOB (255),col_11 BLOB (255),
col_12 BLOB (255), col_13 BLOB (255),
col_14 BLOB (255), col_15 int) ENGINE = InnoDB charset latin1
PARTITION BY KEY (col_1) PARTITIONS 3;
CREATE INDEX idx1 ON t1(col_1);
CREATE INDEX idx2 ON t1(col_2);
CREATE INDEX idx3 ON t1(col_3);
CREATE INDEX idx4 ON t1(col_4);
CREATE INDEX idx5 ON t1(col_5);
CREATE INDEX idx6 ON t1(col_6(255));
CREATE INDEX idx7 ON t1(col_7(255));
CREATE INDEX idx8 ON t1(col_8(255));
CREATE INDEX idx9 ON t1(col_9(255));
CREATE INDEX idx10 ON t1(col_10(255));
CREATE INDEX idx11 ON t1(col_11(255));
CREATE INDEX idx12 ON t1(col_12(255));
CREATE INDEX idx13 ON t1(col_13(255));
CREATE INDEX idx14 ON t1(col_14(255));
ALTER TABLE t1 DISCARD TABLESPACE;
restore: t1#P#p0 .ibd and .cfg files
restore: t1#P#p1 .ibd and .cfg files
restore: t1#P#p2 .ibd and .cfg files
ALTER TABLE t1 IMPORT TABLESPACE;
SELECT
col_1 = REPEAT("col1_00001",10),
col_2 = REPEAT("col2_00001",10),
col_3 = REPEAT("col3_00001",10),
col_4 = REPEAT("col4_00001",10),
col_5 = REPEAT("col5_00001",10),
col_6 = REPEAT("col6_00001",10),
col_7 = REPEAT("col7_00001",10),
col_8 = REPEAT("col8_00001",10),
col_9 = REPEAT("col9_00001",10),
col_10 = REPEAT("col10_00001",10),
col_11 = REPEAT("col11_00001",10),
col_12 = REPEAT("col12_00001",10),
col_13 = REPEAT("col13_00001",10),
col_14 = REPEAT("col14_00001",10),
col_15
FROM t1;
col_1 = REPEAT("col1_00001",10) col_2 = REPEAT("col2_00001",10) col_3 = REPEAT("col3_00001",10) col_4 = REPEAT("col4_00001",10) col_5 = REPEAT("col5_00001",10) col_6 = REPEAT("col6_00001",10) col_7 = REPEAT("col7_00001",10) col_8 = REPEAT("col8_00001",10) col_9 = REPEAT("col9_00001",10) col_10 = REPEAT("col10_00001",10) col_11 = REPEAT("col11_00001",10) col_12 = REPEAT("col12_00001",10) col_13 = REPEAT("col13_00001",10) col_14 = REPEAT("col14_00001",10) col_15
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
# perform transaction on imported table
SET AUTOCOMMIT = 0;
INSERT INTO t1(col_15) VALUES (15000),(16000);
SELECT col_15 FROM t1 WHERE col_15 > 11000;
col_15
15000
16000
ROLLBACK;
SELECT col_15 FROM t1 WHERE col_15 > 11000;
col_15
INSERT INTO t1(col_15) VALUES (15000),(16000);
COMMIT;
SELECT col_15 FROM t1 WHERE col_15 > 11000;
col_15
15000
16000
# Perform DDL operations on imported table.
ALTER TABLE t1 DROP INDEX idx1;
ALTER TABLE t1 DROP INDEX idx6;
ALTER TABLE t1 DROP INDEX idx10;
SELECT
col_1 = REPEAT("col1_00001",10),
col_2 = REPEAT("col2_00001",10),
col_3 = REPEAT("col3_00001",10),
col_4 = REPEAT("col4_00001",10),
col_5 = REPEAT("col5_00001",10),
col_6 = REPEAT("col6_00001",10),
col_7 = REPEAT("col7_00001",10),
col_8 = REPEAT("col8_00001",10),
col_9 = REPEAT("col9_00001",10),
col_10 = REPEAT("col10_00001",10),
col_11 = REPEAT("col11_00001",10),
col_12 = REPEAT("col12_00001",10),
col_13 = REPEAT("col13_00001",10),
col_14 = REPEAT("col14_00001",10),
col_15
FROM t1;
col_1 = REPEAT("col1_00001",10) col_2 = REPEAT("col2_00001",10) col_3 = REPEAT("col3_00001",10) col_4 = REPEAT("col4_00001",10) col_5 = REPEAT("col5_00001",10) col_6 = REPEAT("col6_00001",10) col_7 = REPEAT("col7_00001",10) col_8 = REPEAT("col8_00001",10) col_9 = REPEAT("col9_00001",10) col_10 = REPEAT("col10_00001",10) col_11 = REPEAT("col11_00001",10) col_12 = REPEAT("col12_00001",10) col_13 = REPEAT("col13_00001",10) col_14 = REPEAT("col14_00001",10) col_15
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 15000
NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 16000
ALTER TABLE t1 ADD INDEX idx1 (col_1);
ALTER TABLE t1 ADD INDEX idx6 (col_1(255));
Warnings:
Warning 1831 Duplicate index 'idx6' defined on the table 'test.t1'. This is deprecated and will be disallowed in a future release.
ALTER TABLE t1 ADD INDEX idx10 (col_10(255));
SELECT
col_1 = REPEAT("col1_00001",10),
col_2 = REPEAT("col2_00001",10),
col_3 = REPEAT("col3_00001",10),
col_4 = REPEAT("col4_00001",10),
col_5 = REPEAT("col5_00001",10),
col_6 = REPEAT("col6_00001",10),
col_7 = REPEAT("col7_00001",10),
col_8 = REPEAT("col8_00001",10),
col_9 = REPEAT("col9_00001",10),
col_10 = REPEAT("col10_00001",10),
col_11 = REPEAT("col11_00001",10),
col_12 = REPEAT("col12_00001",10),
col_13 = REPEAT("col13_00001",10),
col_14 = REPEAT("col14_00001",10),
col_15
FROM t1;
col_1 = REPEAT("col1_00001",10) col_2 = REPEAT("col2_00001",10) col_3 = REPEAT("col3_00001",10) col_4 = REPEAT("col4_00001",10) col_5 = REPEAT("col5_00001",10) col_6 = REPEAT("col6_00001",10) col_7 = REPEAT("col7_00001",10) col_8 = REPEAT("col8_00001",10) col_9 = REPEAT("col9_00001",10) col_10 = REPEAT("col10_00001",10) col_11 = REPEAT("col11_00001",10) col_12 = REPEAT("col12_00001",10) col_13 = REPEAT("col13_00001",10) col_14 = REPEAT("col14_00001",10) col_15
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 15000
NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 16000
DROP TABLE t1;
SET AUTOCOMMIT = 1;
#
# case 12 - Transportable tablespaces with trigger / view
#
CREATE TABLE t1(col1 bit(1),
col2 boolean,col3 tinyint, col4 smallint,
col5 mediumint,col6 int, col7 bigint,
col8 float (14,3),col9 double (14,3),
col10 VARCHAR(20) CHARACTER SET utf8,
col11 TEXT CHARACTER SET binary,
col12 ENUM('a','b','c') CHARACTER SET binary,
col13 TEXT CHARACTER SET latin1 COLLATE latin1_general_cs,
col14 CHAR(20), col15 VARBINARY (400),
col16 BINARY(40), col17 BLOB (400),
col18 int not null primary key,
col19 DATE,col20 DATETIME, col21 TIMESTAMP NULL,
col22 TIME, col23 YEAR) ENGINE = InnoDB
PARTITION BY HASH (col18) PARTITIONS 3;
Warnings:
Warning 1681 Specifying number of digits for floating point data types is deprecated and will be removed in a future release.
Warning 1681 Specifying number of digits for floating point data types is deprecated and will be removed in a future release.
Warning 3719 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous.
# table for trigger action
CREATE TABLE trigger_table (i int) ENGINE = InnoDB;
CREATE TRIGGER tri AFTER INSERT ON t1
FOR EACH ROW INSERT INTO trigger_table VALUES(NEW.col18);
CREATE OR REPLACE VIEW VW1 AS SELECT * FROM t1;
CREATE INDEX idx1 ON t1(col18);
CREATE INDEX prefix_idx ON t1(col14 (10));
INSERT INTO t1 VALUES (
1,1,-128,32767,-8388608,2147483647,-9223372036854775808,92233720368.222,
-92233720368.222,'aaa','aaaaaaaaaa','b','bbbbb','ccccc',REPEAT('d',40),
REPEAT('d',40),REPEAT('d',40),1,'1000-01-01','3000-12-31 23:59:59.99',
'1990-01-01 00:00:01.00','01:59:59.00','1901');
INSERT INTO t1 VALUES (
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,3,NULL,NULL,NULL,NULL,NULL);
INSERT INTO t1 VALUES (
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
ERROR 23000: Column 'col18' cannot be null
INSERT INTO t1 VALUES (
NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,1,NULL,NULL,NULL,NULL,NULL);
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
SELECT * FROM t1;
col1 col2 col3 col4 col5 col6 col7 col8 col9 col10 col11 col12 col13 col14 col15 col16 col17 col18 col19 col20 col21 col22 col23
NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 3 NULL NULL NULL NULL NULL
 1 -128 32767 -8388608 2147483647 -9223372036854775808 92233719808.000 -92233720368.222 aaa aaaaaaaaaa b bbbbb ccccc dddddddddddddddddddddddddddddddddddddddd dddddddddddddddddddddddddddddddddddddddd dddddddddddddddddddddddddddddddddddddddd 1 1000-01-01 3001-01-01 00:00:00 1990-01-01 00:00:01 01:59:59 1901
SELECT * FROM trigger_table;
i
1
3
SELECT * FROM VW1;
col1 col2 col3 col4 col5 col6 col7 col8 col9 col10 col11 col12 col13 col14 col15 col16 col17 col18 col19 col20 col21 col22 col23
NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 3 NULL NULL NULL NULL NULL
 1 -128 32767 -8388608 2147483647 -9223372036854775808 92233719808.000 -92233720368.222 aaa aaaaaaaaaa b bbbbb ccccc dddddddddddddddddddddddddddddddddddddddd dddddddddddddddddddddddddddddddddddddddd dddddddddddddddddddddddddddddddddddddddd 1 1000-01-01 3001-01-01 00:00:00 1990-01-01 00:00:01 01:59:59 1901
FLUSH TABLES t1 FOR EXPORT;
backup: t1#P#p0
backup: t1#P#p1
backup: t1#P#p2
UNLOCK TABLES;
# trigger is also dropped when table is dropped
DROP TABLE t1;
CREATE TABLE t1(col1 bit(1),
col2 boolean,col3 tinyint, col4 smallint,
col5 mediumint,col6 int, col7 bigint,
col8 float (14,3),col9 double (14,3),
col10 VARCHAR(20) CHARACTER SET utf8,
col11 TEXT CHARACTER SET binary,
col12 ENUM('a','b','c') CHARACTER SET binary,
col13 TEXT CHARACTER SET latin1 COLLATE latin1_general_cs,
col14 CHAR(20), col15 VARBINARY (400),
col16 BINARY(40), col17 BLOB (400),
col18 int not null primary key,
col19 DATE,col20 DATETIME, col21 TIMESTAMP NULL,
col22 TIME, col23 YEAR) ENGINE = InnoDB
PARTITION BY HASH (col18) PARTITIONS 3;
Warnings:
Warning 1681 Specifying number of digits for floating point data types is deprecated and will be removed in a future release.
Warning 1681 Specifying number of digits for floating point data types is deprecated and will be removed in a future release.
Warning 3719 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous.
CREATE INDEX idx1 ON t1(col18);
CREATE INDEX prefix_idx ON t1(col14 (10));
ALTER TABLE t1 DISCARD TABLESPACE;
restore: t1#P#p0 .ibd and .cfg files
restore: t1#P#p1 .ibd and .cfg files
restore: t1#P#p2 .ibd and .cfg files
ALTER TABLE t1 IMPORT TABLESPACE;
SELECT * FROM t1;
col1 col2 col3 col4 col5 col6 col7 col8 col9 col10 col11 col12 col13 col14 col15 col16 col17 col18 col19 col20 col21 col22 col23
NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 3 NULL NULL NULL NULL NULL
 1 -128 32767 -8388608 2147483647 -9223372036854775808 92233719808.000 -92233720368.222 aaa aaaaaaaaaa b bbbbb ccccc dddddddddddddddddddddddddddddddddddddddd dddddddddddddddddddddddddddddddddddddddd dddddddddddddddddddddddddddddddddddddddd 1 1000-01-01 3001-01-01 00:00:00 1990-01-01 00:00:01 01:59:59 1901
SELECT * FROM trigger_table;
i
1
3
SELECT * FROM VW1;
col1 col2 col3 col4 col5 col6 col7 col8 col9 col10 col11 col12 col13 col14 col15 col16 col17 col18 col19 col20 col21 col22 col23
NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 3 NULL NULL NULL NULL NULL
 1 -128 32767 -8388608 2147483647 -9223372036854775808 92233719808.000 -92233720368.222 aaa aaaaaaaaaa b bbbbb ccccc dddddddddddddddddddddddddddddddddddddddd dddddddddddddddddddddddddddddddddddddddd dddddddddddddddddddddddddddddddddddddddd 1 1000-01-01 3001-01-01 00:00:00 1990-01-01 00:00:01 01:59:59 1901
INSERT INTO t1(col18) VALUES (5);
SELECT * FROM trigger_table;
i
1
3
UPDATE t1 SET col18=10 WHERE col18=1;
SELECT * FROM VW1;
col1 col2 col3 col4 col5 col6 col7 col8 col9 col10 col11 col12 col13 col14 col15 col16 col17 col18 col19 col20 col21 col22 col23
NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 3 NULL NULL NULL NULL NULL
 1 -128 32767 -8388608 2147483647 -9223372036854775808 92233719808.000 -92233720368.222 aaa aaaaaaaaaa b bbbbb ccccc dddddddddddddddddddddddddddddddddddddddd dddddddddddddddddddddddddddddddddddddddd dddddddddddddddddddddddddddddddddddddddd 10 1000-01-01 3001-01-01 00:00:00 1990-01-01 00:00:01 01:59:59 1901
NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL 5 NULL NULL NULL NULL NULL
SELECT * FROM t1 WHERE col18=10;
col1 col2 col3 col4 col5 col6 col7 col8 col9 col10 col11 col12 col13 col14 col15 col16 col17 col18 col19 col20 col21 col22 col23
 1 -128 32767 -8388608 2147483647 -9223372036854775808 92233719808.000 -92233720368.222 aaa aaaaaaaaaa b bbbbb ccccc dddddddddddddddddddddddddddddddddddddddd dddddddddddddddddddddddddddddddddddddddd dddddddddddddddddddddddddddddddddddddddd 10 1000-01-01 3001-01-01 00:00:00 1990-01-01 00:00:01 01:59:59 1901
ALTER TABLE t1 ADD COLUMN col24 varbinary(40) default null;
INSERT INTO t1(col18,col24) VALUES (6,REPEAT('a',10));
SELECT col24,col18 FROM t1 WHERE col18 in (6,1,10) ORDER BY col18;
col24 col18
aaaaaaaaaa 6
NULL 10
ALTER TABLE t1 DROP INDEX prefix_idx;
SELECT col18,col14 FROM t1 WHERE col14 like '_ccc%';
col18 col14
10 ccccc
ALTER TABLE t1 ADD INDEX prefix_idx (col24(10));
SELECT col18,col24 FROM t1 WHERE col24 like '_a_a%';
col18 col24
6 aaaaaaaaaa
DROP VIEW VW1;
DROP TABLE t1;
DROP TABLE trigger_table;
#
# case 13 Simple export, discard and import with instant ADD COLUMN.
#
CREATE TABLE t1 (c1 INT) ENGINE = InnoDB
PARTITION BY HASH(c1) PARTITIONS 3;
INSERT INTO t1 VALUES (1), (123), (212), (331), (332), (333), (334), (335) ;
ALTER TABLE t1 ADD COLUMN c2 INT DEFAULT 500;
SELECT c1 FROM t1;
c1
123
333
1
331
334
212
332
335
FLUSH TABLES t1 FOR EXPORT;
SELECT * FROM t1 ORDER BY c1;
c1 c2
1 500
123 500
212 500
331 500
332 500
333 500
334 500
335 500
backup: t1#P#p0
backup: t1#P#p1
backup: t1#P#p2
UNLOCK TABLES;
DROP TABLE t1;
CREATE TABLE t1 (c1 INT, c2 INT) ENGINE = InnoDB
PARTITION BY HASH(c1) PARTITIONS 3;
ALTER TABLE t1 DISCARD TABLESPACE;
restore: t1#P#p0 .ibd and .cfg files
restore: t1#P#p1 .ibd and .cfg files
restore: t1#P#p2 .ibd and .cfg files
ALTER TABLE t1 IMPORT TABLESPACE;
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check status OK
SELECT * FROM t1 ORDER BY c1;
c1 c2
1 500
123 500
212 500
331 500
332 500
333 500
334 500
335 500
DROP TABLE t1;
#
# case 14 Simple export, discard and import with instant ADD COLUMN.
# However, this time the .cfg file would be missing
#
CREATE TABLE t1 (c1 INT) ENGINE = InnoDB
PARTITION BY HASH(c1) PARTITIONS 3;
INSERT INTO t1 VALUES (1), (123), (212), (331), (332), (333), (334), (335) ;
ALTER TABLE t1 ADD COLUMN c2 INT DEFAULT 500;
SELECT c1 FROM t1;
c1
123
333
1
331
334
212
332
335
FLUSH TABLES t1 FOR EXPORT;
SELECT * FROM t1 ORDER BY c1;
c1 c2
1 500
123 500
212 500
331 500
332 500
333 500
334 500
335 500
backup: t1#P#p0
backup: t1#P#p1
backup: t1#P#p2
UNLOCK TABLES;
DROP TABLE t1;
CREATE TABLE t1 (c1 INT, c2 INT) ENGINE = InnoDB
PARTITION BY HASH(c1) PARTITIONS 3;
ALTER TABLE t1 DISCARD TABLESPACE;
restore: t1#P#p0 .ibd and .cfg files
restore: t1#P#p1 .ibd and .cfg files
restore: t1#P#p2 .ibd and .cfg files
# remove the .cfg files
ALTER TABLE t1 IMPORT TABLESPACE;
ERROR HY000: Schema mismatch (Clustered index validation failed. Because the .cfg file is missing, table definition of the IBD file could be different. Or the data file itself is already corrupted.)
DROP TABLE t1;
SET GLOBAL innodb_file_per_table = @old_innodb_file_per_table;
#
# DISCARD/IMPORT selected partitions only
#
CREATE TABLE t1 (c1 INT) ENGINE = InnoDB
PARTITION BY HASH (c1) PARTITIONS 3;
INSERT INTO t1 VALUES (1),(2),(3),(4),(5),(6);
SELECT c1 FROM t1 ORDER BY c1;
c1
1
2
3
4
5
6
FLUSH TABLES t1 FOR EXPORT;
SELECT * FROM t1 ORDER BY c1;
c1
1
2
3
4
5
6
backup: t1#P#p0
backup: t1#P#p1
backup: t1#P#p2
UNLOCK TABLES;
DROP TABLE t1;
CREATE TABLE t1 (c1 INT) ENGINE = InnoDB
PARTITION BY HASH (c1) PARTITIONS 3;
INSERT INTO t1 VALUES (31), (32), (33);
ALTER TABLE t1 DISCARD PARTITION p0,p2 TABLESPACE;
restore: t1#P#p0 .ibd and .cfg files
restore: t1#P#p2 .ibd and .cfg files
ALTER TABLE t1 IMPORT PARTITION p0, p2 TABLESPACE;
SELECT * FROM t1 ORDER BY c1;
c1
2
3
5
6
31
ALTER TABLE t1 DISCARD PARTITION p1 TABLESPACE;
restore: t1#P#p1 .ibd and .cfg files
ALTER TABLE t1 IMPORT PARTITION p1 TABLESPACE;
SELECT * FROM t1 ORDER BY c1;
c1
1
2
3
4
5
6
INSERT INTO t1 VALUES (31), (32), (33);
SELECT * FROM t1 ORDER BY c1;
c1
1
2
3
4
5
6
31
32
33
ALTER TABLE t1 DISCARD PARTITION all TABLESPACE;
restore: t1#P#p0 .ibd and .cfg files
restore: t1#P#p1 .ibd and .cfg files
restore: t1#P#p2 .ibd and .cfg files
ALTER TABLE t1 IMPORT PARTITION p1 TABLESPACE;
SELECT * FROM t1 PARTITION (p1) ORDER BY c1;
c1
1
4
INSERT INTO t1 PARTITION (p1) VALUES (61), (64);
FLUSH TABLES;
SELECT * FROM t1 PARTITION (p1) ORDER BY c1;
c1
1
4
61
64
Warnings:
Warning 1814 InnoDB: Tablespace has been discarded for table 't1'
SELECT * FROM t1 ORDER BY c1;
ERROR HY000: Tablespace has been discarded for table 't1'
ALTER TABLE t1 DISCARD PARTITION TABLESPACE;
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
ALTER TABLE t1 IMPORT PARTITION TABLESPACE;
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
ALTER TABLE t1 DISCARD PARTITION pNonExisting TABLESPACE;
ERROR HY000: Unknown partition 'pNonExisting' in table 't1'
ALTER TABLE t1 IMPORT PARTITION pNonExisting TABLESPACE;
ERROR HY000: Unknown partition 'pNonExisting' in table 't1'
ALTER TABLE t1 DISCARD PARTITION p1 TABLESPACE;
restore: t1#P#p1 .ibd and .cfg files
ALTER TABLE t1 IMPORT PARTITION all TABLESPACE;
SELECT * FROM t1 ORDER BY c1;
c1
1
2
3
4
5
6
DROP TABLE t1;
#
# DISCARD/IMPORT selected subpartitions only
#
CREATE TABLE t1 (c1 INT) ENGINE = InnoDB
PARTITION BY RANGE (c1)
SUBPARTITION BY HASH (c1) SUBPARTITIONS 3
(PARTITION p0 VALUES LESS THAN (100),
PARTITION p1 VALUES LESS THAN MAXVALUE);
INSERT INTO t1 VALUES (1),(2),(3),(4),(5),(6);
INSERT INTO t1 VALUES (101),(102),(103),(104),(105),(106);
SELECT c1 FROM t1 ORDER BY c1;
c1
1
2
3
4
5
6
101
102
103
104
105
106
FLUSH TABLES t1 FOR EXPORT;
SELECT * FROM t1 ORDER BY c1;
c1
1
2
3
4
5
6
101
102
103
104
105
106
backup: t1#P#p0#SP#p0sp0
backup: t1#P#p0#SP#p0sp1
backup: t1#P#p0#SP#p0sp2
backup: t1#P#p1#SP#p1sp0
backup: t1#P#p1#SP#p1sp1
backup: t1#P#p1#SP#p1sp2
UNLOCK TABLES;
DROP TABLE t1;
CREATE TABLE t1 (c1 INT) ENGINE = InnoDB
PARTITION BY RANGE (c1)
SUBPARTITION BY HASH (c1) SUBPARTITIONS 3
(PARTITION p0 VALUES LESS THAN (100),
PARTITION p1 VALUES LESS THAN MAXVALUE);
INSERT INTO t1 VALUES (31), (32), (33);
INSERT INTO t1 VALUES (131), (132), (133);
ALTER TABLE t1 DISCARD PARTITION p0sp1,p1sp0 TABLESPACE;
restore: t1#P#p0#SP#p0sp1 .ibd and .cfg files
restore: t1#P#p1#SP#p1sp0 .ibd and .cfg files
ALTER TABLE t1 IMPORT PARTITION p0sp1, p1sp0 TABLESPACE;
SELECT * FROM t1 ORDER BY c1;
c1
1
4
32
33
102
105
131
133
ALTER TABLE t1 DISCARD PARTITION p1, p0sp2 TABLESPACE;
restore: t1#P#p0#SP#p0sp2 .ibd and .cfg files
restore: t1#P#p1#SP#p1sp0 .ibd and .cfg files
restore: t1#P#p1#SP#p1sp1 .ibd and .cfg files
restore: t1#P#p1#SP#p1sp2 .ibd and .cfg files
ALTER TABLE t1 IMPORT PARTITION p0sp2, p1 TABLESPACE;
SELECT * FROM t1 ORDER BY c1;
c1
1
2
4
5
33
101
102
103
104
105
106
INSERT INTO t1 VALUES (31), (32), (33);
SELECT * FROM t1 ORDER BY c1;
c1
1
2
4
5
31
32
33
33
101
102
103
104
105
106
ALTER TABLE t1 DISCARD PARTITION all TABLESPACE;
restore: t1#P#p0#SP#p0sp0 .ibd and .cfg files
restore: t1#P#p0#SP#p0sp1 .ibd and .cfg files
restore: t1#P#p0#SP#p0sp2 .ibd and .cfg files
restore: t1#P#p1#SP#p1sp0 .ibd and .cfg files
restore: t1#P#p1#SP#p1sp1 .ibd and .cfg files
restore: t1#P#p1#SP#p1sp2 .ibd and .cfg files
ALTER TABLE t1 IMPORT PARTITION p1sp2 TABLESPACE;
SELECT * FROM t1 PARTITION (p1sp2) ORDER BY c1;
c1
101
104
INSERT INTO t1 PARTITION (p1sp2) VALUES (161), (164);
FLUSH TABLES;
SELECT * FROM t1 PARTITION (p1sp2) ORDER BY c1;
c1
101
104
161
164
Warnings:
Warning 1814 InnoDB: Tablespace has been discarded for table 't1'
SELECT * FROM t1 ORDER BY c1;
ERROR HY000: Tablespace has been discarded for table 't1'
ALTER TABLE t1 DISCARD PARTITION p1sp2 TABLESPACE;
restore: t1#P#p1#SP#p1sp2 .ibd and .cfg files
ALTER TABLE t1 DISCARD PARTITION all TABLESPACE;
Warnings:
Warning 1812 InnoDB: Tablespace is missing for table test/t1#P#p0#SP#p0sp0.
Warning 1812 InnoDB: Tablespace is missing for table test/t1#P#p0#SP#p0sp1.
Warning 1812 InnoDB: Tablespace is missing for table test/t1#P#p0#SP#p0sp2.
Warning 1812 InnoDB: Tablespace is missing for table test/t1#P#p1#SP#p1sp0.
Warning 1812 InnoDB: Tablespace is missing for table test/t1#P#p1#SP#p1sp1.
Warning 1812 InnoDB: Tablespace is missing for table test/t1#P#p1#SP#p1sp2.
restore: t1#P#p0#SP#p0sp0 .ibd and .cfg files
restore: t1#P#p0#SP#p0sp1 .ibd and .cfg files
restore: t1#P#p1#SP#p1sp0 .ibd and .cfg files
restore: t1#P#p1#SP#p1sp1 .ibd and .cfg files
restore: t1#P#p1#SP#p1sp2 .ibd and .cfg files
# Removing p0sp2's .ibd file
ALTER TABLE t1 IMPORT PARTITION all TABLESPACE;
ERROR HY000: Internal error: Cannot reset LSNs in table `test`.`t1` /* Partition `p0`, Subpartition `p0sp2` */ : Tablespace not found
restore: t1#P#p0#SP#p0sp2 .ibd and .cfg files
ALTER TABLE t1 IMPORT PARTITION all TABLESPACE;
ERROR HY000: Tablespace 'test/t1#P#p0#SP#p0sp0' exists.
ALTER TABLE t1 IMPORT PARTITION p0sp2 TABLESPACE;
ALTER TABLE t1 DISCARD PARTITION all TABLESPACE;
Warnings:
Warning 1812 InnoDB: Tablespace is missing for table test/t1#P#p1#SP#p1sp0.
Warning 1812 InnoDB: Tablespace is missing for table test/t1#P#p1#SP#p1sp1.
Warning 1812 InnoDB: Tablespace is missing for table test/t1#P#p1#SP#p1sp2.
restore: t1#P#p0#SP#p0sp0 .ibd and .cfg files
restore: t1#P#p0#SP#p0sp1 .ibd and .cfg files
restore: t1#P#p0#SP#p0sp2 .ibd and .cfg files
restore: t1#P#p1#SP#p1sp0 .ibd and .cfg files
restore: t1#P#p1#SP#p1sp1 .ibd and .cfg files
restore: t1#P#p1#SP#p1sp2 .ibd and .cfg files
ALTER TABLE t1 IMPORT PARTITION all TABLESPACE;
SELECT * FROM t1 ORDER BY c1;
c1
1
2
3
4
5
6
101
102
103
104
105
106
DROP TABLE t1;
CREATE TABLE t1 (c1 INT) ENGINE = InnoDB;
ALTER TABLE t1 DISCARD PARTITION pNonExisting TABLESPACE;
ERROR HY000: Partition management on a not partitioned table is not possible
ALTER TABLE t1 IMPORT PARTITION pNonExisting TABLESPACE;
ERROR HY000: Partition management on a not partitioned table is not possible
ALTER TABLE t1 IMPORT PARTITION all TABLESPACE;
ERROR HY000: Partition management on a not partitioned table is not possible
DROP TABLE t1;
# discard partition one by one
CREATE TABLE t1 (c1 INT) ENGINE = InnoDB
PARTITION BY RANGE (c1)
SUBPARTITION BY HASH (c1) SUBPARTITIONS 3
(PARTITION p0 VALUES LESS THAN (100),
PARTITION p1 VALUES LESS THAN MAXVALUE);
ALTER TABLE t1 DISCARD PARTITION p0sp0 TABLESPACE;
restore: t1#P#p0#SP#p0sp0 .ibd and .cfg files
ALTER TABLE t1 IMPORT PARTITION p0sp0 TABLESPACE;
SELECT * FROM t1 PARTITION (p0sp0) ORDER BY c1;
c1
3
6
SELECT * FROM t1 ORDER BY c1;
c1
3
6
ALTER TABLE t1 REBUILD PARTITION p0;
SELECT * FROM t1 PARTITION (p0sp0) ORDER BY c1;
c1
3
6
ALTER TABLE t1 DISCARD PARTITION p1 TABLESPACE;
restore: t1#P#p1#SP#p1sp0 .ibd and .cfg files
restore: t1#P#p1#SP#p1sp1 .ibd and .cfg files
restore: t1#P#p1#SP#p1sp2 .ibd and .cfg files
ALTER TABLE t1 IMPORT PARTITION p1 TABLESPACE;
SELECT * FROM t1 PARTITION (p1) ORDER BY c1;
c1
101
102
103
104
105
106
ALTER TABLE t1 OPTIMIZE PARTITION p1;
Table Op Msg_type Msg_text
test.t1 optimize note Table does not support optimize on partitions. All partitions will be rebuilt and analyzed.
test.t1 optimize status OK
SELECT * FROM t1 PARTITION (p1) ORDER BY c1;
c1
101
102
103
104
105
106
ALTER TABLE t1 CHECK PARTITION p1;
Table Op Msg_type Msg_text
test.t1 check status OK
ALTER TABLE t1 ANALYZE PARTITION p1;
Table Op Msg_type Msg_text
test.t1 analyze status OK
ALTER TABLE t1 REPAIR PARTITION p0sp0,p1;
Table Op Msg_type Msg_text
test.t1 repair status OK
SELECT * FROM t1 ORDER BY c1;
c1
3
6
101
102
103
104
105
106
ALTER TABLE t1 DISCARD PARTITION p0sp0 TABLESPACE;
ALTER TABLE t1 DISCARD PARTITION p1 TABLESPACE;
ALTER TABLE t1 DISCARD PARTITION p0sp1 TABLESPACE;
ALTER TABLE t1 DISCARD PARTITION p0sp2 TABLESPACE;
restore: t1#P#p0#SP#p0sp0 .ibd and .cfg files
restore: t1#P#p0#SP#p0sp1 .ibd and .cfg files
restore: t1#P#p0#SP#p0sp2 .ibd and .cfg files
restore: t1#P#p1#SP#p1sp0 .ibd and .cfg files
restore: t1#P#p1#SP#p1sp1 .ibd and .cfg files
restore: t1#P#p1#SP#p1sp2 .ibd and .cfg files
ALTER TABLE t1 IMPORT PARTITION all TABLESPACE;
SELECT * FROM t1 ORDER BY c1;
c1
1
2
3
4
5
6
101
102
103
104
105
106
DROP TABLE t1;
CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY, b INT) PARTITION BY HASH (a) PARTITIONS 3;
INSERT INTO t1 VALUES(1, 1), (2, 2), (11, 11), (12, 12), (21, 21), (22, 22), (26, 26), (27, 27);
ALTER TABLE t1 ADD COLUMN c INT DEFAULT 100;
SELECT * FROM t1;
a b c
12 12 100
21 21 100
27 27 100
1 1 100
22 22 100
2 2 100
11 11 100
26 26 100
INSERT INTO t1(a, b) VALUES(5, 5), (6, 6), (28, 28);
ALTER TABLE t1 TRUNCATE PARTITION p2;
SELECT * FROM t1;
a b c
6 6 100
12 12 100
21 21 100
27 27 100
1 1 100
22 22 100
28 28 100
ALTER TABLE t1 ADD COLUMN d INT DEFAULT 200;
ALTER TABLE t1 TRUNCATE PARTITION p1;
SELECT * FROM t1;
a b c d
6 6 100 200
12 12 100 200
21 21 100 200
27 27 100 200
INSERT INTO t1(a, b) VALUES(3, 3), (4, 4);
SELECT * FROM t1;
a b c d
3 3 100 200
6 6 100 200
12 12 100 200
21 21 100 200
27 27 100 200
4 4 100 200
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check status OK
FLUSH TABLES t1 FOR EXPORT;
SELECT * FROM t1;
a b c d
3 3 100 200
6 6 100 200
12 12 100 200
21 21 100 200
27 27 100 200
4 4 100 200
backup: t1#P#p0
backup: t1#P#p1
backup: t1#P#p2
UNLOCK TABLES;
DROP TABLE t1;
CREATE TABLE t1 (a INT NOT NULL PRIMARY KEY, b INT, c INT, d INT) PARTITION BY HASH (a) PARTITIONS 3;
ALTER TABLE t1 DISCARD PARTITION all TABLESPACE;
restore: t1#P#p0 .ibd and .cfg files
restore: t1#P#p1 .ibd and .cfg files
restore: t1#P#p2 .ibd and .cfg files
ALTER TABLE t1 IMPORT PARTITION all TABLESPACE;
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check status OK
SELECT * FROM t1;
a b c d
3 3 100 200
6 6 100 200
12 12 100 200
21 21 100 200
27 27 100 200
4 4 100 200
INSERT INTO t1(a, b) VALUES(8, 8), (9, 9), (13, 13), (14, 14), (23, 23), (24, 24);
SELECT * FROM t1;
a b c d
3 3 100 200
6 6 100 200
9 9 NULL NULL
12 12 100 200
21 21 100 200
24 24 NULL NULL
27 27 100 200
4 4 100 200
13 13 NULL NULL
8 8 NULL NULL
14 14 NULL NULL
23 23 NULL NULL
UPDATE t1 SET c = 90 WHERE a < 10;
SELECT * FROM t1;
a b c d
3 3 90 200
6 6 90 200
9 9 90 NULL
12 12 100 200
21 21 100 200
24 24 NULL NULL
27 27 100 200
4 4 90 200
13 13 NULL NULL
8 8 90 NULL
14 14 NULL NULL
23 23 NULL NULL
UPDATE t1 SET c = 110 WHERE a > 20;
SELECT * FROM t1;
a b c d
3 3 90 200
6 6 90 200
9 9 90 NULL
12 12 100 200
21 21 110 200
24 24 110 NULL
27 27 110 200
4 4 90 200
13 13 NULL NULL
8 8 90 NULL
14 14 NULL NULL
23 23 110 NULL
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check status OK
DROP TABLE t1;