has_function_privilege()
是一个系统函数,用于确定用户是否对指定的函数拥有指定的权限。
has_function_privilege()
添加于PostgreSQL 7.3。
用法
has_function_privilege()
具有两种形式
has_function_privilege(函数 TEXT 或 OID, 权限 TEXT)
has_function_privilege(用户 TEXT 或 OID, 函数 TEXT 或 OID, 权限 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 文档: 访问权限查询函数