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