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 grantor
FROM 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