Un buon modo per trovare come recuperare questo tipo di informazioni è controllare la guida per psql
e trova il comando che visualizzerebbe queste informazioni.
In questo caso, è il dg+
comando.
Una volta che conosci il comando, puoi abilitare la stampa delle query SQL interne di psql
strumento per scoprire come recupera tali informazioni. Questo viene fatto avviando psql
usando il -E
parametro.
Se lo fai, vedrai:
psql (9.4.5)
Type "help" for help.
postgres=# \dg+
********* QUERY **********
SELECT r.rolname, r.rolsuper, r.rolinherit,
r.rolcreaterole, r.rolcreatedb, r.rolcanlogin,
r.rolconnlimit, r.rolvaliduntil,
ARRAY(SELECT b.rolname
FROM pg_catalog.pg_auth_members m
JOIN pg_catalog.pg_roles b ON (m.roleid = b.oid)
WHERE m.member = r.oid) as memberof
, pg_catalog.shobj_description(r.oid, 'pg_authid') AS description
, r.rolreplication
FROM pg_catalog.pg_roles r
ORDER BY 1;
**************************
List of roles
Role name | Attributes | Member of | Description
---------------+-----------------------------------+-----------+-----------------------
someone | | {} | THIS IS A ROLE COMMENT
Non è chiaro dalla tua domanda se vuoi solo alcuni metodo per vedere il commento, quindi dg+
è probabilmente sufficiente. Altrimenti puoi modificare la query SQL utilizzata da psql
alle tue esigenze, ad es.:
SELECT pg_catalog.shobj_description(r.oid, 'pg_authid') AS description
FROM pg_catalog.pg_roles r
where r.rolname = 'someone';
Nota:\du e \dg sono lo stesso comando in psql. Entrambi sono mantenuti per ragioni storiche .