69 lines
1.7 KiB
Plaintext
69 lines
1.7 KiB
Plaintext
SET @dft_xengine_lock_wait_timeout = @@global.xengine_lock_wait_timeout;
|
|
SET GLOBAL xengine_lock_wait_timeout = 100;
|
|
# Save the initial number of concurrent sessions
|
|
# Establish connection con1 (user=root)
|
|
# Establish connection con2 (user=root)
|
|
# Establish connection con3 (user=root)
|
|
# Switch to connection con1
|
|
DROP TABLE IF EXISTS t1;
|
|
CREATE TABLE t1 (a INT);
|
|
BEGIN;
|
|
INSERT INTO t1 VALUES(1);
|
|
# Switch to connection con2
|
|
FLUSH TABLES WITH READ LOCK;
|
|
# Switch to connection con1
|
|
# Sending:
|
|
COMMIT;
|
|
# Switch to connection con2
|
|
# Wait until COMMIT gets blocked.
|
|
# Verify that 'con1' was blocked and data did not move.
|
|
SELECT * FROM t1;
|
|
a
|
|
UNLOCK TABLES;
|
|
# Switch to connection con1
|
|
# Reaping COMMIT
|
|
# Switch to connection con1
|
|
BEGIN;
|
|
SELECT * FROM t1 FOR UPDATE;
|
|
a
|
|
1
|
|
# Switch to connection con2
|
|
BEGIN;
|
|
SELECT * FROM t1 FOR UPDATE;
|
|
# Switch to connection con3
|
|
FLUSH TABLES WITH READ LOCK;
|
|
# Switch to connection con1
|
|
COMMIT;
|
|
# Switch to connection con2
|
|
a
|
|
1
|
|
COMMIT;
|
|
# Switch to connection con3
|
|
UNLOCK TABLES;
|
|
# Switch to connection con2
|
|
COMMIT;
|
|
# Switch to connection con1
|
|
BEGIN;
|
|
INSERT INTO t1 VALUES(10);
|
|
FLUSH TABLES WITH READ LOCK;
|
|
# Switch to connection con2
|
|
FLUSH TABLES WITH READ LOCK;
|
|
UNLOCK TABLES;
|
|
BEGIN;
|
|
SELECT * FROM t1;
|
|
a
|
|
1
|
|
10
|
|
SHOW CREATE DATABASE test;
|
|
Database Create Database
|
|
test CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */
|
|
COMMIT;
|
|
# Cleanup
|
|
# Switch to connection default and close connections con1, con2, con3
|
|
# We commit open transactions when we disconnect: only then we can
|
|
# drop the table.
|
|
DROP TABLE t1;
|
|
# End of 4.1 tests
|
|
# Wait till all disconnects are completed
|
|
SET @@global.xengine_lock_wait_timeout = @dft_xengine_lock_wait_timeout;
|