8000 Add regression test for DROP OWNED BY with default ACLs · postgrespro/postgres@a36dc04 · GitHub
[go: up one dir, main page]

Skip to content
  • Commit a36dc04

    Browse files
    committed
    Add regression test for DROP OWNED BY with default ACLs
    DROP OWNED BY has a specific code path to remove ACLs stored in pg_default_acl when cleaning up shared dependencies that had no coverage with the existing tests. This issue has been found while digging into the bug fixed by 21378e1. As ALTER DEFAULT PRIVILEGES impacts the ACLs of all objects created while the default permissions are visible, the test uses a transaction rollback to isolate the test and avoid any impact with other sessions running in parallel. Reviewed-by: Álvaro Herrera Discussion: https://postgr.es/m/YAbQ1OD+3ip4lRv8@paquier.xyz
    1 parent 21378e1 commit a36dc04

    File tree

    2 files changed

    +49
    -0
    lines changed

    2 files changed

    +49
    -0
    lines changed

    src/test/regress/expected/privileges.out

    Lines changed: 29 additions & 0 deletions
    Original file line numberDiff line numberDiff line change
    @@ -1760,6 +1760,35 @@ SELECT has_schema_privilege('regress_priv_user2', 'testns4', 'CREATE'); -- yes
    17601760

    17611761
    ALTER DEFAULT PRIVILEGES REVOKE ALL ON SCHEMAS FROM regress_priv_user2;
    17621762
    COMMIT;
    1763+
    -- Test for DROP OWNED BY with shared dependencies. This is done in a
    1764+
    -- separate, rollbacked, transaction to avoid any trouble with other
    1765+
    -- regression sessions.
    1766+
    BEGIN;
    1767+
    ALTER DEFAULT PRIVILEGES GRANT ALL ON FUNCTIONS TO regress_priv_user2;
    1768+
    ALTER DEFAULT PRIVILEGES GRANT ALL ON SCHEMAS TO regress_priv_user2;
    1769+
    ALTER DEFAULT PRIVILEGES GRANT ALL ON SEQUENCES TO regress_priv_user2;
    1770+
    ALTER DEFAULT PRIVILEGES GRANT ALL ON TABLES TO regress_priv_user2;
    1771+
    ALTER DEFAULT PRIVILEGES GRANT ALL ON TYPES TO regress_priv_user2;
    1772+
    SE 8000 LECT count(*) FROM pg_shdepend
    1773+
    WHERE deptype = 'a' AND
    1774+
    refobjid = 'regress_priv_user2'::regrole AND
    1775+
    classid = 'pg_default_acl'::regclass;
    1776+
    count
    1777+
    -------
    1778+
    5
    1779+
    (1 row)
    1780+
    1781+
    DROP OWNED BY regress_priv_user2, regress_priv_user2;
    1782+
    SELECT count(*) FROM pg_shdepend
    1783+
    WHERE deptype = 'a' AND
    1784+
    refobjid = 'regress_priv_user2'::regrole AND
    1785+
    classid = 'pg_default_acl'::regclass;
    1786+
    count
    1787+
    -------
    1788+
    0
    1789+
    (1 row)
    1790+
    1791+
    ROLLBACK;
    17631792
    CREATE SCHEMA testns5;
    17641793
    SELECT has_schema_privilege('regress_priv_user2', 'testns5', 'USAGE'); -- no
    17651794
    has_schema_privilege

    src/test/regress/sql/privileges.sql

    Lines changed: 20 additions & 0 deletions
    Original file line numberDiff line numberDiff line change
    @@ -1049,6 +1049,26 @@ ALTER DEFAULT PRIVILEGES REVOKE ALL ON SCHEMAS FROM regress_priv_user2;
    10491049

    10501050
    COMMIT;
    10511051

    1052+
    -- Test for DROP OWNED BY with shared dependencies. This is done in a
    1053+
    -- separate, rollbacked, transaction to avoid any trouble with other
    1054+
    -- regression sessions.
    1055+
    BEGIN;
    1056+
    ALTER DEFAULT PRIVILEGES GRANT ALL ON FUNCTIONS TO regress_priv_user2;
    1057+
    ALTER DEFAULT PRIVILEGES GRANT ALL ON SCHEMAS TO regress_priv_user2;
    1058+
    ALTER DEFAULT PRIVILEGES GRANT ALL ON SEQUENCES TO regress_priv_user2;
    1059+
    ALTER DEFAULT PRIVILEGES GRANT ALL ON TABLES TO regress_priv_user2;
    1060+
    ALTER DEFAULT PRIVILEGES GRANT ALL ON TYPES TO regress_priv_user2;
    1061+
    SELECT count(*) FROM pg_shdepend
    1062+
    WHERE deptype = 'a' AND
    1063+
    refobjid = 'regress_priv_user2'::regrole AND
    1064+
    classid = 'pg_default_acl'::regclass;
    1065+
    DROP OWNED BY regress_priv_user2, regress_priv_user2;
    1066+
    SELECT count(*) FROM pg_shdepend
    1067+
    WHERE deptype = 'a' AND
    1068+
    refobjid = 'regress_priv_user2'::regrole AND
    1069+
    classid = 'pg_default_acl'::regclass;
    1070+
    ROLLBACK;
    1071+
    10521072
    CREATE SCHEMA testns5;
    10531073

    10541074
    SELECT has_schema_privilege('regress_priv_user2', 'testns5', 'USAGE'); -- no

    0 commit comments

    Comments
     (0)
    0