From: Peter Eisentraut Date: Wed, 2 Mar 2011 21:10:41 +0000 (+0200) Subject: Add collations to information_schema.usage_privileges X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=091bda0188250c9802cebca066b4ca9e049616e6;p=pg-rex%2Fsyncrep.git Add collations to information_schema.usage_privileges This is faked information like for domains. --- diff --git a/doc/src/sgml/information_schema.sgml b/doc/src/sgml/information_schema.sgml index aa6f852a8a..eba3a0a25d 100644 --- a/doc/src/sgml/information_schema.sgml +++ b/doc/src/sgml/information_schema.sgml @@ -3560,7 +3560,7 @@ ORDER BY c.ordinal_position; object_type character_data - DOMAIN or FOREIGN DATA WRAPPER or FOREIGN SERVER + COLLATION or DOMAIN or FOREIGN DATA WRAPPER or FOREIGN SERVER @@ -5497,15 +5497,15 @@ ORDER BY c.ordinal_position; 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. @@ -5556,7 +5556,7 @@ ORDER BY c.ordinal_position; object_type character_data - DOMAIN or FOREIGN DATA WRAPPER or FOREIGN SERVER + COLLATION or DOMAIN or FOREIGN DATA WRAPPER or FOREIGN SERVER diff --git a/src/backend/catalog/information_schema.sql b/src/backend/catalog/information_schema.sql index e81a3bb40d..1c47d81ba8 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,