--source include/have_innodb.inc
|
--source include/have_debug.inc
|
--source include/have_debug_sync.inc
|
|
CREATE TABLE t(a INT, b INT AS (a/a) VIRTUAL) ENGINE=InnoDB;
|
|
INSERT INTO t SET a=0;
|
SELECT * FROM t;
|
DELETE FROM t;
|
|
ALTER TABLE t ADD INDEX(b);
|
--error ER_DIVISION_BY_ZERO
|
INSERT INTO t SET a=0;
|
|
ALTER TABLE t DROP INDEX b;
|
|
connect (con1,localhost,root,,);
|
SET DEBUG_SYNC = 'row_log_apply_before SIGNAL scanned WAIT_FOR apply';
|
send ALTER TABLE t ADD INDEX(b);
|
|
connection default;
|
SET DEBUG_SYNC = 'now WAIT_FOR scanned';
|
INSERT INTO t SET a=0;
|
SET DEBUG_SYNC = 'now SIGNAL apply';
|
|
connection con1;
|
--echo # ERROR 1: The ALTER TABLE fails to fail!
|
#--error ER_DIVISION_BY_ZERO
|
reap;
|
connection default;
|
|
SELECT * FROM t;
|
CHECK TABLE t;
|
|
DELETE FROM t;
|
ALTER TABLE t DROP INDEX b;
|
connection con1;
|
SET DEBUG_SYNC = 'row_log_apply_after SIGNAL applied WAIT_FOR commit';
|
send ALTER TABLE t ADD INDEX(b);
|
|
connection default;
|
SET DEBUG_SYNC = 'now WAIT_FOR applied';
|
INSERT INTO t SET a=0;
|
SET DEBUG_SYNC = 'now SIGNAL commit';
|
|
connection con1;
|
--echo # ERROR 2: The ALTER TABLE fails to fail!
|
#--error ER_DIVISION_BY_ZERO
|
reap;
|
connection default;
|
|
CHECK TABLE t;
|
SELECT * FROM t;
|
SHOW CREATE TABLE t;
|
|
SET DEBUG_SYNC = RESET;
|
DROP TABLE t;
|