blob: 7ead8afad625567e8ea9d94930935ab4301369f5 (
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
36
37
38
39
40
41
|
# Test sequence usage and concurrent sequence DDL
setup
{
CREATE SEQUENCE seq1;
}
teardown
{
DROP SEQUENCE seq1;
}
session s1
setup { BEGIN; }
step s1alter { ALTER SEQUENCE seq1 MAXVALUE 10; }
step s1alter2 { ALTER SEQUENCE seq1 MAXVALUE 20; }
step s1restart { ALTER SEQUENCE seq1 RESTART WITH 5; }
step s1commit { COMMIT; }
session s2
step s2begin { BEGIN; }
step s2nv { SELECT nextval('seq1') FROM generate_series(1, 15); }
step s2commit { COMMIT; }
permutation s1alter s1commit s2nv
# Prior to PG10, the s2nv step would see the uncommitted s1alter
# change, but now it waits.
permutation s1alter s2nv s1commit
# Prior to PG10, the s2nv step would see the uncommitted s1restart
# change, but now it waits.
permutation s1restart s2nv s1commit
# In contrast to ALTER setval() is non-transactional, so it doesn't
# have to wait.
permutation s1restart s2nv s1commit
# nextval doesn't release lock until transaction end, so s1alter2 has
# to wait for s2commit.
permutation s2begin s2nv s1alter2 s2commit s1commit
|