has_foreign_data_wrapper_privilege() 是一个系统函数,用于确定用户是否对指定的 外部数据包装器 (FDW) 拥有指定的 权限。
has_foreign_data_wrapper_privilege() 函数在 PostgreSQL 8.4 中被添加。
用法
has_foreign_data_wrapper_privilege() 有两种形式:
has_foreign_data_wrapper_privilege(fdw TEXT 或 OID, privilege TEXT)has_foreign_data_wrapper_privilege(user TEXT 或 OID, fdw TEXT 或 OID, privilege TEXT)
可以通过 has_foreign_data_wrapper_privilege() 查询的唯一权限是:USAGE。
变更历史
- PostgreSQL 8.4
- 添加 (提交 cae565e5)
示例
以下示例假设已安装了如下的 FDW:
postgres=# \dew
List of foreign-data wrappers
Name | Owner | Handler | Validator
--------------+----------+----------------------+------------------------
postgres_fdw | postgres | postgres_fdw_handler | postgres_fdw_validator
(1 row)
确定当前用户是否对指定的 FDW 拥有 USAGE 权限。
postgres=# SELECT has_foreign_data_wrapper_privilege('postgres_fdw', 'USAGE');
has_foreign_data_wrapper_privilege
------------------------------------
t
(1 row)
确定指定用户是否对指定的 FDW 拥有 USAGE 权限。
postgres=# SELECT has_foreign_data_wrapper_privilege('someuser', 'postgres_fdw', 'USAGE');
has_foreign_data_wrapper_privilege
------------------------------------
f
(1 row)
尝试确定此对象类型不受识别的权限
postgres=# SELECT has_foreign_data_wrapper_privilege('postgres_fdw', 'DELETE');
ERROR: unrecognized privilege type: "DELETE"
尝试确定一个不存在的 FDW 的权限。
postgres=# SELECT has_foreign_data_wrapper_privilege('hollerith_tabulator_fdw', 'USAGE');
ERROR: foreign-data wrapper "hollerith_tabulator_fdw" does not exist
参考资料
- PostgreSQL 文档: 访问权限查询函数
