-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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.
- Loading branch information
Showing
20 changed files
with
450 additions
and
239 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,66 +1,101 @@ | ||
--- alter_algorithm.result 2018-05-06 23:42:08.022302601 +0530 | ||
+++ alter_algorithm.reject 2018-05-06 23:45:23.813346814 +0530 | ||
@@ -7,35 +7,44 @@ | ||
--- alter_algorithm.result | ||
+++ alter_algorithm.reject | ||
@@ -7,44 +7,44 @@ | ||
INSERT INTO t1(f1, f2, f3) VALUES(1, 1, 1); | ||
SELECT @@alter_algorithm; | ||
@@alter_algorithm | ||
-NOCOPY | ||
-COPY | ||
+INPLACE | ||
# All the following cases needs table rebuild | ||
# Add and Drop primary key | ||
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 | ||
+info: Records: 0 Duplicates: 0 Warnings: 0 | ||
# Make existing column NULLABLE | ||
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 | ||
+info: Records: 0 Duplicates: 0 Warnings: 0 | ||
# Make existing column NON-NULLABLE | ||
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 | ||
+info: Records: 0 Duplicates: 0 Warnings: 0 | ||
# Drop Stored Column | ||
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 | ||
+info: Records: 0 Duplicates: 0 Warnings: 0 | ||
# Add base non-generated column as a last column in the compressed table | ||
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 | ||
+info: Records: 0 Duplicates: 0 Warnings: 0 | ||
# Add base non-generated column but not in the last position | ||
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 | ||
+info: Records: 0 Duplicates: 0 Warnings: 0 | ||
# Force the table to rebuild | ||
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 | ||
+info: Records: 0 Duplicates: 0 Warnings: 0 | ||
# Row format changes | ||
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 | ||
+info: Records: 0 Duplicates: 0 Warnings: 0 | ||
# Engine table | ||
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 | ||
+info: Records: 0 Duplicates: 0 Warnings: 0 | ||
DROP TABLE t1; | ||
affected rows: 0 | ||
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); | ||
SELECT @@alter_algorithm; | ||
@@alter_algorithm | ||
-NOCOPY | ||
-COPY | ||
+INPLACE | ||
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 | ||
info: Records: 0 Duplicates: 0 Warnings: 0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,78 +1,87 @@ | ||
--- alter_algorithm.result 2018-05-06 23:42:08.022302601 +0530 | ||
+++ alter_algorithm.reject 2018-05-06 23:46:08.482772800 +0530 | ||
@@ -7,35 +7,35 @@ | ||
--- alter_algorithm.result | ||
+++ alter_algorithm.reject | ||
@@ -7,44 +7,35 @@ | ||
INSERT INTO t1(f1, f2, f3) VALUES(1, 1, 1); | ||
SELECT @@alter_algorithm; | ||
@@alter_algorithm | ||
-NOCOPY | ||
-COPY | ||
+INSTANT | ||
# All the following cases needs table rebuild | ||
# Add and Drop primary key | ||
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 | ||
# Make existing column NULLABLE | ||
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 | ||
# Make existing column NON-NULLABLE | ||
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 | ||
# Drop Stored Column | ||
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 | ||
# Add base non-generated column as a last column in the compressed table | ||
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 | ||
# Add base non-generated column but not in the last position | ||
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 | ||
# Force the table to rebuild | ||
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 | ||
# Row format changes | ||
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 | ||
# Engine table | ||
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 | ||
DROP TABLE t1; | ||
affected rows: 0 | ||
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); | ||
SELECT @@alter_algorithm; | ||
@@alter_algorithm | ||
-NOCOPY | ||
-COPY | ||
+INSTANT | ||
ALTER TABLE t1 ADD INDEX idx1(f4); | ||
-affected rows: 0 | ||
-info: Records: 0 Duplicates: 0 Warnings: 0 | ||
-affected rows: 1 | ||
-info: Records: 1 Duplicates: 0 Warnings: 0 | ||
+ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: ADD INDEX. Try ALGORITHM=NOCOPY | ||
ALTER TABLE t1 DROP INDEX idx; | ||
-affected rows: 0 | ||
-info: Records: 0 Duplicates: 0 Warnings: 0 | ||
-affected rows: 1 | ||
-info: Records: 1 Duplicates: 0 Warnings: 0 | ||
+ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: DROP INDEX. Try ALGORITHM=NOCOPY | ||
ALTER TABLE t1 ADD UNIQUE INDEX u1(f2); | ||
-affected rows: 0 | ||
-info: Records: 0 Duplicates: 0 Warnings: 0 | ||
-affected rows: 1 | ||
-info: Records: 1 Duplicates: 0 Warnings: 0 | ||
+ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: ADD INDEX. Try ALGORITHM=NOCOPY | ||
ALTER TABLE t1 DROP INDEX f4; | ||
-affected rows: 0 | ||
-info: Records: 0 Duplicates: 0 Warnings: 0 | ||
-affected rows: 1 | ||
-info: Records: 1 Duplicates: 0 Warnings: 0 | ||
+ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: DROP INDEX. Try ALGORITHM=NOCOPY | ||
SET foreign_key_checks = 0; | ||
affected rows: 0 | ||
ALTER TABLE t1 ADD FOREIGN KEY(f5) REFERENCES t2(f1); | ||
-affected rows: 0 | ||
-info: Records: 0 Duplicates: 0 Warnings: 0 | ||
-affected rows: 1 | ||
-info: Records: 1 Duplicates: 0 Warnings: 0 | ||
+ERROR 0A000: ALGORITHM=INSTANT is not supported. Reason: ADD INDEX. Try ALGORITHM=NOCOPY | ||
DROP TABLE t2, t1; | ||
affected rows: 0 |
Oops, something went wrong.