@@ -2061,3 +2061,70 @@ add column after exchange partition
20612061ALTER TABLE t2 ADD COLUMN j INT,ALGORITHM=INSTANT;
20622062ALTER TABLE t2 ADD COLUMN k INT,ALGORITHM=COPY;
20632063DROP TABLE t1,t2;
2064+ #
2065+ Bug#28687608 exchange partition with different row_format
2066+ #
2067+ SET @orig_default_row_format = @@global.innodb_default_row_format;
2068+ SET GLOBAL innodb_default_row_format=COMPACT;
2069+ CREATE TABLE t1 (
2070+ col1 INT UNSIGNED,
2071+ col2 DATETIME
2072+ )
2073+ ENGINE=INNODB
2074+ PARTITION BY RANGE COLUMNS(col2)
2075+ (
2076+ PARTITION p0 VALUES LESS THAN ('1960-01-01'),
2077+ PARTITION p1 VALUES LESS THAN ('1980-01-01')
2078+ );
2079+ INSERT INTO t1 VALUES ('1','1958-02-17 06:25:34');
2080+ INSERT INTO t1 VALUES ('2','1962-11-23 11:06:06');
2081+ SET GLOBAL innodb_default_row_format=DYNAMIC;
2082+ ALTER TABLE t1 ADD PARTITION (PARTITION p2 VALUES LESS THAN ('2000-01-01'));
2083+ INSERT INTO t1 VALUES ('3','1999-10-13 05:28:46'), ('4', '1996-09-26 20:00:00');
2084+ SELECT NAME,ROW_FORMAT FROM INFORMATION_SCHEMA.INNODB_TABLES
2085+ WHERE NAME LIKE '%t1%' ORDER BY TABLE_ID;
2086+ NAME ROW_FORMAT
2087+ test/t1#P#p0 Compact
2088+ test/t1#P#p1 Compact
2089+ test/t1#P#p2 Dynamic
2090+ CREATE TABLE t2 LIKE t1;
2091+ ALTER TABLE t2 REMOVE PARTITIONING;
2092+ exchange compact partition with dynamic;
2093+ ALTER TABLE t1 EXCHANGE PARTITION p0 WITH TABLE t2;
2094+ ERROR HY000: Non matching attribute 'ROW_FORMAT' between partition and table
2095+ ALTER TABLE t1 EXCHANGE PARTITION p2 WITH TABLE t2;
2096+ DROP TABLE t1,t2;
2097+ SET GLOBAL innodb_default_row_format=COMPACT;
2098+ CREATE TABLE t1 (a INT,
2099+ b VARCHAR(55),
2100+ PRIMARY KEY (a))
2101+ PARTITION BY RANGE (a)
2102+ SUBPARTITION BY HASH(a)
2103+ (PARTITION p0 VALUES LESS THAN (100)
2104+ (SUBPARTITION sp0,
2105+ SUBPARTITION sp1),
2106+ PARTITION p1 VALUES LESS THAN (200)
2107+ (SUBPARTITION sp2,
2108+ SUBPARTITION sp3));
2109+ SET GLOBAL innodb_default_row_format=DYNAMIC;
2110+ ALTER TABLE t1 ADD PARTITION (PARTITION p2 VALUES LESS THAN (300)
2111+ (SUBPARTITION sp4,
2112+ SUBPARTITION sp5));
2113+ INSERT INTO t1(b,a) VALUES('first',40),('second',91),('third',140),
2114+ ('forth',191);
2115+ SELECT NAME,ROW_FORMAT FROM INFORMATION_SCHEMA.INNODB_TABLES
2116+ WHERE NAME LIKE '%t1%' ORDER BY TABLE_ID;
2117+ NAME ROW_FORMAT
2118+ test/t1#P#p0#SP#sp0 Compact
2119+ test/t1#P#p0#SP#sp1 Compact
2120+ test/t1#P#p1#SP#sp2 Compact
2121+ test/t1#P#p1#SP#sp3 Compact
2122+ test/t1#P#p2#SP#sp4 Dynamic
2123+ test/t1#P#p2#SP#sp5 Dynamic
2124+ CREATE TABLE t2 like t1;
2125+ ALTER TABLE t2 REMOVE PARTITIONING;
2126+ ALTER TABLE t1 EXCHANGE PARTITION sp2 WITH TABLE t2;
2127+ ERROR HY000: Non matching attribute 'ROW_FORMAT' between partition and table
2128+ ALTER TABLE t1 EXCHANGE PARTITION sp4 WITH TABLE t2;
2129+ DROP TABLE t1,t2;
2130+ SET @@global.innodb_default_row_format=@orig_default_row_format;
0 commit comments