Po vybalení takový pohled neexistuje, ale data potřebná k jeho vytvoření jsou v systémových katalozích:
https://www.postgresql.org/docs/current/static/catalogs.html
Například existuje relacl pole v pg_class :
select oid::regclass, relacl from pg_class;
Podobná pole jsou i v jiných katalozích, jmenovitě typacl v pg_type a proacl v pg_proc .
Pravděpodobně budete chtít použít další dva katalogy, konkrétně pg_authid abyste věděli, které role mají oprávnění superuživatele a pg_auth_members vědět, kdo má jakou roli.
(pg_default_acl se používá pouze při vytváření objektu, takže není užitečné.)
Existuje několik interních funkcí souvisejících s aclitem, které se mohou hodit při vytváření pohledu. Můžete je uvést v psql takhle:
\df+ *acl*
Konkrétně aclexplode() . Následující příklad vám snad bude stačit, abyste mohli začít:
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;
Lze jej optimalizovat tak, že nejprve rozbalíte řádky acl, např.:
select oid::regclass,
aclitem.grantee
from (select oid, aclexplode(relacl) as aclitem from pg_class) sub
Dovede vás přímo k požadovanému výsledku.
Pokud jsem si vědom, je to asi tak dobré, jak to bude možné pomocí vestavěných nástrojů. (Samozřejmě si můžete napsat vlastní sadu operátorů v C, pokud byste to chtěli zkusit dále optimalizovat.)
Pokud jde o vaše dodatečné otázky, obávám se, že na ně může odpovědět jen hrstka lidí na světě, neboli samotní hlavní vývojáři. Setkávají se na seznamu hackerů pg častěji než zde.