summaryrefslogtreecommitdiff
path: root/mysql-test/suite/innodb/t/innodb-index-online-delete.test
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test/suite/innodb/t/innodb-index-online-delete.test')
-rw-r--r--mysql-test/suite/innodb/t/innodb-index-online-delete.test36
1 files changed, 36 insertions, 0 deletions
diff --git a/mysql-test/suite/innodb/t/innodb-index-online-delete.test b/mysql-test/suite/innodb/t/innodb-index-online-delete.test
new file mode 100644
index 00000000000..ec5f93731ed
--- /dev/null
+++ b/mysql-test/suite/innodb/t/innodb-index-online-delete.test
@@ -0,0 +1,36 @@
+--source include/have_innodb.inc
+--source include/have_debug_sync.inc
+
+# Save the initial number of concurrent sessions.
+--source include/count_sessions.inc
+
+connect (con1,localhost,root,,);
+
+connection default;
+
+CREATE TABLE t (a INT PRIMARY KEY, b INT NOT NULL) ENGINE=InnoDB;
+INSERT INTO t VALUES(1,2),(2,3);
+
+SET DEBUG_SYNC='alter_table_inplace_after_lock_downgrade SIGNAL do WAIT_FOR m';
+SET DEBUG_SYNC='innodb_after_inplace_alter_table SIGNAL scanned WAIT_FOR done';
+--send
+CREATE INDEX tb ON t(b);
+
+connection con1;
+SET DEBUG_SYNC='now WAIT_FOR do';
+SET DEBUG_SYNC='row_update_for_mysql_error SIGNAL m WAIT_FOR scanned';
+--error ER_DUP_ENTRY
+UPDATE t SET a=2 WHERE a=1;
+call mtr.add_suppression('InnoDB: record in index .*tb was not found on rollback, trying to insert');
+SET DEBUG_SYNC='now SIGNAL done';
+
+disconnect con1;
+
+connection default;
+reap;
+SET DEBUG_SYNC='RESET';
+DROP TABLE t;
+
+# Check that all connections opened by test cases in this file are really
+# gone so execution of other tests won't be affected by their presence.
+--source include/wait_until_count_sessions.inc