Nie ma takiego widoku po wyjęciu z pudełka, ale dane potrzebne do jego utworzenia znajdują się w katalogach systemowych:
https://www.postgresql.org/docs/current/static/catalogs.html
Na przykład istnieje relacl pole w pg_class :
select oid::regclass, relacl from pg_class;
Podobne pola znajdują się w innych katalogach, a mianowicie typacl w pg_type i proacl w pg_proc .
Prawdopodobnie będziesz chciał użyć jeszcze dwóch katalogów, a mianowicie pg_authid aby wiedzieć, które role mają uprawnienia superużytkownika i pg_auth_members wiedzieć, kto pełni jaką rolę.
(pg_default_acl jest używany tylko podczas tworzenia obiektów, więc nie jest przydatny).
Istnieje kilka wewnętrznych funkcji związanych z aklitem, które mogą się przydać podczas tworzenia widoku. Możesz je wymienić w psql jak tak:
\df+ *acl*
W szczególności aclexplode() . Miejmy nadzieję, że na początek wystarczy poniższy przykład:
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;
Można go zoptymalizować, rozwijając najpierw wiersze acl, np.:
select oid::regclass,
aclitem.grantee
from (select oid, aclexplode(relacl) as aclitem from pg_class) sub
Zaprowadzi Cię prosto do pożądanego rezultatu.
O ile mi wiadomo, jest to tak dobre, jak można uzyskać za pomocą wbudowanych narzędzi. (Oczywiście możesz napisać własny zestaw operatorów w języku C, jeśli chcesz spróbować dalej optymalizować.)
Jeśli chodzi o twoje dodatkowe pytania, obawiam się, że może na nie odpowiedzieć tylko garstka ludzi na świecie, czyli sami główni twórcy. Częściej przebywają na liście hakerów pg niż tutaj.