Commit ac24289e authored by Marko Mäkelä's avatar Marko Mäkelä

MDEV-16328 ALTER TABLE…page_compression_level should not rebuild table

The table option page_compression_level is something that only
affects future writes, not actually the data format. Therefore,
we can allow instant changes of this option.

Similarly, the table option page_compressed can be set on a
previously uncompressed table without rebuilding the table,
because an uncompressed page would be considered valid when
reading a page_compressed table.

Removing the page_compressed option will continue to require
the table to be rebuilt.

ha_innobase_inplace_ctx::page_compression_level: The requested
page_compression_level at the start of ALTER TABLE, or 0 if
page_compressed=OFF.

alter_options_need_rebuild(): Renamed from
create_option_need_rebuild(). Allow page_compression_level and
page_compressed to be changed as above, without rebuilding the table.

ha_innobase::check_if_supported_inplace_alter(): Allow ALGORITHM=INSTANT
for ALTER_OPTIONS if the table is not to be rebuilt. If rebuild is
needed, set ha_alter_info->unsupported_reason.

innobase_page_compression_try(): Update SYS_TABLES.TYPE according
to the table flags, for an instant change of page_compression_level
or page_compressed.

commit_cache_norebuild(): Adjust dict_table_t::flags, fil_space_t::flags
and (if needed) FSP_SPACE_FLAGS if page_compression_level was specified.
parent c5a9a632
--- alter_algorithm.result 2018-05-06 23:42:08.022302601 +0530 --- alter_algorithm.result
+++ alter_algorithm.reject 2018-05-06 23:45:23.813346814 +0530 +++ alter_algorithm.reject
@@ -7,35 +7,44 @@ @@ -7,44 +7,44 @@
INSERT INTO t1(f1, f2, f3) VALUES(1, 1, 1); INSERT INTO t1(f1, f2, f3) VALUES(1, 1, 1);
SELECT @@alter_algorithm; SELECT @@alter_algorithm;
@@alter_algorithm @@alter_algorithm
-NOCOPY -COPY
+INPLACE +INPLACE
# All the following cases needs table rebuild # All the following cases needs table rebuild
# Add and Drop primary key # Add and Drop primary key
ALTER TABLE t1 ADD COLUMN col1 INT NOT NULL,DROP PRIMARY KEY,ADD PRIMARY KEY(col1); ALTER TABLE t1 ADD COLUMN col1 INT NOT NULL,DROP PRIMARY KEY,ADD PRIMARY KEY(col1);
-ERROR 0A000: ALGORITHM=NOCOPY is not supported for this operation. Try ALGORITHM=INPLACE -affected rows: 1
-info: Records: 1 Duplicates: 0 Warnings: 0
+affected rows: 0 +affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0 +info: Records: 0 Duplicates: 0 Warnings: 0
# Make existing column NULLABLE # Make existing column NULLABLE
ALTER TABLE t1 MODIFY f2 INT; ALTER TABLE t1 MODIFY f2 INT;
-ERROR 0A000: ALGORITHM=NOCOPY is not supported for this operation. Try ALGORITHM=INPLACE -affected rows: 1
-info: Records: 1 Duplicates: 0 Warnings: 0
+affected rows: 0 +affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0 +info: Records: 0 Duplicates: 0 Warnings: 0
# Make existing column NON-NULLABLE # Make existing column NON-NULLABLE
ALTER TABLE t1 MODIFY f3 INT NOT NULL; ALTER TABLE t1 MODIFY f3 INT NOT NULL;
-ERROR 0A000: ALGORITHM=NOCOPY is not supported for this operation. Try ALGORITHM=INPLACE -affected rows: 1
-info: Records: 1 Duplicates: 0 Warnings: 0
+affected rows: 0 +affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0 +info: Records: 0 Duplicates: 0 Warnings: 0
# Drop Stored Column # Drop Stored Column
ALTER TABLE t1 DROP COLUMN f5; ALTER TABLE t1 DROP COLUMN f5;
-ERROR 0A000: ALGORITHM=NOCOPY is not supported for this operation. Try ALGORITHM=INPLACE -affected rows: 1
-info: Records: 1 Duplicates: 0 Warnings: 0
+affected rows: 0 +affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0 +info: Records: 0 Duplicates: 0 Warnings: 0
# Add base non-generated column as a last column in the compressed table # Add base non-generated column as a last column in the compressed table
ALTER TABLE t1 ADD COLUMN f6 INT NOT NULL; ALTER TABLE t1 ADD COLUMN f6 INT NOT NULL;
-ERROR 0A000: ALGORITHM=NOCOPY is not supported for this operation. Try ALGORITHM=INPLACE -affected rows: 1
-info: Records: 1 Duplicates: 0 Warnings: 0
+affected rows: 0 +affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0 +info: Records: 0 Duplicates: 0 Warnings: 0
# Add base non-generated column but not in the last position # Add base non-generated column but not in the last position
ALTER TABLE t1 ADD COLUMN f7 INT NOT NULL after f3; ALTER TABLE t1 ADD COLUMN f7 INT NOT NULL after f3;
-ERROR 0A000: ALGORITHM=NOCOPY is not supported for this operation. Try ALGORITHM=INPLACE -affected rows: 1
-info: Records: 1 Duplicates: 0 Warnings: 0
+affected rows: 0 +affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0 +info: Records: 0 Duplicates: 0 Warnings: 0
# Force the table to rebuild # Force the table to rebuild
ALTER TABLE t1 FORCE; ALTER TABLE t1 FORCE;
-ERROR 0A000: ALGORITHM=NOCOPY is not supported for this operation. Try ALGORITHM=INPLACE -affected rows: 1
-info: Records: 1 Duplicates: 0 Warnings: 0
+affected rows: 0 +affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0 +info: Records: 0 Duplicates: 0 Warnings: 0
# Row format changes # Row format changes
ALTER TABLE t1 ROW_FORMAT=COMPRESSED; ALTER TABLE t1 ROW_FORMAT=COMPRESSED;
-ERROR 0A000: ALGORITHM=NOCOPY is not supported for this operation. Try ALGORITHM=INPLACE -affected rows: 1
-info: Records: 1 Duplicates: 0 Warnings: 0
+affected rows: 0 +affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0 +info: Records: 0 Duplicates: 0 Warnings: 0
# Engine table # Engine table
ALTER TABLE t1 ENGINE=INNODB; ALTER TABLE t1 ENGINE=INNODB;
-ERROR 0A000: ALGORITHM=NOCOPY is not supported for this operation. Try ALGORITHM=INPLACE -affected rows: 1
-info: Records: 1 Duplicates: 0 Warnings: 0
+affected rows: 0 +affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0 +info: Records: 0 Duplicates: 0 Warnings: 0
DROP TABLE t1; DROP TABLE t1;
affected rows: 0 affected rows: 0
CREATE TABLE t1(f1 INT PRIMARY KEY, f2 INT NOT NULL, CREATE TABLE t1(f1 INT PRIMARY KEY, f2 INT NOT NULL,
@@ -49,7 +58,7 @@ @@ -58,23 +58,23 @@
INSERT INTO t1(f1, f2, f4, f5) VALUES(1, 2, 3, 4); INSERT INTO t1(f1, f2, f4, f5) VALUES(1, 2, 3, 4);
SELECT @@alter_algorithm; SELECT @@alter_algorithm;
@@alter_algorithm @@alter_algorithm
-NOCOPY -COPY
+INPLACE +INPLACE
ALTER TABLE t1 ADD INDEX idx1(f4); ALTER TABLE t1 ADD INDEX idx1(f4);
-affected rows: 1
-info: Records: 1 Duplicates: 0 Warnings: 0
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
ALTER TABLE t1 DROP INDEX idx;
-affected rows: 1
-info: Records: 1 Duplicates: 0 Warnings: 0
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
ALTER TABLE t1 ADD UNIQUE INDEX u1(f2);
-affected rows: 1
-info: Records: 1 Duplicates: 0 Warnings: 0
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
ALTER TABLE t1 DROP INDEX f4;
-affected rows: 1
-info: Records: 1 Duplicates: 0 Warnings: 0
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
SET foreign_key_checks = 0;
affected rows: 0
ALTER TABLE t1 ADD FOREIGN KEY(f5) REFERENCES t2(f1);
-affected rows: 1
-info: Records: 1 Duplicates: 0 Warnings: 0
+affected rows: 0
+info: Records: 0 Duplicates: 0 Warnings: 0
DROP TABLE t2, t1;
affected rows: 0 affected rows: 0
info: Records: 0 Duplicates: 0 Warnings: 0
--- alter_algorithm.result 2018-05-06 23:42:08.022302601 +0530 --- alter_algorithm.result
+++ alter_algorithm.reject 2018-05-06 23:46:08.482772800 +0530 +++ alter_algorithm.reject
@@ -7,35 +7,35 @@ @@ -7,44 +7,35 @@
INSERT INTO t1(f1, f2, f3) VALUES(1, 1, 1); INSERT INTO t1(f1, f2, f3) VALUES(1, 1, 1);
SELECT @@alter_algorithm; SELECT @@alter_algorithm;
@@alter_algorithm @@alter_algorithm
-NOCOPY -COPY
+INSTANT +INSTANT
# All the following cases needs table rebuild # All the following cases needs table rebuild
# Add and Drop primary key # Add and Drop primary key
ALTER TABLE t1 ADD COLUMN col1 INT NOT NULL,DROP PRIMARY KEY,ADD PRIMARY KEY(col1); ALTER TABLE t1 ADD COLUMN col1 INT NOT NULL,DROP PRIMARY KEY,ADD PRIMARY KEY(col1);
-ERROR 0A000: ALGORITHM=NOCOPY is not supported for this operation. Try ALGORITHM=INPLACE -affected rows: 1
-info: Records: 1 Duplicates: 0 Warnings: 0
+Got one of the listed errors +Got one of the listed errors
# Make existing column NULLABLE # Make existing column NULLABLE
ALTER TABLE t1 MODIFY f2 INT; ALTER TABLE t1 MODIFY f2 INT;
-ERROR 0A000: ALGORITHM=NOCOPY is not supported for this operation. Try ALGORITHM=INPLACE -affected rows: 1
-info: Records: 1 Duplicates: 0 Warnings: 0
+Got one of the listed errors +Got one of the listed errors
# Make existing column NON-NULLABLE # Make existing column NON-NULLABLE
ALTER TABLE t1 MODIFY f3 INT NOT NULL; ALTER TABLE t1 MODIFY f3 INT NOT NULL;
-ERROR 0A000: ALGORITHM=NOCOPY is not supported for this operation. Try ALGORITHM=INPLACE -affected rows: 1
-info: Records: 1 Duplicates: 0 Warnings: 0
+Got one of the listed errors +Got one of the listed errors
# Drop Stored Column # Drop Stored Column
ALTER TABLE t1 DROP COLUMN f5; ALTER TABLE t1 DROP COLUMN f5;
-ERROR 0A000: ALGORITHM=NOCOPY is not supported for this operation. Try ALGORITHM=INPLACE -affected rows: 1
-info: Records: 1 Duplicates: 0 Warnings: 0
+Got one of the listed errors +Got one of the listed errors
# Add base non-generated column as a last column in the compressed table # Add base non-generated column as a last column in the compressed table
ALTER TABLE t1 ADD COLUMN f6 INT NOT NULL; ALTER TABLE t1 ADD COLUMN f6 INT NOT NULL;
-ERROR 0A000: ALGORITHM=NOCOPY is not supported for this operation. Try ALGORITHM=INPLACE -affected rows: 1
-info: Records: 1 Duplicates: 0 Warnings: 0
+Got one of the listed errors +Got one of the listed errors
# Add base non-generated column but not in the last position # Add base non-generated column but not in the last position
ALTER TABLE t1 ADD COLUMN f7 INT NOT NULL after f3; ALTER TABLE t1 ADD COLUMN f7 INT NOT NULL after f3;
-ERROR 0A000: ALGORITHM=NOCOPY is not supported for this operation. Try ALGORITHM=INPLACE -affected rows: 1
-info: Records: 1 Duplicates: 0 Warnings: 0
+Got one of the listed errors +Got one of the listed errors
# Force the table to rebuild # Force the table to rebuild
ALTER TABLE t1 FORCE; ALTER TABLE t1 FORCE;
-ERROR 0A000: ALGORITHM=NOCOPY is not supported for this operation. Try ALGORITHM=INPLACE -affected rows: 1
-info: Records: 1 Duplicates: 0 Warnings: 0
+Got one of the listed errors +Got one of the listed errors
# Row format changes # Row format changes
ALTER TABLE t1 ROW_FORMAT=COMPRESSED; ALTER TABLE t1 ROW_FORMAT=COMPRESSED;
-ERROR 0A000: ALGORITHM=NOCOPY is not supported for this operation. Try ALGORITHM=INPLACE -affected rows: 1
-info: Records: 1 Duplicates: 0 Warnings: 0
+Got one of the listed errors +Got one of the listed errors
# Engine table # Engine table
ALTER TABLE t1 ENGINE=INNODB; ALTER TABLE t1 ENGINE=INNODB;
-ERROR 0A000: ALGORITHM=NOCOPY is not supported for this operation. Try ALGORITHM=INPLACE -affected rows: 1
-info: Records: 1 Duplicates: 0 Warnings: 0
+Got one of the listed errors +Got one of the listed errors
DROP TABLE t1; DROP TABLE t1;
affected rows: 0 affected rows: 0
CREATE TABLE t1(f1 INT PRIMARY KEY, f2 INT NOT NULL, CREATE TABLE t1(f1 INT PRIMARY KEY, f2 INT NOT NULL,
@@ -49,23 +49,18 @@ @@ -58,23 +49,18 @@
INSERT INTO t1(f1, f2, f4, f5) VALUES(1, 2, 3, 4); INSERT INTO t1(f1, f2, f4, f5) VALUES(1, 2, 3, 4);
SELECT @@alter_algorithm; SELECT @@alter_algorithm;
@@alter_algorithm @@alter_algorithm
-NOCOPY -COPY
+INSTANT +INSTANT
ALTER TABLE t1 ADD INDEX idx1(f4); ALTER TABLE t1 ADD INDEX idx1(f4);
-affected rows: 0 -affected rows: 1
-info: Records: 0 Duplicates: 0 Warnings: 0 -info: Records: 1 Duplicates: 0 Warnings: 0
+ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: ADD INDEX. Try ALGORITHM=NOCOPY +ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: ADD INDEX. Try ALGORITHM=NOCOPY
ALTER TABLE t1 DROP INDEX idx; ALTER TABLE t1 DROP INDEX idx;
-affected rows: 0 -affected rows: 1
-info: Records: 0 Duplicates: 0 Warnings: 0 -info: Records: 1 Duplicates: 0 Warnings: 0
+ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: DROP INDEX. Try ALGORITHM=NOCOPY +ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: DROP INDEX. Try ALGORITHM=NOCOPY
ALTER TABLE t1 ADD UNIQUE INDEX u1(f2); ALTER TABLE t1 ADD UNIQUE INDEX u1(f2);
-affected rows: 0 -affected rows: 1
-info: Records: 0 Duplicates: 0 Warnings: 0 -info: Records: 1 Duplicates: 0 Warnings: 0
+ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: ADD INDEX. Try ALGORITHM=NOCOPY +ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: ADD INDEX. Try ALGORITHM=NOCOPY
ALTER TABLE t1 DROP INDEX f4; ALTER TABLE t1 DROP INDEX f4;
-affected rows: 0 -affected rows: 1
-info: Records: 0 Duplicates: 0 Warnings: 0 -info: Records: 1 Duplicates: 0 Warnings: 0
+ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: DROP INDEX. Try ALGORITHM=NOCOPY +ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: DROP INDEX. Try ALGORITHM=NOCOPY
SET foreign_key_checks = 0; SET foreign_key_checks = 0;
affected rows: 0 affected rows: 0
ALTER TABLE t1 ADD FOREIGN KEY(f5) REFERENCES t2(f1); ALTER TABLE t1 ADD FOREIGN KEY(f5) REFERENCES t2(f1);
-affected rows: 0 -affected rows: 1
-info: Records: 0 Duplicates: 0 Warnings: 0 -info: Records: 1 Duplicates: 0 Warnings: 0
+ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: ADD INDEX. Try ALGORITHM=NOCOPY +ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: ADD INDEX. Try ALGORITHM=NOCOPY
DROP TABLE t2, t1; DROP TABLE t2, t1;
affected rows: 0 affected rows: 0
--- alter_algorithm.result 2018-05-06 23:42:08.022302601 +0530 --- alter_algorithm.result
+++ alter_algorithm.reject 2018-05-06 23:42:16.382634082 +0530 +++ alter_algorithm.reject
@@ -7,35 +7,44 @@ @@ -7,44 +7,35 @@
INSERT INTO t1(f1, f2, f3) VALUES(1, 1, 1); INSERT INTO t1(f1, f2, f3) VALUES(1, 1, 1);
SELECT @@alter_algorithm; SELECT @@alter_algorithm;
@@alter_algorithm @@alter_algorithm
-NOCOPY -COPY
+COPY +NOCOPY
# All the following cases needs table rebuild # All the following cases needs table rebuild
# Add and Drop primary key # Add and Drop primary key
ALTER TABLE t1 ADD COLUMN col1 INT NOT NULL,DROP PRIMARY KEY,ADD PRIMARY KEY(col1); ALTER TABLE t1 ADD COLUMN col1 INT NOT NULL,DROP PRIMARY KEY,ADD PRIMARY KEY(col1);
-ERROR 0A000: ALGORITHM=NOCOPY is not supported for this operation. Try ALGORITHM=INPLACE -affected rows: 1
+affected rows: 1 -info: Records: 1 Duplicates: 0 Warnings: 0
+info: Records: 1 Duplicates: 0 Warnings: 0 +Got one of the listed errors
# Make existing column NULLABLE # Make existing column NULLABLE
ALTER TABLE t1 MODIFY f2 INT; ALTER TABLE t1 MODIFY f2 INT;
-ERROR 0A000: ALGORITHM=NOCOPY is not supported for this operation. Try ALGORITHM=INPLACE -affected rows: 1
+affected rows: 1 -info: Records: 1 Duplicates: 0 Warnings: 0
+info: Records: 1 Duplicates: 0 Warnings: 0 +Got one of the listed errors
# Make existing column NON-NULLABLE # Make existing column NON-NULLABLE
ALTER TABLE t1 MODIFY f3 INT NOT NULL; ALTER TABLE t1 MODIFY f3 INT NOT NULL;
-ERROR 0A000: ALGORITHM=NOCOPY is not supported for this operation. Try ALGORITHM=INPLACE -affected rows: 1
+affected rows: 1 -info: Records: 1 Duplicates: 0 Warnings: 0
+info: Records: 1 Duplicates: 0 Warnings: 0 +Got one of the listed errors
# Drop Stored Column # Drop Stored Column
ALTER TABLE t1 DROP COLUMN f5; ALTER TABLE t1 DROP COLUMN f5;
-ERROR 0A000: ALGORITHM=NOCOPY is not supported for this operation. Try ALGORITHM=INPLACE -affected rows: 1
+affected rows: 1 -info: Records: 1 Duplicates: 0 Warnings: 0
+info: Records: 1 Duplicates: 0 Warnings: 0 +Got one of the listed errors
# Add base non-generated column as a last column in the compressed table # Add base non-generated column as a last column in the compressed table
ALTER TABLE t1 ADD COLUMN f6 INT NOT NULL; ALTER TABLE t1 ADD COLUMN f6 INT NOT NULL;
-ERROR 0A000: ALGORITHM=NOCOPY is not supported for this operation. Try ALGORITHM=INPLACE -affected rows: 1
+affected rows: 1 -info: Records: 1 Duplicates: 0 Warnings: 0
+info: Records: 1 Duplicates: 0 Warnings: 0 +Got one of the listed errors
# Add base non-generated column but not in the last position # Add base non-generated column but not in the last position
ALTER TABLE t1 ADD COLUMN f7 INT NOT NULL after f3; ALTER TABLE t1 ADD COLUMN f7 INT NOT NULL after f3;
-ERROR 0A000: ALGORITHM=NOCOPY is not supported for this operation. Try ALGORITHM=INPLACE -affected rows: 1
+affected rows: 1 -info: Records: 1 Duplicates: 0 Warnings: 0
+info: Records: 1 Duplicates: 0 Warnings: 0 +Got one of the listed errors
# Force the table to rebuild # Force the table to rebuild
ALTER TABLE t1 FORCE; ALTER TABLE t1 FORCE;
-ERROR 0A000: ALGORITHM=NOCOPY is not supported for this operation. Try ALGORITHM=INPLACE -affected rows: 1
+affected rows: 1 -info: Records: 1 Duplicates: 0 Warnings: 0
+info: Records: 1 Duplicates: 0 Warnings: 0 +Got one of the listed errors
# Row format changes # Row format changes
ALTER TABLE t1 ROW_FORMAT=COMPRESSED; ALTER TABLE t1 ROW_FORMAT=COMPRESSED;
-ERROR 0A000: ALGORITHM=NOCOPY is not supported for this operation. Try ALGORITHM=INPLACE -affected rows: 1
+affected rows: 1 -info: Records: 1 Duplicates: 0 Warnings: 0
+info: Records: 1 Duplicates: 0 Warnings: 0 +Got one of the listed errors
# Engine table # Engine table
ALTER TABLE t1 ENGINE=INNODB; ALTER TABLE t1 ENGINE=INNODB;
-ERROR 0A000: ALGORITHM=NOCOPY is not supported for this operation. Try ALGORITHM=INPLACE -affected rows: 1
+affected rows: 1 -info: Records: 1 Duplicates: 0 Warnings: 0
+info: Records: 1 Duplicates: 0 Warnings: 0 +Got one of the listed errors
DROP TABLE t1; DROP TABLE t1;
affected rows: 0 affected rows: 0
CREATE TABLE t1(f1 INT PRIMARY KEY, f2 INT NOT NULL, CREATE TABLE t1(f1 INT PRIMARY KEY, f2 INT NOT NULL,
@@ -49,23 +58,23 @@ @@ -58,23 +49,23 @@
INSERT INTO t1(f1, f2, f4, f5) VALUES(1, 2, 3, 4); INSERT INTO t1(f1, f2, f4, f5) VALUES(1, 2, 3, 4);
SELECT @@alter_algorithm; SELECT @@alter_algorithm;
@@alter_algorithm @@alter_algorithm
-NOCOPY -COPY
+COPY +NOCOPY
ALTER TABLE t1 ADD INDEX idx1(f4); ALTER TABLE t1 ADD INDEX idx1(f4);
-affected rows: 0 -affected rows: 1
-info: Records: 0 Duplicates: 0 Warnings: 0 -info: Records: 1 Duplicates: 0 Warnings: 0
+affected rows: 1 +affected rows: 0
+info: Records: 1 Duplicates: 0 Warnings: 0 +info: Records: 0 Duplicates: 0 Warnings: 0
ALTER TABLE t1 DROP INDEX idx; ALTER TABLE t1 DROP INDEX idx;
-affected rows: 0 -affected rows: 1
-info: Records: 0 Duplicates: 0 Warnings: 0 -info: Records: 1 Duplicates: 0 Warnings: 0
+affected rows: 1 +affected rows: 0
+info: Records: 1 Duplicates: 0 Warnings: 0 +info: Records: 0 Duplicates: 0 Warnings: 0
ALTER TABLE t1 ADD UNIQUE INDEX u1(f2); ALTER TABLE t1 ADD UNIQUE INDEX u1(f2);
-affected rows: 0 -affected rows: 1
-info: Records: 0 Duplicates: 0 Warnings: 0 -info: Records: 1 Duplicates: 0 Warnings: 0
+affected rows: 1 +affected rows: 0
+info: Records: 1 Duplicates: 0 Warnings: 0 +info: Records: 0 Duplicates: 0 Warnings: 0
ALTER TABLE t1 DROP INDEX f4; ALTER TABLE t1 DROP INDEX f4;
-affected rows: 0 -affected rows: 1
-info: Records: 0 Duplicates: 0 Warnings: 0 -info: Records: 1 Duplicates: 0 Warnings: 0
+affected rows: 1 +affected rows: 0
+info: Records: 1 Duplicates: 0 Warnings: 0 +info: Records: 0 Duplicates: 0 Warnings: 0
SET foreign_key_checks = 0; SET foreign_key_checks = 0;
affected rows: 0 affected rows: 0
ALTER TABLE t1 ADD FOREIGN KEY(f5) REFERENCES t2(f1); ALTER TABLE t1 ADD FOREIGN KEY(f5) REFERENCES t2(f1);
-affected rows: 0 -affected rows: 1
-info: Records: 0 Duplicates: 0 Warnings: 0 -info: Records: 1 Duplicates: 0 Warnings: 0
+affected rows: 1 +affected rows: 0
+info: Records: 1 Duplicates: 0 Warnings: 0 +info: Records: 0 Duplicates: 0 Warnings: 0
DROP TABLE t2, t1; DROP TABLE t2, t1;
affected rows: 0 affected rows: 0
...@@ -7,35 +7,44 @@ PRIMARY KEY(f1))ROW_FORMAT=COMPRESSED, ENGINE=INNODB; ...@@ -7,35 +7,44 @@ PRIMARY KEY(f1))ROW_FORMAT=COMPRESSED, ENGINE=INNODB;
INSERT INTO t1(f1, f2, f3) VALUES(1, 1, 1); INSERT INTO t1(f1, f2, f3) VALUES(1, 1, 1);
SELECT @@alter_algorithm; SELECT @@alter_algorithm;
@@alter_algorithm @@alter_algorithm
NOCOPY COPY
# All the following cases needs table rebuild # All the following cases needs table rebuild
# Add and Drop primary key # Add and Drop primary key
ALTER TABLE t1 ADD COLUMN col1 INT NOT NULL,DROP PRIMARY KEY,ADD PRIMARY KEY(col1); ALTER TABLE t1 ADD COLUMN col1 INT NOT NULL,DROP PRIMARY KEY,ADD PRIMARY KEY(col1);
ERROR 0A000: ALGORITHM=NOCOPY is not supported for this operation. Try ALGORITHM=INPLACE affected rows: 1
info: Records: 1 Duplicates: 0 Warnings: 0
# Make existing column NULLABLE # Make existing column NULLABLE
ALTER TABLE t1 MODIFY f2 INT; ALTER TABLE t1 MODIFY f2 INT;
ERROR 0A000: ALGORITHM=NOCOPY is not supported for this operation. Try ALGORITHM=INPLACE affected rows: 1
info: Records: 1 Duplicates: 0 Warnings: 0
# Make existing column NON-NULLABLE # Make existing column NON-NULLABLE
ALTER TABLE t1 MODIFY f3 INT NOT NULL; ALTER TABLE t1 MODIFY f3 INT NOT NULL;
ERROR 0A000: ALGORITHM=NOCOPY is not supported for this operation. Try ALGORITHM=INPLACE affected rows: 1
info: Records: 1 Duplicates: 0 Warnings: 0
# Drop Stored Column # Drop Stored Column
ALTER TABLE t1 DROP COLUMN f5; ALTER TABLE t1 DROP COLUMN f5;
ERROR 0A000: ALGORITHM=NOCOPY is not supported for this operation. Try ALGORITHM=INPLACE affected rows: 1
info: Records: 1 Duplicates: 0 Warnings: 0
# Add base non-generated column as a last column in the compressed table # Add base non-generated column as a last column in the compressed table
ALTER TABLE t1 ADD COLUMN f6 INT NOT NULL; ALTER TABLE t1 ADD COLUMN f6 INT NOT NULL;
ERROR 0A000: ALGORITHM=NOCOPY is not supported for this operation. Try ALGORITHM=INPLACE affected rows: 1
info: Records: 1 Duplicates: 0 Warnings: 0
# Add base non-generated column but not in the last position # Add base non-generated column but not in the last position
ALTER TABLE t1 ADD COLUMN f7 INT NOT NULL after f3; ALTER TABLE t1 ADD COLUMN f7 INT NOT NULL after f3;
ERROR 0A000: ALGORITHM=NOCOPY is not supported for this operation. Try ALGORITHM=INPLACE affected rows: 1
info: Records: 1 Duplicates: 0 Warnings: 0
# Force the table to rebuild # Force the table to rebuild
ALTER TABLE t1 FORCE; ALTER TABLE t1 FORCE;
ERROR 0A000: ALGORITHM=NOCOPY is not supported for this operation. Try ALGORITHM=INPLACE affected rows: 1
info: Records: 1 Duplicates: 0 Warnings: 0
# Row format changes # Row format changes
ALTER TABLE t1 ROW_FORMAT=COMPRESSED; ALTER TABLE t1 ROW_FORMAT=COMPRESSED;
ERROR 0A000: ALGORITHM=NOCOPY is not supported for this operation. Try ALGORITHM=INPLACE affected rows: 1
info: Records: 1 Duplicates: 0 Warnings: 0
# Engine table # Engine table
ALTER TABLE t1 ENGINE=INNODB; ALTER TABLE t1 ENGINE=INNODB;
ERROR 0A000: ALGORITHM=NOCOPY is not supported for this operation. Try ALGORITHM=INPLACE affected rows: 1
info: Records: 1 Duplicates: 0 Warnings: 0
DROP TABLE t1; DROP TABLE t1;
affected rows: 0 affected rows: 0
CREATE TABLE t1(f1 INT PRIMARY KEY, f2 INT NOT NULL, CREATE TABLE t1(f1 INT PRIMARY KEY, f2 INT NOT NULL,
...@@ -49,23 +58,23 @@ FOREIGN KEY `fidx` (f1) REFERENCES t1(f1))ENGINE=INNODB; ...@@ -49,23 +58,23 @@ FOREIGN KEY `fidx` (f1) REFERENCES t1(f1))ENGINE=INNODB;
INSERT INTO t1(f1, f2, f4, f5) VALUES(1, 2, 3, 4); INSERT INTO t1(f1, f2, f4, f5) VALUES(1, 2, 3, 4);
SELECT @@alter_algorithm; SELECT @@alter_algorithm;
@@alter_algorithm @@alter_algorithm
NOCOPY COPY
ALTER TABLE t1 ADD INDEX idx1(f4); ALTER TABLE t1 ADD INDEX idx1(f4);
affected rows: 0 affected rows: 1
info: Records: 0 Duplicates: 0 Warnings: 0 info: Records: 1 Duplicates: 0 Warnings: 0
ALTER TABLE t1 DROP INDEX idx; ALTER TABLE t1 DROP INDEX idx;
affected rows: 0 affected rows: 1
info: Records: 0 Duplicates: 0 Warnings: 0 info: Records: 1 Duplicates: 0 Warnings: 0
ALTER TABLE t1 ADD UNIQUE INDEX u1(f2); ALTER TABLE t1 ADD UNIQUE INDEX u1(f2);
affected rows: 0 affected rows: 1
info: Records: 0 Duplicates: 0 Warnings: 0 info: Records: 1 Duplicates: 0 Warnings: 0
ALTER TABLE t1 DROP INDEX f4; ALTER TABLE t1 DROP INDEX f4;
affected rows: 0 affected rows: 1
info: Records: 0 Duplicates: 0 Warnings: 0 info: Records: 1 Duplicates: 0 Warnings: 0
SET foreign_key_checks = 0; SET foreign_key_checks = 0;
affected rows: 0 affected rows: 0
ALTER TABLE t1 ADD FOREIGN KEY(f5) REFERENCES t2(f1); ALTER TABLE t1 ADD FOREIGN KEY(f5) REFERENCES t2(f1);
affected rows: 0 affected rows: 1
info: Records: 0 Duplicates: 0 Warnings: 0 info: Records: 1 Duplicates: 0 Warnings: 0
DROP TABLE t2, t1; DROP TABLE t2, t1;
affected rows: 0 affected rows: 0
...@@ -147,7 +147,8 @@ count(*) ...@@ -147,7 +147,8 @@ count(*)
select count(*) from innodb_page_compressed9 where c1 < 500000; select count(*) from innodb_page_compressed9 where c1 < 500000;
count(*) count(*)
5000 5000
alter table innodb_normal page_compressed=1 page_compression_level=8; alter table innodb_normal page_compressed=1 page_compression_level=8,
algorithm=instant;
show warnings; show warnings;
Level Code Message Level Code Message
show create table innodb_normal; show create table innodb_normal;
...@@ -156,6 +157,10 @@ innodb_normal CREATE TABLE `innodb_normal` ( ...@@ -156,6 +157,10 @@ innodb_normal CREATE TABLE `innodb_normal` (
`c1` int(11) DEFAULT NULL, `c1` int(11) DEFAULT NULL,
`b` char(20) DEFAULT NULL `b` char(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=8 ) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=8
alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0, algorithm=instant;
ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: Changing table options requires the table to be rebuilt. Try ALGORITHM=INPLACE
alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0, algorithm=nocopy;
ERROR 0A000: ALGORITHM=NOCOPY is not supported. Reason: Changing table options requires the table to be rebuilt. Try ALGORITHM=INPLACE
alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0; alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0;
show warnings; show warnings;
Level Code Message Level Code Message
...@@ -174,6 +179,7 @@ update innodb_page_compressed6 set c1 = c1 + 1; ...@@ -174,6 +179,7 @@ update innodb_page_compressed6 set c1 = c1 + 1;
update innodb_page_compressed7 set c1 = c1 + 1; update innodb_page_compressed7 set c1 = c1 + 1;
update innodb_page_compressed8 set c1 = c1 + 1; update innodb_page_compressed8 set c1 = c1 + 1;
update innodb_page_compressed9 set c1 = c1 + 1; update innodb_page_compressed9 set c1 = c1 + 1;
commit;
select count(*) from innodb_compressed; select count(*) from innodb_compressed;
count(*) count(*)
5000 5000
......
...@@ -147,7 +147,8 @@ count(*) ...@@ -147,7 +147,8 @@ count(*)
select count(*) from innodb_page_compressed9 where c1 < 500000; select count(*) from innodb_page_compressed9 where c1 < 500000;
count(*) count(*)
5000 5000
alter table innodb_normal page_compressed=1 page_compression_level=8; alter table innodb_normal page_compressed=1 page_compression_level=8,
algorithm=instant;
show warnings; show warnings;
Level Code Message Level Code Message
show create table innodb_normal; show create table innodb_normal;
...@@ -156,6 +157,10 @@ innodb_normal CREATE TABLE `innodb_normal` ( ...@@ -156,6 +157,10 @@ innodb_normal CREATE TABLE `innodb_normal` (
`c1` int(11) DEFAULT NULL, `c1` int(11) DEFAULT NULL,
`b` char(20) DEFAULT NULL `b` char(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=8 ) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=8
alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0, algorithm=instant;
ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: Changing table options requires the table to be rebuilt. Try ALGORITHM=INPLACE
alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0, algorithm=nocopy;
ERROR 0A000: ALGORITHM=NOCOPY is not supported. Reason: Changing table options requires the table to be rebuilt. Try ALGORITHM=INPLACE
alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0; alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0;
show warnings; show warnings;
Level Code Message Level Code Message
......
...@@ -147,7 +147,8 @@ count(*) ...@@ -147,7 +147,8 @@ count(*)
select count(*) from innodb_page_compressed9 where c1 < 500000; select count(*) from innodb_page_compressed9 where c1 < 500000;
count(*) count(*)
5000 5000
alter table innodb_normal page_compressed=1 page_compression_level=8; alter table innodb_normal page_compressed=1 page_compression_level=8,
algorithm=instant;
show warnings; show warnings;
Level Code Message Level Code Message
show create table innodb_normal; show create table innodb_normal;
...@@ -156,6 +157,10 @@ innodb_normal CREATE TABLE `innodb_normal` ( ...@@ -156,6 +157,10 @@ innodb_normal CREATE TABLE `innodb_normal` (
`c1` int(11) DEFAULT NULL, `c1` int(11) DEFAULT NULL,
`b` char(20) DEFAULT NULL `b` char(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=8 ) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=8
alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0, algorithm=instant;
ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: Changing table options requires the table to be rebuilt. Try ALGORITHM=INPLACE
alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0, algorithm=nocopy;
ERROR 0A000: ALGORITHM=NOCOPY is not supported. Reason: Changing table options requires the table to be rebuilt. Try ALGORITHM=INPLACE
alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0; alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0;
show warnings; show warnings;
Level Code Message Level Code Message
...@@ -174,6 +179,7 @@ update innodb_page_compressed6 set c1 = c1 + 1; ...@@ -174,6 +179,7 @@ update innodb_page_compressed6 set c1 = c1 + 1;
update innodb_page_compressed7 set c1 = c1 + 1; update innodb_page_compressed7 set c1 = c1 + 1;
update innodb_page_compressed8 set c1 = c1 + 1; update innodb_page_compressed8 set c1 = c1 + 1;
update innodb_page_compressed9 set c1 = c1 + 1; update innodb_page_compressed9 set c1 = c1 + 1;
commit;
select count(*) from innodb_compressed; select count(*) from innodb_compressed;
count(*) count(*)
5000 5000
......
...@@ -147,7 +147,8 @@ count(*) ...@@ -147,7 +147,8 @@ count(*)
select count(*) from innodb_page_compressed9 where c1 < 500000; select count(*) from innodb_page_compressed9 where c1 < 500000;
count(*) count(*)
5000 5000
alter table innodb_normal page_compressed=1 page_compression_level=8; alter table innodb_normal page_compressed=1 page_compression_level=8,
algorithm=instant;
show warnings; show warnings;
Level Code Message Level Code Message
show create table innodb_normal; show create table innodb_normal;
...@@ -156,6 +157,10 @@ innodb_normal CREATE TABLE `innodb_normal` ( ...@@ -156,6 +157,10 @@ innodb_normal CREATE TABLE `innodb_normal` (
`c1` int(11) DEFAULT NULL, `c1` int(11) DEFAULT NULL,
`b` char(20) DEFAULT NULL `b` char(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=8 ) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=8
alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0, algorithm=instant;
ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: Changing table options requires the table to be rebuilt. Try ALGORITHM=INPLACE
alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0, algorithm=nocopy;
ERROR 0A000: ALGORITHM=NOCOPY is not supported. Reason: Changing table options requires the table to be rebuilt. Try ALGORITHM=INPLACE
alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0; alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0;
show warnings; show warnings;
Level Code Message Level Code Message
...@@ -174,6 +179,7 @@ update innodb_page_compressed6 set c1 = c1 + 1; ...@@ -174,6 +179,7 @@ update innodb_page_compressed6 set c1 = c1 + 1;
update innodb_page_compressed7 set c1 = c1 + 1; update innodb_page_compressed7 set c1 = c1 + 1;
update innodb_page_compressed8 set c1 = c1 + 1; update innodb_page_compressed8 set c1 = c1 + 1;
update innodb_page_compressed9 set c1 = c1 + 1; update innodb_page_compressed9 set c1 = c1 + 1;
commit;
select count(*) from innodb_compressed; select count(*) from innodb_compressed;
count(*) count(*)
5000 5000
......
...@@ -88,8 +88,12 @@ select count(*) from innodb_dynamic where c1 < 1500000; ...@@ -88,8 +88,12 @@ select count(*) from innodb_dynamic where c1 < 1500000;
count(*) count(*)
5000 5000
set global innodb_compression_algorithm = 0; set global innodb_compression_algorithm = 0;
alter table innodb_compact engine=innodb page_compressed=DEFAULT; alter table innodb_compact page_compressed=DEFAULT, algorithm=instant;
alter table innodb_dynamic engine=innodb page_compressed=DEFAULT; ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: Changing table options requires the table to be rebuilt. Try ALGORITHM=INPLACE
alter table innodb_compact page_compressed=DEFAULT;
alter table innodb_dynamic page_compressed=DEFAULT, algorithm=instant;
ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: Changing table options requires the table to be rebuilt. Try ALGORITHM=INPLACE
alter table innodb_dynamic page_compressed=DEFAULT;
show create table innodb_compact; show create table innodb_compact;
Table Create Table Table Create Table
innodb_compact CREATE TABLE `innodb_compact` ( innodb_compact CREATE TABLE `innodb_compact` (
......
...@@ -147,7 +147,8 @@ count(*) ...@@ -147,7 +147,8 @@ count(*)
select count(*) from innodb_page_compressed9 where c1 < 500000; select count(*) from innodb_page_compressed9 where c1 < 500000;
count(*) count(*)
5000 5000
alter table innodb_normal page_compressed=1 page_compression_level=8; alter table innodb_normal page_compressed=1 page_compression_level=8,
algorithm=instant;
show warnings; show warnings;
Level Code Message Level Code Message
show create table innodb_normal; show create table innodb_normal;
...@@ -156,6 +157,10 @@ innodb_normal CREATE TABLE `innodb_normal` ( ...@@ -156,6 +157,10 @@ innodb_normal CREATE TABLE `innodb_normal` (
`c1` int(11) DEFAULT NULL, `c1` int(11) DEFAULT NULL,
`b` char(20) DEFAULT NULL `b` char(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=8 ) ENGINE=InnoDB DEFAULT CHARSET=latin1 `page_compressed`=1 `page_compression_level`=8
alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0, algorithm=instant;
ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: Changing table options requires the table to be rebuilt. Try ALGORITHM=INPLACE
alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0, algorithm=nocopy;
ERROR 0A000: ALGORITHM=NOCOPY is not supported. Reason: Changing table options requires the table to be rebuilt. Try ALGORITHM=INPLACE
alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0; alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0;
show warnings; show warnings;
Level Code Message Level Code Message
......
...@@ -3,7 +3,7 @@ let $algorithm = `SELECT @@ALTER_ALGORITHM`; ...@@ -3,7 +3,7 @@ let $algorithm = `SELECT @@ALTER_ALGORITHM`;
let $error_code = 0; let $error_code = 0;
if ($algorithm == "NOCOPY") { if ($algorithm == "NOCOPY") {
let $error_code = ER_ALTER_OPERATION_NOT_SUPPORTED; let $error_code = ER_ALTER_OPERATION_NOT_SUPPORTED, ER_ALTER_OPERATION_NOT_SUPPORTED_REASON;
} }
if ($algorithm == "INSTANT") { if ($algorithm == "INSTANT") {
......
...@@ -2,8 +2,6 @@ ...@@ -2,8 +2,6 @@
-- source include/have_innodb_bzip2.inc -- source include/have_innodb_bzip2.inc
-- source include/not_embedded.inc -- source include/not_embedded.inc
let $innodb_compression_algorithm_orig=`select @@innodb_compression_algorithm`;
# bzip2 # bzip2
set global innodb_compression_algorithm = 5; set global innodb_compression_algorithm = 5;
...@@ -79,9 +77,14 @@ select count(*) from innodb_page_compressed7 where c1 < 500000; ...@@ -79,9 +77,14 @@ select count(*) from innodb_page_compressed7 where c1 < 500000;
select count(*) from innodb_page_compressed8 where c1 < 500000; select count(*) from innodb_page_compressed8 where c1 < 500000;
select count(*) from innodb_page_compressed9 where c1 < 500000; select count(*) from innodb_page_compressed9 where c1 < 500000;
alter table innodb_normal page_compressed=1 page_compression_level=8; alter table innodb_normal page_compressed=1 page_compression_level=8,
algorithm=instant;
show warnings; show warnings;
show create table innodb_normal; show create table innodb_normal;
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0, algorithm=instant;
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0, algorithm=nocopy;
alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0; alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0;
show warnings; show warnings;
show create table innodb_compressed; show create table innodb_compressed;
...@@ -95,6 +98,7 @@ update innodb_page_compressed6 set c1 = c1 + 1; ...@@ -95,6 +98,7 @@ update innodb_page_compressed6 set c1 = c1 + 1;
update innodb_page_compressed7 set c1 = c1 + 1; update innodb_page_compressed7 set c1 = c1 + 1;
update innodb_page_compressed8 set c1 = c1 + 1; update innodb_page_compressed8 set c1 = c1 + 1;
update innodb_page_compressed9 set c1 = c1 + 1; update innodb_page_compressed9 set c1 = c1 + 1;
commit;
select count(*) from innodb_compressed; select count(*) from innodb_compressed;
select count(*) from innodb_page_compressed1; select count(*) from innodb_page_compressed1;
select count(*) from innodb_page_compressed1 where c1 < 500000; select count(*) from innodb_page_compressed1 where c1 < 500000;
...@@ -236,8 +240,3 @@ drop table innodb_page_compressed6; ...@@ -236,8 +240,3 @@ drop table innodb_page_compressed6;
drop table innodb_page_compressed7; drop table innodb_page_compressed7;
drop table innodb_page_compressed8; drop table innodb_page_compressed8;
drop table innodb_page_compressed9; drop table innodb_page_compressed9;
# reset system
--disable_query_log
EVAL SET GLOBAL innodb_compression_algorithm = $innodb_compression_algorithm_orig;
--enable_query_log
...@@ -2,8 +2,6 @@ ...@@ -2,8 +2,6 @@
-- source include/have_innodb_lz4.inc -- source include/have_innodb_lz4.inc
-- source include/not_embedded.inc -- source include/not_embedded.inc
let $innodb_compression_algorithm_orig=`SELECT @@innodb_compression_algorithm`;
# lz4 # lz4
set global innodb_compression_algorithm = 2; set global innodb_compression_algorithm = 2;
...@@ -79,9 +77,14 @@ select count(*) from innodb_page_compressed7 where c1 < 500000; ...@@ -79,9 +77,14 @@ select count(*) from innodb_page_compressed7 where c1 < 500000;
select count(*) from innodb_page_compressed8 where c1 < 500000; select count(*) from innodb_page_compressed8 where c1 < 500000;
select count(*) from innodb_page_compressed9 where c1 < 500000; select count(*) from innodb_page_compressed9 where c1 < 500000;
alter table innodb_normal page_compressed=1 page_compression_level=8; alter table innodb_normal page_compressed=1 page_compression_level=8,
algorithm=instant;
show warnings; show warnings;
show create table innodb_normal; show create table innodb_normal;
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0, algorithm=instant;
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0, algorithm=nocopy;
alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0; alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0;
show warnings; show warnings;
show create table innodb_compressed; show create table innodb_compressed;
...@@ -237,8 +240,3 @@ drop table innodb_page_compressed6; ...@@ -237,8 +240,3 @@ drop table innodb_page_compressed6;
drop table innodb_page_compressed7; drop table innodb_page_compressed7;
drop table innodb_page_compressed8; drop table innodb_page_compressed8;
drop table innodb_page_compressed9; drop table innodb_page_compressed9;
# reset system
--disable_query_log
EVAL SET GLOBAL innodb_compression_algorithm = $innodb_compression_algorithm_orig;
--enable_query_log
...@@ -2,8 +2,6 @@ ...@@ -2,8 +2,6 @@
-- source include/have_innodb_lzma.inc -- source include/have_innodb_lzma.inc
-- source include/not_embedded.inc -- source include/not_embedded.inc
let $innodb_compression_algorithm_orig=`SELECT @@innodb_compression_algorithm`;
# lzma # lzma
set global innodb_compression_algorithm = 4; set global innodb_compression_algorithm = 4;
...@@ -79,9 +77,14 @@ select count(*) from innodb_page_compressed7 where c1 < 500000; ...@@ -79,9 +77,14 @@ select count(*) from innodb_page_compressed7 where c1 < 500000;
select count(*) from innodb_page_compressed8 where c1 < 500000; select count(*) from innodb_page_compressed8 where c1 < 500000;
select count(*) from innodb_page_compressed9 where c1 < 500000; select count(*) from innodb_page_compressed9 where c1 < 500000;
alter table innodb_normal page_compressed=1 page_compression_level=8; alter table innodb_normal page_compressed=1 page_compression_level=8,
algorithm=instant;
show warnings; show warnings;
show create table innodb_normal; show create table innodb_normal;
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0, algorithm=instant;
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0, algorithm=nocopy;
alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0; alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0;
show warnings; show warnings;
show create table innodb_compressed; show create table innodb_compressed;
...@@ -95,6 +98,7 @@ update innodb_page_compressed6 set c1 = c1 + 1; ...@@ -95,6 +98,7 @@ update innodb_page_compressed6 set c1 = c1 + 1;
update innodb_page_compressed7 set c1 = c1 + 1; update innodb_page_compressed7 set c1 = c1 + 1;
update innodb_page_compressed8 set c1 = c1 + 1; update innodb_page_compressed8 set c1 = c1 + 1;
update innodb_page_compressed9 set c1 = c1 + 1; update innodb_page_compressed9 set c1 = c1 + 1;
commit;
select count(*) from innodb_compressed; select count(*) from innodb_compressed;
select count(*) from innodb_page_compressed1; select count(*) from innodb_page_compressed1;
select count(*) from innodb_page_compressed1 where c1 < 500000; select count(*) from innodb_page_compressed1 where c1 < 500000;
...@@ -236,8 +240,3 @@ drop table innodb_page_compressed6; ...@@ -236,8 +240,3 @@ drop table innodb_page_compressed6;
drop table innodb_page_compressed7; drop table innodb_page_compressed7;
drop table innodb_page_compressed8; drop table innodb_page_compressed8;
drop table innodb_page_compressed9; drop table innodb_page_compressed9;
# reset system
--disable_query_log
EVAL SET GLOBAL innodb_compression_algorithm = $innodb_compression_algorithm_orig;
--enable_query_log
...@@ -2,8 +2,6 @@ ...@@ -2,8 +2,6 @@
-- source include/have_innodb_lzo.inc -- source include/have_innodb_lzo.inc
-- source include/not_embedded.inc -- source include/not_embedded.inc
let $innodb_compression_algorithm_orig=`select @@innodb_compression_algorithm`;
# lzo # lzo
set global innodb_compression_algorithm = 3; set global innodb_compression_algorithm = 3;
...@@ -79,9 +77,14 @@ select count(*) from innodb_page_compressed7 where c1 < 500000; ...@@ -79,9 +77,14 @@ select count(*) from innodb_page_compressed7 where c1 < 500000;
select count(*) from innodb_page_compressed8 where c1 < 500000; select count(*) from innodb_page_compressed8 where c1 < 500000;
select count(*) from innodb_page_compressed9 where c1 < 500000; select count(*) from innodb_page_compressed9 where c1 < 500000;
alter table innodb_normal page_compressed=1 page_compression_level=8; alter table innodb_normal page_compressed=1 page_compression_level=8,
algorithm=instant;
show warnings; show warnings;
show create table innodb_normal; show create table innodb_normal;
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0, algorithm=instant;
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0, algorithm=nocopy;
alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0; alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0;
show warnings; show warnings;
show create table innodb_compressed; show create table innodb_compressed;
...@@ -95,6 +98,7 @@ update innodb_page_compressed6 set c1 = c1 + 1; ...@@ -95,6 +98,7 @@ update innodb_page_compressed6 set c1 = c1 + 1;
update innodb_page_compressed7 set c1 = c1 + 1; update innodb_page_compressed7 set c1 = c1 + 1;
update innodb_page_compressed8 set c1 = c1 + 1; update innodb_page_compressed8 set c1 = c1 + 1;
update innodb_page_compressed9 set c1 = c1 + 1; update innodb_page_compressed9 set c1 = c1 + 1;
commit;
select count(*) from innodb_compressed; select count(*) from innodb_compressed;
select count(*) from innodb_page_compressed1; select count(*) from innodb_page_compressed1;
select count(*) from innodb_page_compressed1 where c1 < 500000; select count(*) from innodb_page_compressed1 where c1 < 500000;
...@@ -189,8 +193,3 @@ drop table innodb_page_compressed6; ...@@ -189,8 +193,3 @@ drop table innodb_page_compressed6;
drop table innodb_page_compressed7; drop table innodb_page_compressed7;
drop table innodb_page_compressed8; drop table innodb_page_compressed8;
drop table innodb_page_compressed9; drop table innodb_page_compressed9;
# reset system
--disable_query_log
eval set global innodb_compression_algorithm = $innodb_compression_algorithm_orig;
--enable_query_log
...@@ -70,8 +70,12 @@ select count(*) from innodb_dynamic where c1 < 1500000; ...@@ -70,8 +70,12 @@ select count(*) from innodb_dynamic where c1 < 1500000;
# none # none
set global innodb_compression_algorithm = 0; set global innodb_compression_algorithm = 0;
alter table innodb_compact engine=innodb page_compressed=DEFAULT; --error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
alter table innodb_dynamic engine=innodb page_compressed=DEFAULT; alter table innodb_compact page_compressed=DEFAULT, algorithm=instant;
alter table innodb_compact page_compressed=DEFAULT;
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
alter table innodb_dynamic page_compressed=DEFAULT, algorithm=instant;
alter table innodb_dynamic page_compressed=DEFAULT;
show create table innodb_compact; show create table innodb_compact;
show create table innodb_dynamic; show create table innodb_dynamic;
......
--source include/have_innodb.inc --source include/have_innodb.inc
--source include/not_embedded.inc --source include/not_embedded.inc
let $innodb_compression_algorithm_orig=`SELECT @@innodb_compression_algorithm`;
# zlib # zlib
set global innodb_compression_algorithm = 1; set global innodb_compression_algorithm = 1;
...@@ -78,9 +76,14 @@ select count(*) from innodb_page_compressed7 where c1 < 500000; ...@@ -78,9 +76,14 @@ select count(*) from innodb_page_compressed7 where c1 < 500000;
select count(*) from innodb_page_compressed8 where c1 < 500000; select count(*) from innodb_page_compressed8 where c1 < 500000;
select count(*) from innodb_page_compressed9 where c1 < 500000; select count(*) from innodb_page_compressed9 where c1 < 500000;
alter table innodb_normal page_compressed=1 page_compression_level=8; alter table innodb_normal page_compressed=1 page_compression_level=8,
algorithm=instant;
show warnings; show warnings;
show create table innodb_normal; show create table innodb_normal;
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0, algorithm=instant;
--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON
alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0, algorithm=nocopy;
alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0; alter table innodb_compressed row_format=default page_compressed=1 page_compression_level=8 key_block_size=0;
show warnings; show warnings;
show create table innodb_compressed; show create table innodb_compressed;
...@@ -187,8 +190,3 @@ drop table innodb_page_compressed6; ...@@ -187,8 +190,3 @@ drop table innodb_page_compressed6;
drop table innodb_page_compressed7; drop table innodb_page_compressed7;
drop table innodb_page_compressed8; drop table innodb_page_compressed8;
drop table innodb_page_compressed9; drop table innodb_page_compressed9;
# reset system
--disable_query_log
EVAL SET GLOBAL innodb_compression_algorithm = $innodb_compression_algorithm_orig;
--enable_query_log
...@@ -7919,3 +7919,5 @@ ER_VERS_QUERY_IN_PARTITION ...@@ -7919,3 +7919,5 @@ ER_VERS_QUERY_IN_PARTITION
eng "SYSTEM_TIME partitions in table %`s does not support historical query" eng "SYSTEM_TIME partitions in table %`s does not support historical query"
ER_KEY_DOESNT_SUPPORT ER_KEY_DOESNT_SUPPORT
eng "%s index %`s does not support this operation" eng "%s index %`s does not support this operation"
ER_ALTER_OPERATION_TABLE_OPTIONS_NEED_REBUILD
eng "Changing table options requires the table to be rebuilt"
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment