has_largeobject_privilege()
是一个系统函数,用于确定用户是否对指定的大型对象具有指定的权限。
has_largeobject_privilege()
添加于 PostgreSQL 18。
用法
has_largeobject_privilege (largeobject
oid
,privilege
text
) →boolean
has_largeobject_privilege (user
name
oroid
,largeobject
oid
,privilege
text
) →boolean
可以查询以下权限
SELECT
UPDATE
如果指定的大型对象不存在,则返回NULL
。
更改历史记录
- PostgreSQL 18
- 添加 (提交 4eada203)
示例
基本用法示例
postgres=# SELECT lo_create(1001); lo_create ----------- 1001 (1 row) postgres=# GRANT SELECT ON LARGE OBJECT 1001 TO foo; GRANT postgres=# SELECT has_largeobject_privilege('foo', 1001, 'SELECT'); has_largeobject_privilege --------------------------- t (1 row) postgres=# SELECT has_largeobject_privilege('foo', 1001, 'UPDATE'); has_largeobject_privilege --------------------------- f (1 row)
尝试确定此对象类型的不识别权限
postgres=# SELECT has_largeobject_privilege(1001, 'CONNECT'); ERROR: unrecognized privilege type: "CONNECT"
尝试确定不存在的大型对象的权限
postgres=# SELECT COUNT(*) FROM pg_largeobject WHERE loid = 999; count ------- 0 (1 row) postgres=# SELECT has_largeobject_privilege(999, 'UPDATE') IS NULL; ?column? ---------- t (1 row)
参考文献
- PostgreSQL 18 文档: 访问权限查询函数