List:Commits« Previous MessageNext Message »
From:Alfranio Correia Date:June 12 2009 12:31am
Subject:bzr commit into mysql-5.1-bugteam branch (alfranio.correia:2937)
Bug#44581
View as plain text  
#At file:///home/acorreia/workspace.sun/repository.mysql/bzrwork/bug-44581/mysql-5.1-bugteam/ based on revid:alfranio.correia@stripped

 2937 Alfranio Correia	2009-06-12
      BUG#44581  Slave stops when transaction with non-transactional table gets lock wait timeout
      
      Test case.

    added:
      mysql-test/suite/rpl/r/rpl_bug44581.result
      mysql-test/suite/rpl/t/rpl_bug44581-master.opt
      mysql-test/suite/rpl/t/rpl_bug44581.test
=== added file 'mysql-test/suite/rpl/r/rpl_bug44581.result'
--- a/mysql-test/suite/rpl/r/rpl_bug44581.result	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/rpl/r/rpl_bug44581.result	2009-06-12 00:30:21 +0000
@@ -0,0 +1,38 @@
+stop slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+reset master;
+reset slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+start slave;
+#
+# Environment
+#
+CREATE TABLE t (i INT, PRIMARY KEY(i), f CHAR(8)) engine = Innodb;
+CREATE TABLE l (d DATETIME, f CHAR(32) ) engine = MyIsam;
+CREATE TRIGGER tr AFTER UPDATE ON t FOR EACH ROW 
+BEGIN 
+INSERT INTO l VALUES ( now(), concat( 'updated t: ', old.f, ' -> ', new.f ) ); 
+END |
+BEGIN;
+INSERT INTO t VALUES (4,'black'), (2,'red'), (3,'yelow'), (1,'cyan');
+COMMIT;
+#
+# Test
+#
+BEGIN;
+UPDATE t SET f = 'yellow' WHERE i = 3;
+BEGIN;
+UPDATE t SET f = 'magenta' WHERE f = 'red';
+ERROR HY000: Lock wait timeout exceeded; try restarting transaction
+COMMIT;
+ROLLBACK;
+Warnings:
+Warning	1196	Some non-transactional changed tables couldn't be rolled back
+source include/diff_master_slave.inc;
+source include/diff_master_slave.inc;
+#
+# Cleanup
+#
+DROP TRIGGER tr;
+DROP TABLE t;
+DROP TABLE l;

=== added file 'mysql-test/suite/rpl/t/rpl_bug44581-master.opt'
--- a/mysql-test/suite/rpl/t/rpl_bug44581-master.opt	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/rpl/t/rpl_bug44581-master.opt	2009-06-12 00:30:21 +0000
@@ -0,0 +1 @@
+--innodb-lock-wait-timeout=1

=== added file 'mysql-test/suite/rpl/t/rpl_bug44581.test'
--- a/mysql-test/suite/rpl/t/rpl_bug44581.test	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/rpl/t/rpl_bug44581.test	2009-06-12 00:30:21 +0000
@@ -0,0 +1,71 @@
+--source include/master-slave.inc
+--source include/have_innodb.inc
+--source include/have_binlog_format_statement.inc
+
+--echo #
+--echo # Environment
+--echo #
+
+connection master;
+
+CREATE TABLE t (i INT, PRIMARY KEY(i), f CHAR(8)) engine = Innodb;
+CREATE TABLE l (d DATETIME, f CHAR(32) ) engine = MyIsam;
+
+DELIMITER |;
+CREATE TRIGGER tr AFTER UPDATE ON t FOR EACH ROW 
+BEGIN 
+  INSERT INTO l VALUES ( now(), concat( 'updated t: ', old.f, ' -> ', new.f ) ); 
+END |
+DELIMITER ;|
+
+BEGIN;
+INSERT INTO t VALUES (4,'black'), (2,'red'), (3,'yelow'), (1,'cyan');
+COMMIT;
+
+connect (conn1, 127.0.0.1,root,,);
+connect (conn2, 127.0.0.1,root,,);
+
+--echo #
+--echo # Test
+--echo #
+
+connection conn1;
+BEGIN;
+UPDATE t SET f = 'yellow' WHERE i = 3;
+
+connection conn2;
+BEGIN;
+--error ER_LOCK_WAIT_TIMEOUT
+UPDATE t SET f = 'magenta' WHERE f = 'red';
+
+connection conn1;
+COMMIT;
+
+connection conn2;
+ROLLBACK;
+
+connection master;
+sync_slave_with_master;
+
+connection master;
+let $diff_statement= SELECT * FROM t order by i;
+source include/diff_master_slave.inc;
+
+connection master;
+let $diff_statement= SELECT * FROM l order by f;
+source include/diff_master_slave.inc;
+
+--echo #
+--echo # Cleanup
+--echo #
+
+connection master;
+DROP TRIGGER tr;
+DROP TABLE t;
+DROP TABLE l;
+
+sync_slave_with_master;
+
+connection master;
+disconnect conn1;
+disconnect conn2;


Attachment: [text/bzr-bundle]
Thread
bzr commit into mysql-5.1-bugteam branch (alfranio.correia:2937)Bug#44581Alfranio Correia12 Jun