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 文档: 访问权限查询函数