102 lines
2.7 KiB
Plaintext
102 lines
2.7 KiB
Plaintext
--source include/have_debug.inc
|
|
--source include/have_debug_sync.inc
|
|
--source include/have_innodb_max_16k.inc
|
|
|
|
--enable_connect_log
|
|
|
|
--echo #
|
|
--echo # Test for bug #26654685 "INDEX->ID == BTR_PAGE_GET_INDEX_ID(PAGE) AT
|
|
--echo # BTR_CUR_SEARCH_TO_NTH_LEVEL IN BTR/B".
|
|
--echo #
|
|
|
|
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_FK_NO_INDEX_PARENT
|
|
ALTER TABLE child ADD CONSTRAINT cfx FOREIGN KEY (b) REFERENCES parent(b);
|
|
|
|
|
|
SET DEBUG_SYNC = 'RESET';
|
|
|
|
connection default;
|
|
DROP TABLE child;
|
|
DROP TABLE parent;
|
|
|
|
connection con1;
|
|
disconnect con1;
|
|
--source include/wait_until_disconnected.inc
|
|
connection default;
|
|
|
|
--echo #
|
|
--echo # Test case for bug#26655360 "ASSERTION FAILURE: DICT0DICT.CC:2045
|
|
--echo # :TABLE->N_REC_LOCKS == 0".
|
|
|
|
CREATE TABLE parent (a INT PRIMARY KEY, b INT NOT NULL) ENGINE = InnoDB;
|
|
CREATE INDEX idx on parent(b);
|
|
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, 3);
|
|
|
|
SET DEBUG_SYNC = "innodb_ddl_log_before_enter SIGNAL start_create WAIT_FOR go_ahead";
|
|
--send ALTER TABLE child ADD CONSTRAINT idx17 FOREIGN KEY (b) REFERENCES parent(a)
|
|
|
|
--echo # Make table lock _count > 1
|
|
connect (con1,localhost,root,,);
|
|
connection con1;
|
|
SET DEBUG_SYNC = 'now WAIT_FOR start_create';
|
|
START TRANSACTION;
|
|
--send DELETE FROM parent WHERE a=1;
|
|
|
|
connect (con2,localhost,root,,);
|
|
--echo # Wait until DELETE is blocked due to MDL on the parent.
|
|
let $wait_condition=
|
|
SELECT COUNT(*) = 1 FROM information_schema.processlist
|
|
WHERE state = "Waiting for table metadata lock" AND
|
|
info LIKE "DELETE FROM parent %";
|
|
--source include/wait_condition.inc
|
|
|
|
SET DEBUG_SYNC = 'now SIGNAL go_ahead';
|
|
|
|
disconnect con2;
|
|
--source include/wait_until_disconnected.inc
|
|
|
|
connection default;
|
|
--replace_regex /#sql.*$/#sql-xxxxx/
|
|
--error ER_NO_REFERENCED_ROW_2
|
|
reap;
|
|
|
|
connection con1;
|
|
reap;
|
|
COMMIT;
|
|
|
|
disconnect con1;
|
|
--source include/wait_until_disconnected.inc
|
|
connection default;
|
|
|
|
SET DEBUG_SYNC = 'RESET';
|
|
DROP TABLE child;
|
|
DROP TABLE parent;
|
|
|
|
--disable_connect_log
|