has_largeobject_privilege()

确定用户是否拥有大型对象权限的函数

has_largeobject_privilege() 是一个系统函数,用于确定用户是否对指定的大型对象具有指定的权限

has_largeobject_privilege() 添加于 PostgreSQL 18

用法

has_largeobject_privilege ( largeobject oid, privilege text ) → boolean
has_largeobject_privilege ( user name or oid, largeobject oid, privilege text ) → boolean

可以查询以下权限

  • SELECT
  • UPDATE

如果指定的大型对象不存在,则返回NULL

更改历史记录

示例

基本用法示例

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)

分类

大型对象系统函数用户和角色

另请参阅

lo_compat_privileges

反馈

提交任何关于 "has_largeobject_privilege()" 的评论、建议或更正 此处