@@ -41,7 +41,12 @@ SELECT obj_type 'TABLE' AS object_type,
41
41
has_table_privilege(r .oid , t .oid , p .perm ) AS granted
42
42
FROM pg_catalog .pg_class AS t
43
43
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)
45
50
WHERE t .relnamespace ::regnamespace::name <> ' information_schema'
46
51
AND t .relnamespace ::regnamespace::name NOT LIKE ' pg_%'
47
52
AND t .relkind = ' r'
@@ -59,7 +64,12 @@ SELECT obj_type 'VIEW' AS object_type,
59
64
has_table_privilege(r .oid , t .oid , p .perm ) AS granted
60
65
FROM pg_catalog .pg_class AS t
61
66
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)
63
73
WHERE t .relnamespace ::regnamespace::name <> ' information_schema'
64
74
AND t .relnamespace ::regnamespace::name NOT LIKE ' pg_%'
65
75
AND t .relkind = ' v'
0 commit comments