En god måde at finde ud af, hvordan man henter denne form for information er at tjekke hjælpen til psql
og find den kommando, der viser denne information.
I dette tilfælde er det dg+
kommando.
Når du kender kommandoen, kan du aktivere udskrivning af de interne SQL-forespørgsler i psql
værktøj til at finde ud af, hvordan den henter disse oplysninger. Dette gøres ved at starte psql
ved hjælp af -E
parameter.
Hvis du gør det, vil du se:
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
Det fremgår ikke klart af dit spørgsmål, om du bare vil have nogle metode til at se kommentaren, og derefter dg+
er nok nok. Ellers kan du justere SQL-forespørgslen, der bruges af psql
til dine behov, f.eks.:
SELECT pg_catalog.shobj_description(r.oid, 'pg_authid') AS description
FROM pg_catalog.pg_roles r
where r.rolname = 'someone';
Bemærk:\du og \dg er den samme kommando i psql. Begge opretholdes af historiske årsager .