32 lines
663 B
RPMSpec
32 lines
663 B
RPMSpec
|
# When a tuple that has been updated is locked, the locking command
|
||
|
# should traverse the update chain; thus, a DELETE should not be able
|
||
|
# to proceed until the lock has been released.
|
||
|
|
||
|
setup
|
||
|
{
|
||
|
CREATE TABLE foo (
|
||
|
key int PRIMARY KEY,
|
||
|
value int
|
||
|
);
|
||
|
|
||
|
INSERT INTO foo VALUES (1, 1);
|
||
|
}
|
||
|
|
||
|
teardown
|
||
|
{
|
||
|
DROP TABLE foo;
|
||
|
}
|
||
|
|
||
|
session "s1"
|
||
|
setup { BEGIN; }
|
||
|
step "s1s" { SAVEPOINT f; }
|
||
|
step "s1u" { UPDATE foo SET key = 2; } # obtain KEY REVOKE
|
||
|
step "s1r" { ROLLBACK TO f; } # lose KEY REVOKE
|
||
|
step "s1l" { SELECT * FROM foo FOR KEY SHARE; }
|
||
|
step "s1c" { COMMIT; }
|
||
|
|
||
|
session "s2"
|
||
|
setup { BEGIN; }
|
||
|
step "s2l" { SELECT * FROM foo FOR KEY SHARE; }
|
||
|
step "s2c" { COMMIT; }
|