112 lines
2.7 KiB
Plaintext
112 lines
2.7 KiB
Plaintext
--source suite/xengine/include/have_xengine.inc
|
|
|
|
--enable_connect_log
|
|
|
|
# Save the initial number of concurrent sessions
|
|
--source include/count_sessions.inc
|
|
|
|
--disable_warnings
|
|
DROP TABLE IF EXISTS t1;
|
|
--enable_warnings
|
|
|
|
connect (con1,localhost,root,,);
|
|
connect (con2,localhost,root,,);
|
|
|
|
#1. Using all primary key columns, with equal conditions
|
|
connection con1;
|
|
CREATE TABLE t (id1 int, id2 int, id3 int, value int, PRIMARY KEY (id1, id2, id3)) ENGINE=XEngine;
|
|
|
|
#1.1 SELECT FOR UPDATE
|
|
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
|
BEGIN;
|
|
SELECT * FROM t WHERE id1=1 AND id2=1 AND id3=1 FOR UPDATE;
|
|
|
|
connection con2;
|
|
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
|
|
BEGIN;
|
|
--error ER_LOCK_WAIT_TIMEOUT
|
|
SELECT * FROM t WHERE id1=1 AND id2=1 AND id3=1 FOR UPDATE;
|
|
SELECT * FROM t WHERE id1=1 AND id2=1 AND id3=2 FOR UPDATE;
|
|
|
|
#1.2 UPDATE
|
|
connection con1;
|
|
ROLLBACK;
|
|
BEGIN;
|
|
UPDATE t SET value=value+100 WHERE id1=1 AND id2=1 AND id3=1;
|
|
|
|
connection con2;
|
|
ROLLBACK;
|
|
BEGIN;
|
|
--error ER_LOCK_WAIT_TIMEOUT
|
|
UPDATE t SET value=value+100 WHERE id1=1 AND id2=1 AND id3=1;
|
|
UPDATE t SET value=value+100 WHERE id1=1 AND id2=0 AND id3=1;
|
|
|
|
#1.3 DELETE
|
|
connection con1;
|
|
ROLLBACK;
|
|
BEGIN;
|
|
DELETE FROM t WHERE id1=1 AND id2=1 AND id3=1;
|
|
|
|
connection con2;
|
|
ROLLBACK;
|
|
BEGIN;
|
|
--error ER_LOCK_WAIT_TIMEOUT
|
|
DELETE FROM t WHERE id1=1 AND id2=1 AND id3=1;
|
|
DELETE FROM t WHERE id1=1 AND id2=1 AND id3=0;
|
|
|
|
--disable_testcase BUG#0
|
|
#
|
|
# The following is commented out because XEngine's Transaction API doesn't
|
|
# "support" READ COMMITED, in particular, it doesn't release row locks
|
|
# after each statement. (MyX is able to request a new snapshot for
|
|
# every statement, but this won't free the locks. TODO: Is the behavior
|
|
# that is tested below really needed?)
|
|
#
|
|
connection con1;
|
|
ROLLBACK;
|
|
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
|
BEGIN;
|
|
SELECT * FROM t WHERE id1=1 AND id2=1 AND id3=1 FOR UPDATE;
|
|
|
|
connection con2;
|
|
ROLLBACK;
|
|
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
|
BEGIN;
|
|
SELECT * FROM t WHERE id1=1 AND id2=1 AND id3=1 FOR UPDATE;
|
|
SELECT * FROM t WHERE id1=1 AND id2=1 AND id3=2 FOR UPDATE;
|
|
|
|
connection con1;
|
|
ROLLBACK;
|
|
BEGIN;
|
|
UPDATE t SET value=value+100 WHERE id1=1 AND id2=1 AND id3=1;
|
|
|
|
connection con2;
|
|
ROLLBACK;
|
|
BEGIN;
|
|
UPDATE t SET value=value+100 WHERE id1=1 AND id2=1 AND id3=1;
|
|
UPDATE t SET value=value+100 WHERE id1=1 AND id2=0 AND id3=1;
|
|
|
|
connection con1;
|
|
ROLLBACK;
|
|
BEGIN;
|
|
DELETE FROM t WHERE id1=1 AND id2=1 AND id3=1;
|
|
|
|
connection con2;
|
|
ROLLBACK;
|
|
BEGIN;
|
|
DELETE FROM t WHERE id1=1 AND id2=1 AND id3=1;
|
|
DELETE FROM t WHERE id1=1 AND id2=1 AND id3=0;
|
|
|
|
connection con1;
|
|
ROLLBACK;
|
|
connection con2;
|
|
ROLLBACK;
|
|
|
|
--enable_testcase
|
|
connection default;
|
|
disconnect con1;
|
|
disconnect con2;
|
|
|
|
DROP TABLE t;
|
|
--source suite/xengine/include/check_xengine_log_error.inc
|