Re: psql: Add role's membership options to the \du+ command

Pavel Luzanov <p.luzanov@postgrespro.ru>

From: Pavel Luzanov <p.luzanov@postgrespro.ru>
To: "Jonathan S. Katz" <jkatz@postgresql.org>, "David G. Johnston" <david.g.johnston@gmail.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Robert Haas <robertmhaas@gmail.com>, David Zhang <david.zhang@highgo.ca>, "pgsql-hackers@lists.postgresql.org" <pgsql-hackers@lists.postgresql.org>, rmt@lists.postgresql.org, horikyota.ntt@gmail.com
Date: 2023-05-18T13:07:22Z
Lists: pgsql-hackers
On 18.05.2023 05:42, Jonathan S. Katz wrote:

> That said, from a readability standpoint, it was easier for me to 
> follow the tabular form vs. the sentence form.

May be possible to reach a agreement on the sentence form. Similar 
descriptions used for referential constraints in the \d command:

create table t1 (id int primary key);create table t2 (id int references 
t1(id));\d t2                 Table "public.t2" Column |  Type   | 
Collation | Nullable | Default 
--------+---------+-----------+----------+--------- id     | integer 
|           |          | Foreign-key constraints:    "t2_id_fkey" 
FOREIGN KEY (id) REFERENCES t1(id)As for tabular form it looks more 
natural to have a separate psql command for pg_auth_members system 
catalog. Something based on this query:SELECT r.rolname role, m.rolname 
member,       admin_option admin, inherit_option inherit, set_option 
set,       g.rolname grantorFROM pg_catalog.pg_auth_members pam     JOIN 
pg_catalog.pg_roles r ON (pam.roleid = r.oid)     JOIN 
pg_catalog.pg_roles m ON (pam.member = m.oid)     JOIN 
pg_catalog.pg_roles g ON (pam.grantor = g.oid)WHERE r.rolname !~ 
'^pg_'ORDER BY role, member, grantor;       role       |      
member      | admin | inherit | set |     grantor 
------------------+------------------+-------+---------+-----+------------------ regress_du_role0 
| regress_du_admin | t     | t       | t   | postgres regress_du_role0 | 
regress_du_role1 | t     | t       | t   | 
regress_du_admin regress_du_role0 | regress_du_role1 | f     | t       | 
f   | regress_du_role1 regress_du_role0 | regress_du_role1 | f     | 
f       | t   | regress_du_role2 regress_du_role0 | regress_du_role2 | 
t     | f       | f   | regress_du_admin regress_du_role0 | 
regress_du_role2 | f     | t       | t   | 
regress_du_role1 regress_du_role0 | regress_du_role2 | f     | f       | 
f   | regress_du_role2 regress_du_role1 | regress_du_admin | t     | 
t       | t   | postgres regress_du_role1 | regress_du_role2 | t     | 
f       | t   | regress_du_admin regress_du_role2 | regress_du_admin | 
t     | t       | t   | postgres(10 rows)But is it worth inventing a new 
psql command for this?

-----
Pavel Luzanov

Commits

  1. Add psql \drg command to display role grants.