mirror of
https://github.com/MariaDB/server.git
synced 2025-05-29 21:42:28 +03:00
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.
102 lines
3.1 KiB
Plaintext
102 lines
3.1 KiB
Plaintext
--- 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
|
|
-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);
|
|
-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;
|
|
-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;
|
|
-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;
|
|
-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;
|
|
-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;
|
|
-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;
|
|
-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;
|
|
-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;
|
|
-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,
|
|
@@ -58,23 +58,23 @@
|
|
INSERT INTO t1(f1, f2, f4, f5) VALUES(1, 2, 3, 4);
|
|
SELECT @@alter_algorithm;
|
|
@@alter_algorithm
|
|
-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
|