aboutsummaryrefslogtreecommitdiff
path: root/src/test/isolation/specs/search-path-inval.spec
blob: 08b1bba2fc9a1f5c465702f8a6d7f900fc0b64b1 (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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# Test search_path invalidation.

setup
{
    CREATE USER regress_sp_user1;
    CREATE SCHEMA regress_sp_user1 AUTHORIZATION regress_sp_user1;
    CREATE SCHEMA regress_sp_public;
    GRANT ALL PRIVILEGES ON SCHEMA regress_sp_public TO regress_sp_user1;
}

teardown
{
    DROP SCHEMA regress_sp_public CASCADE;
    DROP SCHEMA regress_sp_user1 CASCADE;
    DROP USER regress_sp_user1;
}

session s1
setup
{
    SET search_path = "$user", regress_sp_public;
    SET SESSION AUTHORIZATION regress_sp_user1;
    CREATE TABLE regress_sp_user1.x(t) AS SELECT 'data in regress_sp_user1.x';
    CREATE TABLE regress_sp_public.x(t) AS SELECT 'data in regress_sp_public.x';
}
step s1a
{
    SELECT CURRENT_USER;
    SHOW search_path;
    SELECT t FROM x;
}

session s2
step s2a
{
    ALTER ROLE regress_sp_user1 RENAME TO regress_sp_user2;
}
step s2b
{
    ALTER ROLE regress_sp_user2 RENAME TO regress_sp_user1;
}

session s3
step s3a
{
    ALTER SCHEMA regress_sp_user1 RENAME TO regress_sp_user2;
}
step s3b
{
    ALTER SCHEMA regress_sp_user2 RENAME TO regress_sp_user1;
}

# s1's search_path is invalidated by role name change in s2a, and
# falls back to regress_sp_public.x
permutation s1a s2a s1a s2b

# s1's search_path is invalidated by schema name change in s2b, and
# falls back to regress_sp_public.x
permutation s1a s3a s1a s3b