Обсуждение: Remove duplicates of membership from results of \du

Поиск
Список
Период
Сортировка

Remove duplicates of membership from results of \du

От
Shinya Kato
Дата:
Hi, hackers

When executing \du, you can see duplicates of the same role in 'member of'.
This happens when admin | inherit | set options are granted by another role.

---
postgres=# create role role_a login createrole;
CREATE ROLE
postgres=# \du
                                    List of roles
  Role name | Attributes                         | Member of
-----------+------------------------------------------------------------+-----------
  role_a    | Create role                                                
| {}
  shinya    | Superuser, Create role, Create DB, Replication, Bypass RLS 
| {}

postgres=# set role role_a;
SET
postgres=> create role role_b;
CREATE ROLE
postgres=> \du
                                    List of roles
  Role name | Attributes                         | Member of
-----------+------------------------------------------------------------+-----------
  role_a    | Create role                                                
| {role_b}
  role_b    | Cannot login                                               
| {}
  shinya    | Superuser, Create role, Create DB, Replication, Bypass RLS 
| {}

postgres=> grant role_b to role_a;
GRANT ROLE
postgres=> \du
                                       List of roles
  Role name | Attributes                         |    Member of
-----------+------------------------------------------------------------+-----------------
  role_a    | Create role                                                
| {role_b,role_b}
  role_b    | Cannot login                                               
| {}
  shinya    | Superuser, Create role, Create DB, Replication, Bypass RLS 
| {}

postgres=> select rolname, oid from pg_roles where rolname = 'role_b';
  rolname |  oid
---------+-------
  role_b  | 16401
(1 row)

postgres=> select * from pg_auth_members where roleid = 16401;
   oid  | roleid | member | grantor | admin_option | inherit_option | 
set_option
-------+--------+--------+---------+--------------+----------------+------------
  16402 |  16401 |  16400 |      10 | t            | f | f
  16403 |  16401 |  16400 |   16400 | f            | t | t
(2 rows)
---


Attached patch resolves this issue.
Do you think?

Regards,
Shinya Kato




Вложения

Re: Remove duplicates of membership from results of \du

От
"David G. Johnston"
Дата:
On Sat, May 6, 2023 at 6:37 AM Shinya Kato <Shinya11.Kato@oss.nttdata.com> wrote:
Hi, hackers

When executing \du, you can see duplicates of the same role in 'member of'.
This happens when admin | inherit | set options are granted by another role.

There is already an ongoing patch discussing the needed changes to psql \du because of this change in tracking membership grant attributes.


David J.