1--source include/have_innodb.inc 2--source innodb_default_row_format.inc 3# The embedded server tests do not support restarting. 4--source include/not_embedded.inc 5 6# Flush any open myisam tables from previous tests 7FLUSH TABLES; 8 9--echo # 10--echo # MDEV-11369: Instant ADD COLUMN for InnoDB 11--echo # MDEV-15562: Instant DROP COLUMN or changing the order of columns 12--echo # 13 14connect to_be_killed, localhost, root; 15 16SET @old_instant= 17(SELECT variable_value FROM information_schema.global_status 18WHERE variable_name = 'innodb_instant_alter_column'); 19CREATE TABLE empty (id INT PRIMARY KEY, c2 INT UNIQUE) ENGINE=InnoDB; 20CREATE TABLE once LIKE empty; 21CREATE TABLE twice LIKE empty; 22CREATE TABLE thrice LIKE empty; 23INSERT INTO once SET id=1,c2=1; 24INSERT INTO twice SET id=1,c2=1; 25INSERT INTO thrice SET id=1,c2=1; 26ALTER TABLE empty ADD COLUMN (d1 INT DEFAULT 15); 27ALTER TABLE once ADD COLUMN (d1 INT DEFAULT 20); 28ALTER TABLE twice ADD COLUMN (d1 INT DEFAULT 20); 29ALTER TABLE thrice ADD COLUMN (d1 INT DEFAULT 20); 30ALTER TABLE twice ADD COLUMN 31(d2 INT NOT NULL DEFAULT 10, 32 d3 VARCHAR(15) NOT NULL DEFAULT 'var och en char'); 33ALTER TABLE thrice ADD COLUMN 34(d2 INT NOT NULL DEFAULT 10, 35 d3 TEXT NOT NULL DEFAULT 'con'); 36ALTER TABLE thrice DROP c2, DROP d3, CHANGE d2 d3 INT NOT NULL FIRST; 37 38SELECT variable_value-@old_instant instants 39FROM information_schema.global_status 40WHERE variable_name = 'innodb_instant_alter_column'; 41 42BEGIN; 43 44INSERT INTO empty set id=0,c2=42; 45UPDATE once set c2=c2+1; 46UPDATE twice set c2=c2+1; 47UPDATE thrice set d3=d3+1; 48INSERT INTO twice SET id=2,c2=0,d3=''; 49INSERT INTO thrice SET id=2,d3=0; 50DELETE FROM empty; 51DELETE FROM once; 52DELETE FROM twice; 53DELETE FROM thrice; 54 55connection default; 56SET GLOBAL innodb_flush_log_at_trx_commit=1; 57CREATE TABLE foo(a INT PRIMARY KEY) ENGINE=InnoDB; 58 59--source include/kill_mysqld.inc 60disconnect to_be_killed; 61--source include/start_mysqld.inc 62 63SET @saved_frequency= @@GLOBAL.innodb_purge_rseg_truncate_frequency; 64SET GLOBAL innodb_purge_rseg_truncate_frequency=1; 65DROP TABLE foo; 66--source include/wait_all_purged.inc 67SET GLOBAL innodb_purge_rseg_truncate_frequency=@saved_frequency; 68 69SELECT * FROM empty; 70SELECT * FROM once; 71SELECT * FROM twice; 72SELECT * FROM thrice; 73DROP TABLE empty, once, twice, thrice; 74