`\dg` 与 PostgreSQL 中的 `\du`

问题描述 投票:0回答:1

我用

\dg
\du
显示用户(角色),然后有相同的结果,如下所示:

postgres=# \dg
                             List of roles
 Role name |                         Attributes
-----------+------------------------------------------------------------
 anna      |
 john      |
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS
postgres=# \du
                             List of roles
 Role name |                         Attributes
-----------+------------------------------------------------------------
 anna      |
 john      |
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS

我也看了

\dg
\du
的解释,如下所示:

postgres=# \?
...
Informational
  ...
  \dg[S+] [PATTERN]      list roles
  ...
  \du[S+] [PATTERN]      list roles
  ...

我的问题:

  1. \dg
    \du
    有什么区别?
  2. 如果
    \dg
    \du
    相同,那么其中之一现在或将来会被弃用吗?
database postgresql roles difference backslash-commands
1个回答
0
投票

使用

psql -E
你可以看到它们是完全相同的东西:

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
WHERE r.rolname !~ '^pg_'
ORDER BY 1;

两者均未弃用。不能保证它们将来不会被替换或弃用,但通常不太可能。

© www.soinside.com 2019 - 2024. All rights reserved.