
--echo #
--echo # Scenario 1:
--echo # Create normal table and partitioned table, DML on them, restart
--echo #

--eval CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, b INT) ROW_FORMAT=$row_format

INSERT INTO t1 VALUES(0, 1), (0, 2), (0, 3), (0, 4), (0, 5);


let $new_cols = 1;
let $instant_add_column = ALTER TABLE t1 ADD COLUMN c1 INT DEFAULT 10;

--source ../mysql-test/suite/innodb/include/instant_add_column_exec_and_verify.inc

INSERT INTO t1 VALUES(0, 6, 20), (0, 7, 20);

--source include/restart_mysqld.inc

CHECK TABLE t1;

SELECT * FROM t1;

UPDATE t1 SET b = 10;

--source include/restart_mysqld.inc

CHECK TABLE t1;

SELECT * FROM t1;

UPDATE t1 SET c1 = 15;

--source include/restart_mysqld.inc

CHECK TABLE t1;

DELETE FROM t1 WHERE a > 0;

--source include/restart_mysqld.inc

CHECK TABLE t1;

SELECT * FROM t1;

INSERT INTO t1(a, b) VALUES(0, 1), (0, 2), (0, 3), (0, 4), (0, 5);

let $new_cols = 1;
let $instant_add_column = ALTER TABLE t1 ADD COLUMN c2 VARCHAR(100) DEFAULT 'Hello World!';

--source ../mysql-test/suite/innodb/include/instant_add_column_exec_and_verify.inc

UPDATE t1 SET c2 = 'Hello MySQL!';

--source include/restart_mysqld.inc

CHECK TABLE t1;

SELECT * FROM t1;

DROP TABLE t1;



--echo #
--echo # Scenario 2:
--echo # Create normal table and partitioned table, DML on them, crash
--echo #

--eval CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, b INT) ROW_FORMAT=$row_format

INSERT INTO t1 VALUES(0, 1), (0, 2), (0, 3), (0, 4), (0, 5);


let $new_cols = 1;
let $instant_add_column = ALTER TABLE t1 ADD COLUMN c1 INT DEFAULT 10;

--source ../mysql-test/suite/innodb/include/instant_add_column_exec_and_verify.inc

START TRANSACTION;

INSERT INTO t1 VALUES(0, 6, 20), (0, 7, 20);

# Server will crash on next commit
--source include/expect_crash.inc
SET SESSION DEBUG="+d,crash_commit_after";
--echo CR_SERVER_LOST
--error 2013

COMMIT;

--source include/start_mysqld.inc

CHECK TABLE t1;

SELECT * FROM t1;


INSERT INTO t1 VALUES(0, 6, 20), (0, 7, 20);

START TRANSACTION;

UPDATE t1 SET b = 10;

# Server will crash on next commit
--source include/expect_crash.inc
SET SESSION DEBUG="+d,crash_commit_after";
--echo CR_SERVER_LOST
--error 2013

COMMIT;

--source include/start_mysqld.inc

CHECK TABLE t1;

SELECT * FROM t1;


UPDATE t1 SET b = 10;

START TRANSACTION;

UPDATE t1 SET c1 = 11;

# Server will crash on next commit
--source include/expect_crash.inc
SET SESSION DEBUG="+d,crash_commit_after";
--echo CR_SERVER_LOST
--error 2013

COMMIT;

--source include/start_mysqld.inc

CHECK TABLE t1;

SELECT * FROM t1;


UPDATE t1 SET c1 = 11;

START TRANSACTION;

DELETE FROM t1 WHERE a > 0;

# Server will crash on next commit
--source include/expect_crash.inc
SET SESSION DEBUG="+d,crash_commit_after";
--echo CR_SERVER_LOST
--error 2013

COMMIT;

--source include/start_mysqld.inc

CHECK TABLE t1;

SELECT * FROM t1;


DELETE FROM t1 WHERE a > 0;

SELECT * FROM t1;


CHECK TABLE t1;

DROP TABLE t1;



--eval CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, b INT) ROW_FORMAT=$row_format

INSERT INTO t1 VALUES(0, 1), (0, 2), (0, 3), (0, 4), (0, 5);


let $new_cols = 1;
let $instant_add_column = ALTER TABLE t1 ADD COLUMN c1 INT DEFAULT 10;

--source ../mysql-test/suite/innodb/include/instant_add_column_exec_and_verify.inc

START TRANSACTION;

INSERT INTO t1 VALUES(6, 6, 20), (7, 7, 20);

# Server will crash on next commit
--source include/expect_crash.inc
SET SESSION DEBUG="+d,crash_commit_before";
--echo CR_SERVER_LOST
--error 2013

COMMIT;

--source include/start_mysqld.inc

CHECK TABLE t1;

SELECT * FROM t1;

INSERT INTO t1 VALUES(6, 6, 20), (7, 7, 20);

START TRANSACTION;

UPDATE t1 SET b = 10;

# Server will crash on next commit
--source include/expect_crash.inc
SET SESSION DEBUG="+d,crash_commit_before";
--echo CR_SERVER_LOST
--error 2013

COMMIT;

--source include/start_mysqld.inc

CHECK TABLE t1;

SELECT * FROM t1;


UPDATE t1 SET b = 10;

START TRANSACTION;

UPDATE t1 SET c1 = 11;

# Server will crash on next commit
--source include/expect_crash.inc
SET SESSION DEBUG="+d,crash_commit_before";
--echo CR_SERVER_LOST
--error 2013

COMMIT;


--source include/start_mysqld.inc

CHECK TABLE t1;

SELECT * FROM t1;


UPDATE t1 SET c1 = 11;

START TRANSACTION;

DELETE FROM t1 WHERE a > 0;

# Server will crash on next commit
--source include/expect_crash.inc
SET SESSION DEBUG="+d,crash_commit_before";
--echo CR_SERVER_LOST
--error 2013

COMMIT;

--source include/start_mysqld.inc

CHECK TABLE t1;

SELECT * FROM t1;


DELETE FROM t1 WHERE a > 0;

SELECT * FROM t1;


CHECK TABLE t1;

DROP TABLE t1;
