summaryrefslogtreecommitdiff
path: root/mysql-test
diff options
context:
space:
mode:
authorTatiana A. Nurnberg <azundris@mysql.com>2009-02-23 12:53:04 +0100
committerTatiana A. Nurnberg <azundris@mysql.com>2009-02-23 12:53:04 +0100
commitc1d73f3350e7a9e4cfeb953f0d3c368ebe805979 (patch)
tree9d23ab2050be3ab5041b6fb122e70f96fbb351e0 /mysql-test
parent4a3f5b2b20f9ec9618b00ea4dd77000127841ec5 (diff)
parentcf42f6689fd52da07fd6588d2aaded1f0f39abae (diff)
downloadmariadb-git-c1d73f3350e7a9e4cfeb953f0d3c368ebe805979.tar.gz
auto-merge
Diffstat (limited to 'mysql-test')
-rw-r--r--mysql-test/r/innodb_mysql.result16
-rw-r--r--mysql-test/t/innodb_mysql-master.opt2
-rw-r--r--mysql-test/t/innodb_mysql.test51
3 files changed, 68 insertions, 1 deletions
diff --git a/mysql-test/r/innodb_mysql.result b/mysql-test/r/innodb_mysql.result
index 682cc2e82e2..78a56cddb08 100644
--- a/mysql-test/r/innodb_mysql.result
+++ b/mysql-test/r/innodb_mysql.result
@@ -1267,4 +1267,20 @@ CREATE INDEX i1 on t1 (a(3));
SELECT * FROM t1 WHERE a = 'abcde';
a
DROP TABLE t1;
+CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, b INT)
+ENGINE=InnoDB;
+INSERT INTO t1 VALUES (1,1),(2,2),(3,3);
+SET AUTOCOMMIT = 0;
+CREATE TEMPORARY TABLE t1_tmp (b INT);
+INSERT INTO t1_tmp SELECT b FROM t1 WHERE a = 3;
+INSERT INTO t1_tmp SELECT b FROM t1 WHERE a = 2;
+SET AUTOCOMMIT = 0;
+CREATE TEMPORARY TABLE t2_tmp ( a INT, new_a INT);
+INSERT INTO t2_tmp VALUES (1,51),(2,52),(3,53);
+UPDATE t1 SET a = (SELECT new_a FROM t2_tmp WHERE t2_tmp.a = t1.a) WHERE a = 1;
+UPDATE t1 SET a = (SELECT new_a FROM t2_tmp WHERE t2_tmp.a = t1.a) WHERE a = 2;
+INSERT INTO t1_tmp SELECT b FROM t1 WHERE a = 1;
+ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
+UPDATE t1 SET a = (SELECT new_a FROM t2_tmp WHERE t2_tmp.a = t1.a) WHERE a = 3;
+DROP TABLE t1;
End of 5.0 tests
diff --git a/mysql-test/t/innodb_mysql-master.opt b/mysql-test/t/innodb_mysql-master.opt
index 205c733455d..c8613e0ccd5 100644
--- a/mysql-test/t/innodb_mysql-master.opt
+++ b/mysql-test/t/innodb_mysql-master.opt
@@ -1 +1 @@
---innodb-lock-wait-timeout=2
+--innodb-lock-wait-timeout=3
diff --git a/mysql-test/t/innodb_mysql.test b/mysql-test/t/innodb_mysql.test
index b4fc425cb7c..eb23739386e 100644
--- a/mysql-test/t/innodb_mysql.test
+++ b/mysql-test/t/innodb_mysql.test
@@ -1025,4 +1025,55 @@ CREATE INDEX i1 on t1 (a(3));
SELECT * FROM t1 WHERE a = 'abcde';
DROP TABLE t1;
+#
+# Bug #42419: Server crash with "Pure virtual method called" on two
+# concurrent connections
+#
+
+connect (c1, localhost, root,,);
+connect (c2, localhost, root,,);
+
+CREATE TABLE t1 (a INT NOT NULL AUTO_INCREMENT PRIMARY KEY, b INT)
+ ENGINE=InnoDB;
+
+INSERT INTO t1 VALUES (1,1),(2,2),(3,3);
+
+connection c1;
+
+SET AUTOCOMMIT = 0;
+
+CREATE TEMPORARY TABLE t1_tmp (b INT);
+
+INSERT INTO t1_tmp SELECT b FROM t1 WHERE a = 3;
+INSERT INTO t1_tmp SELECT b FROM t1 WHERE a = 2;
+
+connection c2;
+
+SET AUTOCOMMIT = 0;
+
+CREATE TEMPORARY TABLE t2_tmp ( a INT, new_a INT);
+INSERT INTO t2_tmp VALUES (1,51),(2,52),(3,53);
+
+UPDATE t1 SET a = (SELECT new_a FROM t2_tmp WHERE t2_tmp.a = t1.a) WHERE a = 1;
+
+--send
+UPDATE t1 SET a = (SELECT new_a FROM t2_tmp WHERE t2_tmp.a = t1.a) WHERE a = 2;
+
+--sleep 3
+
+connection c1;
+
+--error ER_LOCK_DEADLOCK
+INSERT INTO t1_tmp SELECT b FROM t1 WHERE a = 1;
+
+connection c2;
+
+--reap
+UPDATE t1 SET a = (SELECT new_a FROM t2_tmp WHERE t2_tmp.a = t1.a) WHERE a = 3;
+
+connection default;
+disconnect c1;
+disconnect c2;
+DROP TABLE t1;
+
--echo End of 5.0 tests