postgres=# SHOW ALL;
name | setting | description
----------------------------+-------------+------------------------------------------------------------------------------------------
allow_in_place_tablespaces | off | Allows tablespaces directly inside pg_tblspc, for testing.
allow_system_table_mods | off | Allows modifications of the structure of system tables.
application_name | psql | Sets the application name to be reported in statistics and logs.
archive_cleanup_command | | Sets the shell command that will be executed at every restart point.
archive_command | (disabled) | Sets the shell command that will be called to archive a WAL file.
archive_mode | off | Allows archiving of WAL files using archive_command.
archive_timeout | 0 | Forces a switch to the next WAL file if a new file has not been started within N seconds.
array_nulls | on | Enable input of NULL elements in arrays.
authentication_timeout | 1min | Sets the maximum allowed time to complete client authentication.
autovacuum | on | Starts the autovacuum subprocess.
...
并且,您可以使用SHOW显示一个特定参数,如下所示:
postgres=# SHOW allow_in_place_tablespaces;
allow_in_place_tablespaces
----------------------------
off
(1 row)
但是,不能使用SHOW显示多个参数,如下所示:
postgres=# SHOW allow_in_place_tablespaces, allow_system_table_mods;
ERROR: syntax error at or near ","
LINE 1: show allow_in_place_tablespaces, allow_system_table_mods;
因此,要显示多个参数,请使用下面的SELECT FROM pg_settings:
postgres=# SELECT name, setting, short_desc FROM pg_settings WHERE name IN ('allow_in_place_tablespaces', 'allow_system_table_mods');
name | setting | short_desc
----------------------------+---------+------------------------------------------------------------
allow_in_place_tablespaces | off | Allows tablespaces directly inside pg_tblspc, for testing.
allow_system_table_mods | off | Allows modifications of the structure of system tables.
(2 rows)
此外,current_setting()可以显示一个特定参数,如下所示:
postgres=# SELECT current_setting('allow_in_place_tablespaces');
current_setting
-----------------
off
(1 row)
但是,不能使用current_setting()显示多个参数,如下所示:
postgres=# SELECT current_setting('allow_in_place_tablespaces', 'allow_system_table_mods');
ERROR: invalid input syntax for type boolean: "allow_system_table_mods"
LINE 1: ...ECT current_setting('allow_in_place_tablespaces', 'allow_sys...
4条答案
按热度按时间dw1jzc5e1#
Alvaro已经回答了如何列出当前参数值的问题。
要获取经过身份验证的用户,可以调用SQL函数
session_user
:当前有效的用户可通过查看
在
psql
中,可以使用查看当前数据库会话的详细信息ktecyv1j2#
废话。试试下面两个SQL语句:
然后:
你刚刚设置并读取了一个PostgreSQL文档似乎没有命名的实体。你可以称
x.y
为"用户定义的会话参数"。它的值保存在哪里?当然是服务器端。我也想知道如何列出所有当前定义的实体的名称-系统定义的(如TimeZone)和用户定义的。
kokeuurv3#
PostgreSQL没有像服务器端会话变量这样的东西,所以不清楚你在问什么。
一些PL(如PL/Python、PL/Perl)有会话变量(例如PL/Perl中的
%_SHARED
、PL/Python中的GD
和SD
),但它们是PL内部的,而不是服务器本身的一部分。psql
也有变量,你可以用\set
设置,你可以用同样的命令得到一个列表,我想这不是你想要的。也许你指的是所谓的自定义
GUC
配置参数,它有时被滥用为会话变量,你可以得到一个使用SHOW ALL
或SELECT * FROM pg_catalog.pg_settings
的配置参数列表。y3bcpkx14#
下面的
SHOW ALL
可以根据the documentation显示所有参数:SHOW ALL
的工作原理如下:并且,您可以使用
SHOW
显示一个特定参数,如下所示:但是,不能使用
SHOW
显示多个参数,如下所示:因此,要显示多个参数,请使用下面的
SELECT FROM pg_settings
:此外,current_setting()可以显示一个特定参数,如下所示:
但是,不能使用
current_setting()
显示多个参数,如下所示: