37 lines
854 B
RPMSpec
37 lines
854 B
RPMSpec
# Read-write-unique test.
|
|
|
|
setup
|
|
{
|
|
CREATE TABLE test (i integer PRIMARY KEY);
|
|
}
|
|
|
|
teardown
|
|
{
|
|
DROP TABLE test;
|
|
}
|
|
|
|
session s1
|
|
setup { BEGIN ISOLATION LEVEL SERIALIZABLE; }
|
|
step r1 { SELECT * FROM test WHERE i = 42; }
|
|
step w1 { INSERT INTO test VALUES (42); }
|
|
step c1 { COMMIT; }
|
|
|
|
session s2
|
|
setup { BEGIN ISOLATION LEVEL SERIALIZABLE; }
|
|
step r2 { SELECT * FROM test WHERE i = 42; }
|
|
step w2 { INSERT INTO test VALUES (42); }
|
|
step c2 { COMMIT; }
|
|
|
|
# Two SSI transactions see that there is no row with value 42
|
|
# in the table, then try to insert that value; T1 inserts,
|
|
# and then T2 blocks waiting for T1 to commit. Finally,
|
|
# T2 reports a serialization failure.
|
|
|
|
permutation r1 r2 w1 w2 c1 c2
|
|
|
|
# If the value is already visible before T2 begins, then a
|
|
# regular unique constraint violation should still be raised
|
|
# by T2.
|
|
|
|
permutation r1 w1 c1 r2 w2 c2
|