diff options
Diffstat (limited to 'mysql-test/main/flush_read_lock_kill.result')
-rw-r--r-- | mysql-test/main/flush_read_lock_kill.result | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/mysql-test/main/flush_read_lock_kill.result b/mysql-test/main/flush_read_lock_kill.result new file mode 100644 index 00000000..05836b04 --- /dev/null +++ b/mysql-test/main/flush_read_lock_kill.result @@ -0,0 +1,42 @@ +connect con1,localhost,root,,; +connect con2,localhost,root,,; +connection con1; +DROP TABLE IF EXISTS t1; +SET DEBUG_SYNC= 'RESET'; +CREATE TABLE t1 (kill_id INT) engine = InnoDB; +INSERT INTO t1 VALUES(connection_id()); +connection default; +# Start transaction. +BEGIN; +INSERT INTO t1 VALUES(connection_id()); +# Ensure that COMMIT will pause once it acquires protection +# against its global read lock. +SET DEBUG_SYNC='ha_commit_trans_after_acquire_commit_lock SIGNAL acquired WAIT_FOR go'; +# Sending: +COMMIT; +connection con1; +# Wait till COMMIT acquires protection against global read +# lock and pauses. +SET DEBUG_SYNC='now WAIT_FOR acquired'; +# Sending: +FLUSH TABLES WITH READ LOCK; +connection con2; +SELECT ((@id := kill_id) - kill_id) FROM t1 LIMIT 1; +((@id := kill_id) - kill_id) +0 +# Wait till FLUSH TABLES WITH READ LOCK blocks due +# to active COMMIT +# Kill connection 'con1'. +KILL CONNECTION @id; +connection con1; +# Try to reap FLUSH TABLES WITH READ LOCK, +# it fail due to killed statement and connection. +Got one of the listed errors +connection con2; +# Resume COMMIT. +SET DEBUG_SYNC='now SIGNAL go'; +connection default; +# Reaping COMMIT. +disconnect con2; +DROP TABLE t1; +SET DEBUG_SYNC= 'RESET'; |