blob: a8af724e58b148b20cb5279248262a46d1826da4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
# If we already hold a lock of a given strength, do not deadlock when
# some other transaction is waiting for a conflicting lock and we try
# to acquire the same lock we already held.
setup
{
CREATE TABLE justthis (
value int
);
INSERT INTO justthis VALUES (1);
}
teardown
{
DROP TABLE justthis;
}
session s1
setup { BEGIN; }
step s1lock { SELECT * FROM justthis FOR SHARE; }
step s1svpt { SAVEPOINT foo; }
step s1lock2 { SELECT * FROM justthis FOR SHARE; }
step s1c { COMMIT; }
session s2
setup { BEGIN; }
step s2lock { SELECT * FROM justthis FOR SHARE; } # ensure it's a multi
step s2c { COMMIT; }
session s3
setup { BEGIN; }
step s3lock { SELECT * FROM justthis FOR UPDATE; }
step s3c { COMMIT; }
permutation s1lock s2lock s1svpt s3lock s1lock2 s2c s1c s3c
|