has_function_privilege() 是一个系统函数,用于判断用户是否对指定的函数拥有指定的 权限。
has_function_privilege() 添加于 PostgreSQL 7.3。
用法
has_function_privilege() 有两种形式:
has_function_privilege(function TEXT 或 OID, privilege TEXT)has_function_privilege(user TEXT 或 OID, function TEXT 或 OID, privilege TEXT)
通过 has_function_privilege() 可以查询的唯一权限是:EXECUTE。
变更历史
- PostgreSQL 7.3
- 添加于 (提交 4ab8e690)
示例
判断当前用户是否对指定函数拥有 EXECUTE 权限。
postgres=# SELECT has_function_privilege('pg_is_in_recovery()', 'EXECUTE');
has_function_privilege
------------------------
t
(1 row)
函数必须指定为 function(...) 的形式,否则将引发错误。
postgres=# SELECT has_function_privilege('pg_is_in_recovery', 'EXECUTE');
ERROR: expected a left parenthesis
判断指定用户是否对指定函数拥有 EXECUTE 权限。
postgres=# SELECT has_function_privilege('someuser', 'pg_read_file(text)', 'EXECUTE');
has_function_privilege
------------------------
f
(1 row)
尝试确定此对象类型不受识别的权限
postgres=# SELECT has_function_privilege('pg_is_in_recovery()', 'CREATE');
ERROR: unrecognized privilege type: "CREATE"
尝试判断一个不存在的函数的权限。
postgres=# SELECT has_function_privilege('somefunction()', 'EXECUTE');
ERROR: function "somefunction()" does not exist
参考资料
- PostgreSQL 文档: 访问权限查询函数
