CREATE TABLE p0 ( c1 int primary key, c2 int DEFAULT NULL ) ENGINE=InnoDB; insert into p0 select seq,seq from seq_1_to_99; alter table p0 engine=s3 , rename to archive PARTITION BY RANGE (c1) (PARTITION p0 VALUES LESS THAN (100)); show create table archive; Table Create Table archive CREATE TABLE `archive` ( `c1` int(11) NOT NULL, `c2` int(11) DEFAULT NULL, PRIMARY KEY (`c1`) ) ENGINE=S3 DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci PARTITION BY RANGE (`c1`) (PARTITION `p0` VALUES LESS THAN (100) ENGINE = S3) CREATE TABLE t1 ( c1 int primary key, c2 int DEFAULT NULL ) ENGINE=InnoDB PARTITION BY RANGE (c1) (PARTITION p1 VALUES LESS THAN (200), PARTITION p2 VALUES LESS THAN (300), PARTITION p3 VALUES LESS THAN (400)); insert into t1 select seq,seq from seq_100_to_399; create table p1 like t1; alter table p1 remove partitioning; alter table t1 exchange partition p1 with table p1; alter table t1 drop partition p1; show create table p1; Table Create Table p1 CREATE TABLE `p1` ( `c1` int(11) NOT NULL, `c2` int(11) DEFAULT NULL, PRIMARY KEY (`c1`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci select count(*) from p1; count(*) 100 alter table p1 engine=s3; alter table archive add partition (partition p1 values less than (200)); alter table archive exchange partition p1 with table p1; select count(*) from p1; count(*) 0 drop table p1; show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `c1` int(11) NOT NULL, `c2` int(11) DEFAULT NULL, PRIMARY KEY (`c1`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci PARTITION BY RANGE (`c1`) (PARTITION `p2` VALUES LESS THAN (300) ENGINE = InnoDB, PARTITION `p3` VALUES LESS THAN (400) ENGINE = InnoDB) show create table archive; Table Create Table archive CREATE TABLE `archive` ( `c1` int(11) NOT NULL, `c2` int(11) DEFAULT NULL, PRIMARY KEY (`c1`) ) ENGINE=S3 DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci PARTITION BY RANGE (`c1`) (PARTITION `p0` VALUES LESS THAN (100) ENGINE = S3, PARTITION `p1` VALUES LESS THAN (200) ENGINE = S3) select count(*) from t1; count(*) 200 select count(*) from archive; count(*) 199 drop table t1,archive;