# # MDEV-11369: Instant ADD COLUMN for InnoDB # connect to_be_killed, localhost, root; CREATE TABLE empty_REDUNDANT (id INT PRIMARY KEY, c2 INT UNIQUE) ENGINE=InnoDB ROW_FORMAT=REDUNDANT; CREATE TABLE once_REDUNDANT LIKE empty_REDUNDANT; CREATE TABLE twice_REDUNDANT LIKE empty_REDUNDANT; INSERT INTO once_REDUNDANT SET id=1,c2=1; INSERT INTO twice_REDUNDANT SET id=1,c2=1; ALTER TABLE empty_REDUNDANT ADD COLUMN (d1 INT DEFAULT 15); ALTER TABLE once_REDUNDANT ADD COLUMN (d1 INT DEFAULT 20); ALTER TABLE twice_REDUNDANT ADD COLUMN (d1 INT DEFAULT 20); ALTER TABLE twice_REDUNDANT ADD COLUMN (d2 INT NOT NULL DEFAULT 10, d3 VARCHAR(15) NOT NULL DEFAULT 'var och en char'); CREATE TABLE empty_COMPACT (id INT PRIMARY KEY, c2 INT UNIQUE) ENGINE=InnoDB ROW_FORMAT=COMPACT; CREATE TABLE once_COMPACT LIKE empty_COMPACT; CREATE TABLE twice_COMPACT LIKE empty_COMPACT; INSERT INTO once_COMPACT SET id=1,c2=1; INSERT INTO twice_COMPACT SET id=1,c2=1; ALTER TABLE empty_COMPACT ADD COLUMN (d1 INT DEFAULT 15); ALTER TABLE once_COMPACT ADD COLUMN (d1 INT DEFAULT 20); ALTER TABLE twice_COMPACT ADD COLUMN (d1 INT DEFAULT 20); ALTER TABLE twice_COMPACT ADD COLUMN (d2 INT NOT NULL DEFAULT 10, d3 VARCHAR(15) NOT NULL DEFAULT 'var och en char'); CREATE TABLE empty_DYNAMIC (id INT PRIMARY KEY, c2 INT UNIQUE) ENGINE=InnoDB ROW_FORMAT=DYNAMIC; CREATE TABLE once_DYNAMIC LIKE empty_DYNAMIC; CREATE TABLE twice_DYNAMIC LIKE empty_DYNAMIC; INSERT INTO once_DYNAMIC SET id=1,c2=1; INSERT INTO twice_DYNAMIC SET id=1,c2=1; ALTER TABLE empty_DYNAMIC ADD COLUMN (d1 INT DEFAULT 15); ALTER TABLE once_DYNAMIC ADD COLUMN (d1 INT DEFAULT 20); ALTER TABLE twice_DYNAMIC ADD COLUMN (d1 INT DEFAULT 20); ALTER TABLE twice_DYNAMIC ADD COLUMN (d2 INT NOT NULL DEFAULT 10, d3 VARCHAR(15) NOT NULL DEFAULT 'var och en char'); BEGIN; INSERT INTO empty_REDUNDANT set id=0,c2=42; UPDATE once_REDUNDANT set c2=c2+1; UPDATE twice_REDUNDANT set c2=c2+1; INSERT INTO twice_REDUNDANT SET id=2,c2=0,d3=''; INSERT INTO empty_COMPACT set id=0,c2=42; UPDATE once_COMPACT set c2=c2+1; UPDATE twice_COMPACT set c2=c2+1; INSERT INTO twice_COMPACT SET id=2,c2=0,d3=''; INSERT INTO empty_DYNAMIC set id=0,c2=42; UPDATE once_DYNAMIC set c2=c2+1; UPDATE twice_DYNAMIC set c2=c2+1; INSERT INTO twice_DYNAMIC SET id=2,c2=0,d3=''; connection default; SET GLOBAL innodb_flush_log_at_trx_commit=1; CREATE TABLE foo(a INT PRIMARY KEY) ENGINE=InnoDB; # Kill the server disconnect to_be_killed; SET @saved_frequency= @@GLOBAL.innodb_purge_rseg_truncate_frequency; SET GLOBAL innodb_purge_rseg_truncate_frequency=1; DROP TABLE foo; InnoDB 0 transactions not purged SET GLOBAL innodb_purge_rseg_truncate_frequency=@saved_frequency; SELECT * FROM empty_REDUNDANT; id c2 d1 SELECT * FROM once_REDUNDANT; id c2 d1 1 1 20 SELECT * FROM twice_REDUNDANT; id c2 d1 d2 d3 1 1 20 10 var och en char DROP TABLE empty_REDUNDANT, once_REDUNDANT, twice_REDUNDANT; SELECT * FROM empty_COMPACT; id c2 d1 SELECT * FROM once_COMPACT; id c2 d1 1 1 20 SELECT * FROM twice_COMPACT; id c2 d1 d2 d3 1 1 20 10 var och en char DROP TABLE empty_COMPACT, once_COMPACT, twice_COMPACT; SELECT * FROM empty_DYNAMIC; id c2 d1 SELECT * FROM once_DYNAMIC; id c2 d1 1 1 20 SELECT * FROM twice_DYNAMIC; id c2 d1 d2 d3 1 1 20 10 var och en char DROP TABLE empty_DYNAMIC, once_DYNAMIC, twice_DYNAMIC;