Skip to content

Commit d5d1a19

Browse files
committed
Fix MAINTAIN privilege for older versions
1 parent 739b00a commit d5d1a19

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

pg_permissions--1.3.sql

+12-2
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,12 @@ SELECT obj_type 'TABLE' AS object_type,
4141
has_table_privilege(r.oid, t.oid, p.perm) AS granted
4242
FROM pg_catalog.pg_class AS t
4343
CROSS JOIN pg_catalog.pg_roles AS r
44-
CROSS JOIN (VALUES (TEXT 'SELECT'), ('INSERT'), ('UPDATE'), ('DELETE'), ('TRUNCATE'), ('REFERENCES'), ('TRIGGER'), ('MAINTAIN')) AS p(perm)
44+
CROSS JOIN unnest(
45+
CASE WHEN current_setting('server_version_num')::integer < 170000
46+
THEN ARRAY['SELECT','INSERT','UPDATE','DELETE','TRUNCATE','REFERENCES','TRIGGER']
47+
ELSE ARRAY['SELECT','INSERT','UPDATE','DELETE','TRUNCATE','REFERENCES','TRIGGER','MAINTAIN']
48+
END
49+
) AS p(perm)
4550
WHERE t.relnamespace::regnamespace::name <> 'information_schema'
4651
AND t.relnamespace::regnamespace::name NOT LIKE 'pg_%'
4752
AND t.relkind = 'r'
@@ -59,7 +64,12 @@ SELECT obj_type 'VIEW' AS object_type,
5964
has_table_privilege(r.oid, t.oid, p.perm) AS granted
6065
FROM pg_catalog.pg_class AS t
6166
CROSS JOIN pg_catalog.pg_roles AS r
62-
CROSS JOIN (VALUES (TEXT 'SELECT'), ('INSERT'), ('UPDATE'), ('DELETE'), ('TRUNCATE'), ('REFERENCES'), ('TRIGGER'), ('MAINTAIN')) AS p(perm)
67+
CROSS JOIN unnest(
68+
CASE WHEN current_setting('server_version_num')::integer < 170000
69+
THEN ARRAY['SELECT','INSERT','UPDATE','DELETE','TRUNCATE','REFERENCES','TRIGGER']
70+
ELSE ARRAY['SELECT','INSERT','UPDATE','DELETE','TRUNCATE','REFERENCES','TRIGGER','MAINTAIN']
71+
END
72+
) AS p(perm)
6373
WHERE t.relnamespace::regnamespace::name <> 'information_schema'
6474
AND t.relnamespace::regnamespace::name NOT LIKE 'pg_%'
6575
AND t.relkind = 'v'

0 commit comments

Comments
 (0)