箱から出してそのようなビューはありませんが、それを作成するために必要なデータはシステムカタログにあります:
http://www.postgresql.org/docs/current/static/catalogs.html
たとえば、relacl
があります pg_class
のフィールド :
select oid::regclass, relacl from pg_class;
他のカタログにも同様のフィールドがあります。つまり、typacl
pg_type
で およびproacl
pg_proc
で 。
おそらく、さらに2つのカタログ、つまりpg_authid
を使用することをお勧めします。 どのロールがスーパーユーザー権限を持っているかを知るため、およびpg_auth_members
誰がどのような役割を果たしているかを知るために。
(pg_default_acl
オブジェクトの作成時にのみ使用されるため、役に立ちません。)
ビューの作成に役立つ可能性のある、いくつかのaclitem関連の内部関数があります。それらをpsql
にリストできます そのように:
\df+ *acl*
特にaclexplode()
。次の例で十分に始められます:
select oid::regclass,
(aclexplode(relacl)).grantor,
(aclexplode(relacl)).grantee,
(aclexplode(relacl)).privilege_type,
(aclexplode(relacl)).is_grantable
from pg_class
where relacl is not null;
最初にacl行を展開することで最適化できます。例:
select oid::regclass,
aclitem.grantee
from (select oid, aclexplode(relacl) as aclitem from pg_class) sub
目的の結果に直接つながります。
私の知る限り、これは組み込みのツールを使用する場合とほぼ同じです。 (当然、これをさらに最適化する場合は、Cで独自の演算子のセットを作成できます。)
あなたの追加の質問に関しては、私は彼らが世界のほんの一握りの人々、別名コア開発者自身によってのみ答えられることができるのではないかと心配しています。彼らはここよりも頻繁にpgハッカーリストにたむろしています。