summaryrefslogtreecommitdiffstats
path: root/mysql-test/suite/innodb/t/innodb_bug38231.test
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test/suite/innodb/t/innodb_bug38231.test')
-rw-r--r--mysql-test/suite/innodb/t/innodb_bug38231.test76
1 files changed, 76 insertions, 0 deletions
diff --git a/mysql-test/suite/innodb/t/innodb_bug38231.test b/mysql-test/suite/innodb/t/innodb_bug38231.test
new file mode 100644
index 00000000..0c139c33
--- /dev/null
+++ b/mysql-test/suite/innodb/t/innodb_bug38231.test
@@ -0,0 +1,76 @@
+--source include/have_innodb.inc
+#
+# Bug#38231 Innodb crash in lock_reset_all_on_table() on TRUNCATE + LOCK / UNLOCK
+# http://bugs.mysql.com/38231
+#
+
+# skip this test in embedded mode because "TRUNCATE TABLE bug38231_1"
+# hangs in that mode waiting for "lock_wait_timeout" although it is
+# preceded by --send
+-- source include/not_embedded.inc
+
+SET default_storage_engine=InnoDB;
+
+# we care only that the following SQL commands do not crash the server
+-- disable_query_log
+-- disable_result_log
+
+DROP TABLE IF EXISTS bug38231_1;
+CREATE TABLE bug38231_1 (a INT);
+
+-- connect (lock_gain,localhost,root,,)
+-- connect (lock_wait1,localhost,root,,)
+-- connect (lock_wait2,localhost,root,,)
+-- connect (truncate_wait,localhost,root,,)
+
+-- connection lock_gain
+SET autocommit=0;
+LOCK TABLE bug38231_1 WRITE;
+
+-- connection lock_wait1
+SET autocommit=0;
+-- send
+LOCK TABLE bug38231_1 WRITE;
+
+-- connection lock_wait2
+SET autocommit=0;
+-- send
+LOCK TABLE bug38231_1 WRITE;
+
+-- connection truncate_wait
+-- send
+TRUNCATE TABLE bug38231_1;
+
+-- connection lock_gain
+# this crashes the server if the bug is present
+UNLOCK TABLES;
+
+# clean up
+
+# do not clean up - we do not know which of the three has been released
+# so the --reap command may hang because the command that is being executed
+# in that connection is still running/waiting
+#-- connection lock_wait1
+#-- reap
+#UNLOCK TABLES;
+#
+#-- connection lock_wait2
+#-- reap
+#UNLOCK TABLES;
+#
+#-- connection truncate_wait
+#-- reap
+
+-- connection default
+
+-- disconnect lock_gain
+-- disconnect lock_wait1
+-- disconnect lock_wait2
+-- disconnect truncate_wait
+
+DROP TABLE bug38231_1;
+
+-- enable_query_log
+-- enable_result_log
+
+-- connection default