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: Tom Lane <tgl@sss.pgh.pa.us>
Cc: "David G. Johnston" <david.g.johnston@gmail.com>, "Jonathan S. Katz" <jkatz@postgresql.org>, 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-07-09T10:56:44Z
Lists: pgsql-hackers
On 08.07.2023 20:07, Tom Lane wrote:
> 1. I was thinking in terms of dropping the "Member of" column entirely
> in \du and \dg.  It doesn't tell you enough, and the output of those
> commands is often too wide already.

I understood it that way that the dropping "Member of" column will be 
done as part of another work for v17. [1]
But I'm ready to do it now.

> 2. You have describeRoleGrants() set up to localize "ADMIN", "INHERIT",
> and "SET".  Since those are SQL keywords, our usual practice is to not
> localize them; this'd simplify the code.

The reason is that \du has translatable all attributes of the role, 
including NOINHERIT.
I decided to make a new command the same way.
But I'm ready to leave them untranslatable, if no objections.

> 3. Not sure about use of LEFT JOIN in the query.  That will mean we
> get a row out even for roles that have no grants, which seems like
> clutter.  The LEFT JOINs to r and g are fine, but I suggest changing
> the first join to a plain join.

It was David's suggestion:

On 24.06.2023 18:57, David G. Johnston wrote:
> On Sat, Jun 24, 2023 at 8:11 AM Pavel Luzanov 
> <p.luzanov@postgrespro.ru> wrote:
>
>     * The new meta-command will not show all roles. It will only show the
>     roles included in other roles.
>     To show all roles you need to add an outer join between pg_roles and
>     pg_auth_members.
>     But all columns except "role" will be left blank. Is it worth
>     doing this?
>
>
> I'm inclined to want this.  I would be good when specifying a role to 
> filter upon that all rows that do exist matching that filter end up in 
> the output regardless if they are standalone or not.

Personally, I tend to think that left join is not needed. No memberships 
- nothing shown.

So, I accepted all three suggestions. I will wait for other opinions and
plan to implement discussed changes within a few days.

1. https://www.postgresql.org/message-id/4133242.1687481416%40sss.pgh.pa.us

-- 
Pavel Luzanov
Postgres Professional:https://postgrespro.com

Commits

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