summaryrefslogtreecommitdiff
path: root/mysql-test/suite/innodb/t/instant_alter_rollback.test
blob: c27f198b4c6f04bfd1ed6dc654a01280d21e4d32 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
--source include/have_innodb.inc
# The embedded server tests do not support restarting.
--source include/not_embedded.inc

--echo #
--echo # MDEV-11369: Instant ADD COLUMN for InnoDB
--echo #

connect to_be_killed, localhost, root;

let $format= 3;
while ($format) {
let $fmt= `SELECT CASE $format WHEN 1 THEN 'DYNAMIC' WHEN 2 THEN 'COMPACT'
ELSE 'REDUNDANT' END`;
let $engine= ENGINE=InnoDB ROW_FORMAT=$fmt;

eval CREATE TABLE empty_$fmt
(id INT PRIMARY KEY, c2 INT UNIQUE) $engine;
eval CREATE TABLE once_$fmt LIKE empty_$fmt;
eval CREATE TABLE twice_$fmt LIKE empty_$fmt;
eval INSERT INTO once_$fmt SET id=1,c2=1;
eval INSERT INTO twice_$fmt SET id=1,c2=1;
eval ALTER TABLE empty_$fmt ADD COLUMN (d1 INT DEFAULT 15);
eval ALTER TABLE once_$fmt ADD COLUMN (d1 INT DEFAULT 20);
eval ALTER TABLE twice_$fmt ADD COLUMN (d1 INT DEFAULT 20);
eval ALTER TABLE twice_$fmt ADD COLUMN
(d2 INT NOT NULL DEFAULT 10,
 d3 VARCHAR(15) NOT NULL DEFAULT 'var och en char');
dec $format;
}

BEGIN;

let $format= 3;
while ($format) {
let $fmt= `SELECT CASE $format WHEN 1 THEN 'DYNAMIC' WHEN 2 THEN 'COMPACT'
ELSE 'REDUNDANT' END`;

eval INSERT INTO empty_$fmt set id=0,c2=42;
eval UPDATE once_$fmt set c2=c2+1;
eval UPDATE twice_$fmt set c2=c2+1;
eval INSERT INTO twice_$fmt SET id=2,c2=0,d3='';
dec $format;
}

connection default;
SET GLOBAL innodb_flush_log_at_trx_commit=1;
CREATE TABLE foo(a INT PRIMARY KEY) ENGINE=InnoDB;

--source include/kill_mysqld.inc
disconnect to_be_killed;
--source include/start_mysqld.inc

SET @saved_frequency= @@GLOBAL.innodb_purge_rseg_truncate_frequency;
SET GLOBAL innodb_purge_rseg_truncate_frequency=1;
DROP TABLE foo;
--source include/wait_all_purged.inc
SET GLOBAL innodb_purge_rseg_truncate_frequency=@saved_frequency;

let $format= 3;
while ($format) {
let $fmt= `SELECT CASE $format WHEN 1 THEN 'DYNAMIC' WHEN 2 THEN 'COMPACT'
ELSE 'REDUNDANT' END`;

eval SELECT * FROM empty_$fmt;
eval SELECT * FROM once_$fmt;
eval SELECT * FROM twice_$fmt;
eval DROP TABLE empty_$fmt, once_$fmt, twice_$fmt;
dec $format;
}