diff --git a/doc/src/sgml/information_schema.sgml b/doc/src/sgml/information_schema.sgml index aa6f852a8a3f7ad11586f5726e758a2b9cd65786..eba3a0a25da394087c0813bd886aaba5f91ecfc3 100644 --- a/doc/src/sgml/information_schema.sgml +++ b/doc/src/sgml/information_schema.sgml @@ -3560,7 +3560,7 @@ ORDER BY c.ordinal_position; <row> <entry><literal>object_type</literal></entry> <entry><type>character_data</type></entry> - <entry><literal>DOMAIN</literal> or <literal>FOREIGN DATA WRAPPER</literal> or <literal>FOREIGN SERVER</literal></entry> + <entry><literal>COLLATION</literal> or <literal>DOMAIN</literal> or <literal>FOREIGN DATA WRAPPER</literal> or <literal>FOREIGN SERVER</literal></entry> </row> <row> @@ -5497,15 +5497,15 @@ ORDER BY c.ordinal_position; <literal>USAGE</literal> privileges granted on various kinds of objects to a currently enabled role or by a currently enabled role. In <productname>PostgreSQL</productname>, 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. </para> <para> - Since domains do not have real privileges + Since collations and domains do not have real privileges in <productname>PostgreSQL</productname>, this view shows implicit non-grantable <literal>USAGE</literal> privileges granted by the - owner to <literal>PUBLIC</literal> for all domains. The other + owner to <literal>PUBLIC</literal> for all collations and domains. The other object types, however, show real privileges. </para> @@ -5556,7 +5556,7 @@ ORDER BY c.ordinal_position; <row> <entry><literal>object_type</literal></entry> <entry><type>character_data</type></entry> - <entry><literal>DOMAIN</literal> or <literal>FOREIGN DATA WRAPPER</literal> or <literal>FOREIGN SERVER</literal></entry> + <entry><literal>COLLATION</literal> or <literal>DOMAIN</literal> or <literal>FOREIGN DATA WRAPPER</literal> or <literal>FOREIGN SERVER</literal></entry> </row> <row> diff --git a/src/backend/catalog/information_schema.sql b/src/backend/catalog/information_schema.sql index e81a3bb40dfbc5013cb47924367dd18762ca2afd..1c47d81ba8cac38417fb1b3b853183e1725d5c4c 100644 --- a/src/backend/catalog/information_schema.sql +++ b/src/backend/catalog/information_schema.sql @@ -2019,6 +2019,27 @@ GRANT SELECT ON triggers TO PUBLIC; 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,