diff options
Diffstat (limited to 'mysql-test/t/innodb_mysql_lock.test')
-rw-r--r-- | mysql-test/t/innodb_mysql_lock.test | 75 |
1 files changed, 1 insertions, 74 deletions
diff --git a/mysql-test/t/innodb_mysql_lock.test b/mysql-test/t/innodb_mysql_lock.test index b3c52a1b1cf..39ea7e5df88 100644 --- a/mysql-test/t/innodb_mysql_lock.test +++ b/mysql-test/t/innodb_mysql_lock.test @@ -19,24 +19,20 @@ connect (con1,localhost,root,,); connect (con2,localhost,root,,); connect (con3,localhost,root,,); ---echo # Connection 1 connection con1; set @@autocommit=0; CREATE TABLE t1(s1 INT UNIQUE) ENGINE=innodb; INSERT INTO t1 VALUES (1); ---echo # Connection 2 connection con2; set @@autocommit=0; INSERT INTO t1 VALUES (2); --send INSERT INTO t1 VALUES (1) ---echo # Connection 3 connection con3; set @@autocommit=0; --send DROP TABLE t1 ---echo # Connection 1 connection con1; let $wait_condition= SELECT COUNT(*) = 1 FROM information_schema.processlist @@ -68,6 +64,7 @@ set @@autocommit=1; connection default; disconnect con1; +disconnect con2; disconnect con3; @@ -85,7 +82,6 @@ begin; update t1 set c3=c3+1 where c2=3; --echo # ---echo # Switching to connection 'con37346'. connect (con37346,localhost,root,,test,,); connection con37346; --echo # The below ALTER TABLE statement should wait till transaction @@ -95,7 +91,6 @@ connection con37346; --send alter table t1 add column c4 int; --echo # ---echo # Switching to connection 'default'. connection default; --echo # Wait until the above ALTER TABLE gets blocked because this --echo # connection holds SW metadata lock on table to be altered. @@ -113,69 +108,15 @@ update t1 set c3=c3+1 where c2=4; commit; --echo # ---echo # Switching to connection 'con37346'. connection con37346; --echo # Reaping ALTER TABLE. --reap --echo # ---echo # Switching to connection 'default'. connection default; disconnect con37346; drop table t1; - ---echo # ---echo # Bug #42147 Concurrent DML and LOCK TABLE ... READ for InnoDB ---echo # table cause warnings in errlog ---echo # - ---echo # ---echo # Note that this test for now relies on a global suppression of ---echo # the warning "Found lock of type 6 that is write and read locked" ---echo # This suppression rule can be removed once Bug#42147 is properly ---echo # fixed. See bug page for more info. ---echo # - ---disable_warnings -DROP TABLE IF EXISTS t1; ---enable_warnings - -CREATE TABLE t1 (i INT) engine= innodb; - ---echo # Connection 2 ---echo # Get user-level lock -connection con2; -SELECT get_lock('bug42147_lock', 60); - ---echo # Connection 1 -connection default; ---send INSERT INTO t1 SELECT get_lock('bug42147_lock', 60) - ---echo # Connection 2 -connection con2; -let $wait_condition= - SELECT COUNT(*) > 0 FROM information_schema.processlist - WHERE state = 'User lock' - AND info = 'INSERT INTO t1 SELECT get_lock(\'bug42147_lock\', 60)'; ---source include/wait_condition.inc -LOCK TABLES t1 READ; -SELECT release_lock('bug42147_lock'); - ---echo # Connection 1 -connection default; ---reap - ---echo # Connection 2 -connection con2; -UNLOCK TABLES; - ---echo # Connection 1 -connection default; -disconnect con2; -DROP TABLE t1; - - --echo # --echo # Bug#53798 OPTIMIZE TABLE breaks repeatable read --echo # @@ -187,18 +128,15 @@ DROP TABLE IF EXISTS t1; CREATE TABLE t1 (a INT) engine=innodb; INSERT INTO t1 VALUES (1), (2), (3); ---echo # Connection con1 connect (con1, localhost, root); START TRANSACTION WITH CONSISTENT SNAPSHOT; SELECT * FROM t1; ---echo # Connection default connection default; --echo # This should block --echo # Sending: --send OPTIMIZE TABLE t1 ---echo # Connection con1 connection con1; let $wait_condition=SELECT COUNT(*)=1 FROM information_schema.processlist WHERE state='Waiting for table metadata lock' AND info='OPTIMIZE TABLE t1'; @@ -206,7 +144,6 @@ let $wait_condition=SELECT COUNT(*)=1 FROM information_schema.processlist SELECT * FROM t1; COMMIT; ---echo # Connection default connection default; --echo # Reaping OPTIMIZE TABLE t1 --reap @@ -230,18 +167,15 @@ CREATE VIEW v1 AS SELECT 1 FROM t1; connect (con2, localhost, root); connect (con3, localhost, root); ---echo # Connection con3 connection con3; LOCK TABLE t1 WRITE; ---echo # Connection default connection default; START TRANSACTION; # This should block due to t1 being locked. --echo # Sending: --send SELECT * FROM v1 ---echo # Connection con2 connection con2; --echo # Waiting for 'SELECT * FROM v1' to sync in. let $wait_condition= @@ -252,7 +186,6 @@ let $wait_condition= --echo # Sending: --send ALTER VIEW v1 AS SELECT 2 FROM t2 ---echo # Connection con3 connection con3; --echo # Waiting for 'ALTER VIEW v1 AS SELECT 2 FROM t2' to sync in. let $wait_condition= @@ -263,19 +196,16 @@ let $wait_condition= # Unlock t1 allowing SELECT * FROM v1 to proceed. UNLOCK TABLES; ---echo # Connection default; connection default; --echo # Reaping: SELECT * FROM v1 --reap SELECT * FROM v1; COMMIT; ---echo # Connection con2 connection con2; --echo # Reaping: ALTER VIEW v1 AS SELECT 2 FROM t2 --reap ---echo # Connection default connection default; DROP TABLE t1, t2; DROP VIEW v1; @@ -294,14 +224,12 @@ DROP TABLE IF EXISTS t1; --connect (con1,localhost,root) ---echo # Connection default connection default; CREATE TABLE t1 (id INT PRIMARY KEY, value INT) ENGINE = InnoDB; INSERT INTO t1 VALUES (1, 12345); START TRANSACTION; SELECT * FROM t1; ---echo # Connection con1 --connection con1 SET lock_wait_timeout=1; # Test with two timeouts, as the first version of this patch @@ -311,7 +239,6 @@ ALTER TABLE t1 ADD INDEX idx(value); --error ER_LOCK_WAIT_TIMEOUT ALTER TABLE t1 ADD INDEX idx(value); ---echo # Connection default --connection default SELECT * FROM t1; COMMIT; |