Uma boa maneira de descobrir como recuperar esse tipo de informação é verificar a ajuda do
psql
e encontre o comando que exibiria essas informações. Neste caso, é o
dg+
comando. Depois de conhecer o comando, você pode habilitar a impressão das consultas SQL internas do
psql
ferramenta para descobrir como ele recupera essa informação. Isso é feito iniciando o psql
usando o -E
parâmetro. Se você fizer isso, verá:
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
Não está claro na sua pergunta se você quer apenas algum método para ver o comentário, então
dg+
provavelmente é o suficiente. Caso contrário, você pode ajustar a consulta SQL usada pelo psql
às suas necessidades, por exemplo: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 são o mesmo comando no psql. Ambos são mantidos por motivos históricos .