Is there an alternative to using psql \du to retrieve the Member of column using a builtin Postgres function or view? Thank you.
In psql you can echo the actual queries generated by backslash commands.
Use the --echo-hidden parameter
psql --echo-hidden ...
or set the variable ECHO_HIDDEN in psql, example:
test=# \set ECHO_HIDDEN on
test=# \du
********* QUERY **********
SELECT r.rolname, r.rolsuper, r.rolinherit,
r.rolcreaterole, r.rolcreatedb, r.rolcanlogin,
r.rolconnlimit, r.rolvaliduntil,
ARRAY(SELECT b.rolname
FROM pg_catalog.pg_auth_members m
JOIN pg_catalog.pg_roles b ON (m.roleid = b.oid)
WHERE m.member = r.oid) as memberof
, r.rolreplication
, r.rolbypassrls
FROM pg_catalog.pg_roles r
ORDER BY 1;
******************************
Read about psql in the documentation.
I figured it out and here's my answer:
SELECT
pg_roles.rolname,
pg_auth_members.member,
(SELECT pg_roles.rolname FROM pg_roles WHERE oid = pg_auth_members.member)
FROM
pg_roles, pg_auth_members
WHERE
pg_auth_members.roleid = ( SELECT oid FROM pg_roles WHERE rolname = 'my_group') and pg_roles.rolname = 'my_group';
So, this query would return something like this:
rolname | member | rolname
------------+--------+---------
my_group | 18068 | first_member
my_group | 18069 | second_member
(2 rows)