Добър начин да намерите как да извлечете този вид информация е да проверите помощта за psql
и намерете командата, която ще покаже тази информация.
В този случай това е dg+
команда.
След като знаете командата, можете да активирате отпечатването на вътрешните SQL заявки на psql
инструмент, за да разберете как извлича тази информация. Това става чрез стартиране на psql
използвайки -E
параметър.
Ако го направите, ще видите:
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
От въпроса ви не става ясно дали просто искате малко метод, за да видите коментара, след това dg+
вероятно е достатъчно. В противен случай можете да коригирате SQL заявката, която се използва от psql
за вашите нужди, напр.:
SELECT pg_catalog.shobj_description(r.oid, 'pg_authid') AS description
FROM pg_catalog.pg_roles r
where r.rolname = 'someone';
Забележка:\du и \dg са една и съща команда в psql. И двете се поддържат поради исторически причини .