|
object_type
character_data
- DOMAIN or FOREIGN DATA WRAPPER or FOREIGN SERVER
+ COLLATION or DOMAIN or FOREIGN DATA WRAPPER or FOREIGN SERVER
|
USAGE privileges granted on various kinds of
objects to a currently enabled role or by a currently enabled role.
In
PostgreSQL, this currently applies to
- domains, foreign-data wrappers, and foreign servers. There is one
+ collations, domains, foreign-data wrappers, and foreign servers. There is one
row for each combination of object, grantor, and grantee.
- Since domains do not have real privileges
+ Since collations and domains do not have real privileges
in
PostgreSQL, this view shows implicit
non-grantable USAGE privileges granted by the
- owner to PUBLIC for all domains. The other
+ owner to PUBLIC for all collations and domains. The other
object types, however, show real privileges.
|
object_type
character_data
- DOMAIN or FOREIGN DATA WRAPPER or FOREIGN SERVER
+ COLLATION or DOMAIN or FOREIGN DATA WRAPPER or FOREIGN SERVER
|
CREATE VIEW usage_privileges AS
+ /* collations */
+ -- Collations have no real privileges, so we represent all collations with implicit usage privilege here.
+ SELECT CAST(u.rolname AS sql_identifier) AS grantor,
+ CAST('PUBLIC' AS sql_identifier) AS grantee,
+ CAST(current_database() AS sql_identifier) AS object_catalog,
+ CAST(n.nspname AS sql_identifier) AS object_schema,
+ CAST(c.collname AS sql_identifier) AS object_name,
+ CAST('COLLATION' AS character_data) AS object_type,
+ CAST('USAGE' AS character_data) AS privilege_type,
+ CAST('NO' AS yes_or_no) AS is_grantable
+
+ FROM pg_authid u,
+ pg_namespace n,
+ pg_collation c
+
+ WHERE u.oid = c.collowner
+ AND c.collnamespace = n.oid
+ AND c.collencoding = (SELECT encoding FROM pg_catalog.pg_database WHERE datname = pg_catalog.current_database())
+
+ UNION ALL
+
/* domains */
-- Domains have no real privileges, so we represent all domains with implicit usage privilege here.
SELECT CAST(u.rolname AS sql_identifier) AS grantor,