summaryrefslogtreecommitdiffstats
path: root/src/test/isolation/specs/multixact-no-deadlock.spec
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