PostgreSQL检查security_invoker是否在视图上打开

wbgh16ku  于 2023-04-05  发布在  PostgreSQL
关注(0)|答案(1)|浏览(90)

从PostgreSQL 15开始,可以在视图上设置security_invoker。我想知道如何检查我的视图是否启用了它,因为PGAdmin和DataGrip都没有显示。

sh7euo9m

sh7euo9m1#

下面是一个检查public模式中所有视图的示例:

select 
  relname, 
  case 
    when lower(reloptions::text)::text[] && array['security_invoker=1','security_invoker=true','security_invoker=on'] 
      then true else false
  end as security_invoker
from pg_class
  join pg_catalog.pg_namespace n on n.oid = pg_class.relnamespace
where n.nspname = 'public' and relkind='v';

在内部pg_class表中,有一个名为reloptions的列,它知道security_invoker是否打开。
reloptions的输出示例:{security_invoker=true}{security_invoker=on},如果未打开,则默认为null

相关问题