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