1--source include/have_rocksdb.inc 2 3--enable_connect_log 4 5# Save the initial number of concurrent sessions 6--source include/count_sessions.inc 7 8--disable_warnings 9DROP TABLE IF EXISTS t1; 10--enable_warnings 11 12connect (con1,localhost,root,,); 13connect (con2,localhost,root,,); 14 15#1. Using all primary key columns, with equal conditions 16connection con1; 17CREATE TABLE t (id1 int, id2 int, id3 int, value int, PRIMARY KEY (id1, id2, id3)) ENGINE=RocksDB; 18 19#1.1 SELECT FOR UPDATE 20SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ; 21BEGIN; 22SELECT * FROM t WHERE id1=1 AND id2=1 AND id3=1 FOR UPDATE; 23 24connection con2; 25SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ; 26BEGIN; 27--error ER_LOCK_WAIT_TIMEOUT 28SELECT * FROM t WHERE id1=1 AND id2=1 AND id3=1 FOR UPDATE; 29SELECT * FROM t WHERE id1=1 AND id2=1 AND id3=2 FOR UPDATE; 30 31#1.2 UPDATE 32connection con1; 33ROLLBACK; 34BEGIN; 35UPDATE t SET value=value+100 WHERE id1=1 AND id2=1 AND id3=1; 36 37connection con2; 38ROLLBACK; 39BEGIN; 40--error ER_LOCK_WAIT_TIMEOUT 41UPDATE t SET value=value+100 WHERE id1=1 AND id2=1 AND id3=1; 42UPDATE t SET value=value+100 WHERE id1=1 AND id2=0 AND id3=1; 43 44#1.3 DELETE 45connection con1; 46ROLLBACK; 47BEGIN; 48DELETE FROM t WHERE id1=1 AND id2=1 AND id3=1; 49 50connection con2; 51ROLLBACK; 52BEGIN; 53--error ER_LOCK_WAIT_TIMEOUT 54DELETE FROM t WHERE id1=1 AND id2=1 AND id3=1; 55DELETE FROM t WHERE id1=1 AND id2=1 AND id3=0; 56 57--disable_parsing 58# 59# The following is commented out because RocksDB's Transaction API doesn't 60# "support" READ COMMITTED, in particular, it doesn't release row locks 61# after each statement. (MyRocks is able to request a new snapshot for 62# every statement, but this won't free the locks. TODO: Is the behavior 63# that is tested below really needed?) 64# 65connection con1; 66ROLLBACK; 67SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; 68BEGIN; 69SELECT * FROM t WHERE id1=1 AND id2=1 AND id3=1 FOR UPDATE; 70 71connection con2; 72ROLLBACK; 73SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; 74BEGIN; 75SELECT * FROM t WHERE id1=1 AND id2=1 AND id3=1 FOR UPDATE; 76SELECT * FROM t WHERE id1=1 AND id2=1 AND id3=2 FOR UPDATE; 77 78connection con1; 79ROLLBACK; 80BEGIN; 81UPDATE t SET value=value+100 WHERE id1=1 AND id2=1 AND id3=1; 82 83connection con2; 84ROLLBACK; 85BEGIN; 86UPDATE t SET value=value+100 WHERE id1=1 AND id2=1 AND id3=1; 87UPDATE t SET value=value+100 WHERE id1=1 AND id2=0 AND id3=1; 88 89connection con1; 90ROLLBACK; 91BEGIN; 92DELETE FROM t WHERE id1=1 AND id2=1 AND id3=1; 93 94connection con2; 95ROLLBACK; 96BEGIN; 97DELETE FROM t WHERE id1=1 AND id2=1 AND id3=1; 98DELETE FROM t WHERE id1=1 AND id2=1 AND id3=0; 99 100connection con1; 101ROLLBACK; 102connection con2; 103ROLLBACK; 104 105--enable_parsing 106connection default; 107disconnect con1; 108disconnect con2; 109 110DROP TABLE t; 111