From 356597c0fafa6472cd6e97ac550d49b8e07b97ec Mon Sep 17 00:00:00 2001 From: Konstantin Osipov Date: Tue, 8 Dec 2009 10:39:49 +0300 Subject: [PATCH] Backport of: ------------------------------------------------------------ revno: 2617.31.7 committer: Davi Arnaut branch nick: mysql-6.0-runtime timestamp: Wed 2009-03-25 19:22:00 -0300 message: WL#4284: Transactional DDL locking Post-merge fixes for test cases. mysql-test/include/mix1.inc: Ignore deadlock errors due to the table being altered. mysql-test/r/innodb_mysql.result: Update test case result (WL$4284). mysql-test/suite/parts/r/partition_special_innodb.result: The INSERT and SELECT are not necessary to reproduce the problem as the assertion happens when the table is being altered. Furthermore, the INSERT and SELECT will yield a deadlock error as after the alter the table version is set to zero, which means that any metadata locks on the table must be relinquished, but this won't happen voluntarily in a multi-statement transaction (metadata locks are released on commit or rollback). Reported as Bug#43867. mysql-test/suite/parts/t/partition_special_innodb.test: The INSERT and SELECT are not necessary to reproduce the problem as the assertion happens when the table is being altered. Furthermore, the INSERT and SELECT will yield a deadlock error as after the alter the table version is set to zero, which means that any metadata locks on the table must be relinquished, but this won't happen voluntarily in a multi-statement transaction (metadata locks are released on commit or rollback). Reported as Bug#43867. --- mysql-test/include/mix1.inc | 2 ++ mysql-test/r/innodb_mysql.result | 2 ++ mysql-test/suite/parts/r/partition_special_innodb.result | 5 ----- mysql-test/suite/parts/t/partition_special_innodb.test | 3 --- 4 files changed, 4 insertions(+), 8 deletions(-) diff --git a/mysql-test/include/mix1.inc b/mysql-test/include/mix1.inc index 3eaaf37cd83..66648aaf1bf 100644 --- a/mysql-test/include/mix1.inc +++ b/mysql-test/include/mix1.inc @@ -899,6 +899,8 @@ CREATE PROCEDURE p1 () BEGIN DECLARE i INT DEFAULT 50; DECLARE cnt INT; + # Continue even in the presence of ER_LOCK_DEADLOCK. + DECLARE CONTINUE HANDLER FOR 1213 BEGIN END; START TRANSACTION; ALTER TABLE t1 ENGINE=InnoDB; COMMIT; diff --git a/mysql-test/r/innodb_mysql.result b/mysql-test/r/innodb_mysql.result index 0fe704c13f6..54ca46a098b 100644 --- a/mysql-test/r/innodb_mysql.result +++ b/mysql-test/r/innodb_mysql.result @@ -1105,6 +1105,8 @@ CREATE PROCEDURE p1 () BEGIN DECLARE i INT DEFAULT 50; DECLARE cnt INT; +# Continue even in the presence of ER_LOCK_DEADLOCK. +DECLARE CONTINUE HANDLER FOR 1213 BEGIN END; START TRANSACTION; ALTER TABLE t1 ENGINE=InnoDB; COMMIT; diff --git a/mysql-test/suite/parts/r/partition_special_innodb.result b/mysql-test/suite/parts/r/partition_special_innodb.result index 26c1ac9356c..3c64c5c3ca4 100644 --- a/mysql-test/suite/parts/r/partition_special_innodb.result +++ b/mysql-test/suite/parts/r/partition_special_innodb.result @@ -214,9 +214,4 @@ INSERT INTO t1 VALUES (NULL, 'first row t2'); SET autocommit=OFF; ALTER TABLE t1 AUTO_INCREMENT = 10; ERROR HY000: Lock wait timeout exceeded; try restarting transaction -INSERT INTO t1 VALUES (NULL, 'second row t2'); -SELECT a,b FROM t1 ORDER BY a; -a b -1 first row t2 -2 second row t2 DROP TABLE t1; diff --git a/mysql-test/suite/parts/t/partition_special_innodb.test b/mysql-test/suite/parts/t/partition_special_innodb.test index eac19f6d588..7583f953b32 100644 --- a/mysql-test/suite/parts/t/partition_special_innodb.test +++ b/mysql-test/suite/parts/t/partition_special_innodb.test @@ -71,9 +71,6 @@ SET autocommit=OFF; --error ER_LOCK_WAIT_TIMEOUT ALTER TABLE t1 AUTO_INCREMENT = 10; ---connection con1 -INSERT INTO t1 VALUES (NULL, 'second row t2'); -SELECT a,b FROM t1 ORDER BY a; --disconnect con2 --disconnect con1 --connection default