--source include/have_innodb.inc SET @old_instant= (SELECT variable_value FROM information_schema.global_status WHERE variable_name = 'innodb_instant_alter_column'); CREATE TABLE t(a INT PRIMARY KEY, b INT, c INT, d INT, e INT) ENGINE=InnoDB; INSERT INTO t VALUES(1,2,3,4,5); --disable_query_log let $n=253; while ($n) { dec $n; ALTER TABLE t DROP b, DROP c, DROP d, DROP e, ADD COLUMN b INT FIRST, ADD COLUMN c INT, ADD COLUMN d INT AFTER b, ADD COLUMN e INT AFTER c, ALGORITHM=INSTANT; } --enable_query_log SELECT * FROM t; --error ER_ALTER_OPERATION_NOT_SUPPORTED ALTER TABLE t DROP b, DROP c, DROP d, DROP e, ADD COLUMN b INT, ALGORITHM=INSTANT; ALTER TABLE t CHANGE COLUMN b beta INT AFTER a, ALGORITHM=INSTANT; ALTER TABLE t DROP e, DROP c, DROP d, ALGORITHM=INSTANT; SELECT * FROM t; ALTER TABLE t DROP COLUMN beta, ALGORITHM=INSTANT; --error ER_ALTER_OPERATION_NOT_SUPPORTED ALTER TABLE t ADD COLUMN b INT NOT NULL, ALGORITHM=INSTANT; SELECT variable_value-@old_instant instants FROM information_schema.global_status WHERE variable_name = 'innodb_instant_alter_column'; ALTER TABLE t ADD COLUMN b INT NOT NULL; SELECT variable_value-@old_instant instants FROM information_schema.global_status WHERE variable_name = 'innodb_instant_alter_column'; SELECT * FROM t; DROP TABLE t;