psql元命令du和dg都可以列出角色或用户,请问这两个命令是否等价?
A.等价
B.不等价
C.不好说
D.不确定
参考答案:A
解析:
要确认某个封装命令是否等价,只需要看后台调用的SQL即可。
一、开启SQL跟踪功能
1.1 修改参数,开启sql跟踪
修改前
#log_statement = 'none' # none, ddl, mod, all
修改后
log_statement = 'all' # none, ddl, mod, all
1.2 重载使参数生效
[postgres@ora19c02 服务器托管网data]$ pg_ctl reload -D $PGDATA
二、测试功能
2.1 du命令
[postgres@ora19c02 data]$ psql -d testdb
psql (15.4)
Type "help" for help.
testdb=# du
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-------
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
test | | {}
查看日志输出
2023-10-23 09:42:57.547 CST [56704] LOG: statement: 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; 作者:云贝教育 https://www.bilibili.com/read/cv27545596/ 出处:bilibili
2.2 du命令
testdb=# dg
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-------
postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
test | | {}
查看日志输出
2023-10-23 09:43:30.543 CST [56704] LOG: statement: 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;
三、结论
由上述实验可以得出结论,两者调用的是同一个SQL,是等价的。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机服务器托管网房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: 设计模式——策略模式
策略模式
策略模式(策略枚举)策略模式 定义 策略模式(Strategy Pattern)也称为(Policy Parttern)。 定义一组算法,将每个算法都封装起来,并且使他们之间可以互换 优缺点、应用场景 优点 算法可以自由切换。这是策略模式本身的定义,只要实现抽象策略就可以作为一个…