MINI MINI MANI MO
--echo #
--echo # BUG#19316315 CRASH RECOVERY FAILS AFTER ONLINE ADD INDEX
--echo #
--source include/have_innodb.inc
--source include/not_embedded.inc
--source include/have_debug_sync.inc
CREATE TABLE t1 (c1 INT PRIMARY KEY, c2 INT) ENGINE=InnoDB;
INSERT INTO t1 VALUES (1,1), (2,2), (3,3), (4,4), (5,5);
connect (con1,localhost,root,,);
SET DEBUG_SYNC = 'RESET';
SET DEBUG_SYNC = 'row_log_apply_after SIGNAL apply_after WAIT_FOR insert_after';
--send
ALTER TABLE t1 ADD UNIQUE INDEX(c2);
connection default;
SET DEBUG_SYNC = 'now WAIT_FOR apply_after';
INSERT INTO t1 VALUES(6, 6);
disconnect con1;
--source include/kill_and_restart_mysqld.inc
SELECT * FROM t1;
DROP TABLE t1;
# Clean up temporary files left by crash.
let MYSQLD_DATADIR= `SELECT @@datadir`;
--remove_files_wildcard $MYSQLD_DATADIR/test #sql*.frm
#
## Bug #26654685 INDEX->ID == BTR_PAGE_GET_INDEX_ID(PAGE)
## AT BTR_CUR_SEARCH_TO_NTH_LEVEL IN BTR/B
#
--source include/have_debug.inc
--source include/have_debug_sync.inc
--source include/count_sessions.inc
--source include/have_innodb_max_16k.inc
CREATE TABLE parent (a INT PRIMARY KEY, b INT NOT NULL) ENGINE = InnoDB;
INSERT INTO parent VALUES(1,2),(2,2);
CREATE TABLE child (a INT PRIMARY KEY, b INT NOT NULL) ENGINE = InnoDB;
INSERT INTO child VALUES (10, 2);
# This should rollback due to dup key
SET DEBUG_SYNC = 'innodb_inplace_alter_table_enter SIGNAL start_create
WAIT_FOR go_ahead';
--send CREATE UNIQUE INDEX idx ON parent(b);
# Make table ref_count > 1
connect (con1,localhost,root,,);
connection con1;
SET DEBUG_SYNC = 'now WAIT_FOR start_create';
INSERT INTO parent VALUES(4, 2);
SET DEBUG_SYNC = 'now SIGNAL go_ahead';
connection default;
--error ER_DUP_ENTRY
reap;
SET DEBUG_SYNC = 'now SIGNAL conn_add_fk';
connection con1;
SET DEBUG_SYNC = 'now WAIT_FOR conn_add_fk';
--error ER_CANNOT_ADD_FOREIGN
ALTER TABLE child ADD CONSTRAINT cfx FOREIGN KEY (b) REFERENCES parent(b);
--connection default
DROP TABLE child;
DROP TABLE parent;
--disconnect con1
OHA YOOOO