has_largeobject_privilege() 是一个系统函数,用于判断用户是否对指定 大对象 具有指定的 权限。
has_largeobject_privilege() 在 PostgreSQL 18 中被添加。
用法
has_largeobject_privilege (largeobjectoid,privilegetext) →boolean
has_largeobject_privilege (usernameoroid,largeobjectoid,privilegetext) →boolean
可以查询以下权限
SELECTUPDATE
如果指定的大对象不存在,则返回 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 文档: 访问权限查询函数
