blob: 2a0948247e32f8534baea52a818ef1e39b55d68e (
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
|
# Test addition of a partition with less-than-exclusive locking.
setup
{
CREATE TABLE foo (a int, b text) PARTITION BY LIST(a);
CREATE TABLE foo1 PARTITION OF foo FOR VALUES IN (1);
CREATE TABLE foo3 PARTITION OF foo FOR VALUES IN (3);
CREATE TABLE foo4 PARTITION OF foo FOR VALUES IN (4);
INSERT INTO foo VALUES (1, 'ABC');
INSERT INTO foo VALUES (3, 'DEF');
INSERT INTO foo VALUES (4, 'GHI');
}
teardown
{
DROP TABLE foo;
}
# The SELECT will be planned with just the three partitions shown above,
# of which we expect foo1 to be pruned at planning and foo3 at execution.
# Then we'll block, and by the time the query is actually executed,
# partition foo2 will also exist. We expect that not to be scanned.
# This test is specifically designed to check ExecCreatePartitionPruneState's
# code for matching up the partition lists in such cases.
session "s1"
step "s1exec" { LOAD 'delay_execution';
SET delay_execution.post_planning_lock_id = 12345;
SELECT * FROM foo WHERE a <> 1 AND a <> (SELECT 3); }
session "s2"
step "s2lock" { SELECT pg_advisory_lock(12345); }
step "s2unlock" { SELECT pg_advisory_unlock(12345); }
step "s2addp" { CREATE TABLE foo2 (LIKE foo);
ALTER TABLE foo ATTACH PARTITION foo2 FOR VALUES IN (2);
INSERT INTO foo VALUES (2, 'ADD2'); }
permutation "s2lock" "s1exec" "s2addp" "s2unlock"
|