summaryrefslogtreecommitdiffstats
path: root/src/test/isolation/specs/alter-table-4.spec
blob: f143b790d9619e1c54769c73bcd4771f03046a6a (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
# ALTER TABLE - Add and remove inheritance with concurrent reads

setup
{
 CREATE TABLE p (a integer);
 INSERT INTO p VALUES(1);
 CREATE TABLE c1 () INHERITS (p);
 INSERT INTO c1 VALUES(10);
 CREATE TABLE c2 (a integer);
 INSERT INTO c2 VALUES(100);
}

teardown
{
 DROP TABLE IF EXISTS c1, c2, p;
}

session s1
step s1b	{ BEGIN; }
step s1delc1	{ ALTER TABLE c1 NO INHERIT p; }
step s1modc1a	{ ALTER TABLE c1 ALTER COLUMN a TYPE float; }
step s1addc2	{ ALTER TABLE c2 INHERIT p; }
step s1dropc1	{ DROP TABLE c1; }
step s1c	{ COMMIT; }

session s2
step s2sel	{ SELECT SUM(a) FROM p; }

# NO INHERIT will not be visible to concurrent select,
# since we identify children before locking them
permutation s1b s1delc1 s2sel s1c s2sel
# adding inheritance likewise is not seen if s1 commits after s2 locks p
permutation s1b s1delc1 s1addc2 s2sel s1c s2sel
# but we do cope with DROP on a child table
permutation s1b s1dropc1 s2sel s1c s2sel
# this case currently results in an error; doesn't seem worth preventing
permutation s1b s1delc1 s1modc1a s2sel s1c s2sel