summaryrefslogtreecommitdiff
path: root/mysql-test
diff options
context:
space:
mode:
authorVasil Dimov <vasil.dimov@oracle.com>2012-11-12 14:24:43 +0200
committerVasil Dimov <vasil.dimov@oracle.com>2012-11-12 14:24:43 +0200
commit04195c30c1ec09337930e1a7e16e5c9a8333b084 (patch)
treec039bb3692aecb1cc575bdb5bab3762f2c15a07d /mysql-test
parent51d01d751784da224d128c6f7c9a9631b3eef9a0 (diff)
downloadmariadb-git-04195c30c1ec09337930e1a7e16e5c9a8333b084.tar.gz
This is a backport of "WL#5674 InnoDB: report all deadlocks (Bug#1784)"
from MySQL 5.6 into MySQL 5.5 Will close Bug#14515889 BACKPORT OF INNODB DEADLOCK LOGGING TO 5.5 The original implementation is in vasil.dimov@oracle.com-20101213120811-k2ldtnao2t6zrxfn Approved by: Jimmy (rb:1535)
Diffstat (limited to 'mysql-test')
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_print_all_deadlocks_basic.result22
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_print_all_deadlocks_basic.test48
2 files changed, 70 insertions, 0 deletions
diff --git a/mysql-test/suite/sys_vars/r/innodb_print_all_deadlocks_basic.result b/mysql-test/suite/sys_vars/r/innodb_print_all_deadlocks_basic.result
new file mode 100644
index 00000000000..1bd078dfd7e
--- /dev/null
+++ b/mysql-test/suite/sys_vars/r/innodb_print_all_deadlocks_basic.result
@@ -0,0 +1,22 @@
+SELECT @@innodb_print_all_deadlocks;
+@@innodb_print_all_deadlocks
+0
+SET GLOBAL innodb_print_all_deadlocks=1;
+CREATE TABLE t1 (c1 INT, PRIMARY KEY (c1)) ENGINE=INNODB;
+INSERT INTO t1 VALUES (123);
+CREATE TABLE t2 (c2 INT, PRIMARY KEY (c2)) ENGINE=INNODB;
+INSERT INTO t2 VALUES (456);
+BEGIN;
+SELECT * FROM t1 FOR UPDATE;
+c1
+123
+BEGIN;
+SELECT * FROM t2 FOR UPDATE;
+c2
+456
+SELECT * FROM t2 FOR UPDATE;
+SELECT * FROM t1 FOR UPDATE;
+ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
+DROP TABLE t2;
+DROP TABLE t1;
+SET GLOBAL innodb_print_all_deadlocks=default;
diff --git a/mysql-test/suite/sys_vars/t/innodb_print_all_deadlocks_basic.test b/mysql-test/suite/sys_vars/t/innodb_print_all_deadlocks_basic.test
new file mode 100644
index 00000000000..5ad0ae485e0
--- /dev/null
+++ b/mysql-test/suite/sys_vars/t/innodb_print_all_deadlocks_basic.test
@@ -0,0 +1,48 @@
+#
+# innodb_print_all_deadlocks
+#
+
+-- source include/have_innodb.inc
+
+SELECT @@innodb_print_all_deadlocks;
+
+SET GLOBAL innodb_print_all_deadlocks=1;
+
+CREATE TABLE t1 (c1 INT, PRIMARY KEY (c1)) ENGINE=INNODB;
+INSERT INTO t1 VALUES (123);
+
+CREATE TABLE t2 (c2 INT, PRIMARY KEY (c2)) ENGINE=INNODB;
+INSERT INTO t2 VALUES (456);
+
+-- connect (con1,localhost,root,,)
+-- connect (con2,localhost,root,,)
+
+-- connection con1
+BEGIN;
+SELECT * FROM t1 FOR UPDATE;
+
+-- connection con2
+BEGIN;
+SELECT * FROM t2 FOR UPDATE;
+
+-- connection con1
+-- send
+SELECT * FROM t2 FOR UPDATE;
+
+-- connection con2
+let $wait_condition=
+SELECT COUNT(*) = 1 FROM INFORMATION_SCHEMA.PROCESSLIST
+WHERE state = 'Sending data' AND info = 'SELECT * FROM t2 FOR UPDATE';
+-- source include/wait_condition.inc
+-- error ER_LOCK_DEADLOCK
+SELECT * FROM t1 FOR UPDATE;
+
+-- connection default
+
+-- disconnect con1
+-- disconnect con2
+
+DROP TABLE t2;
+DROP TABLE t1;
+
+SET GLOBAL innodb_print_all_deadlocks=default;