Non esiste una tale visualizzazione pronta all'uso, ma i dati necessari per crearla sono nei cataloghi di sistema:
http://www.postgresql.org/docs/current/static/catalogs.html
Ad esempio, c'è un relacl
campo in pg_class
:
select oid::regclass, relacl from pg_class;
Ci sono campi simili in altri cataloghi, vale a dire typacl
in pg_type
e proacl
in pg_proc
.
Presumibilmente vorrai usare altri due cataloghi, vale a dire pg_authid
per sapere quali ruoli hanno privilegi di superutente e pg_auth_members
per sapere chi ha quale ruolo.
(Il pg_default_acl
viene utilizzato solo durante la creazione dell'oggetto, quindi non è utile.)
Ci sono un paio di funzioni interne relative all'clitem che possono tornare utili per creare la vista. Puoi elencarli in psql
così:
\df+ *acl*
In particolare aclexplode()
. Si spera che il seguente esempio sia sufficiente per iniziare:
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;
Può essere ottimizzato espandendo prima le righe acl, ad esempio:
select oid::regclass,
aclitem.grantee
from (select oid, aclexplode(relacl) as aclitem from pg_class) sub
Ti porterà direttamente al risultato desiderato.
Per quanto ne so, è quanto di meglio si otterrà usando gli strumenti integrati. (Naturalmente, potresti scrivere il tuo set di operatori in C se desideri provare a ottimizzarlo ulteriormente.)
Per quanto riguarda le tue domande extra, temo che possano trovare risposta solo da una manciata di persone nel mondo, alias gli stessi sviluppatori principali. Frequentano l'elenco degli hacker di pg più spesso di quanto non facciano qui.