array_nulls (boolean)
#
这控制数组输入解析器是否把不带引号的
NULL 识别为指定一个空数组元素。
默认情况下它是 on,
允许输入包含空值的数组值。
然而,PostgreSQL 8.2
之前的版本不支持数组中的空值,
因而会把 NULL
视为指定一个字符串值为 “NULL”
的普通数组元素。
为了与需要旧行为的应用程序向后兼容,
这个变量可以被关闭
(off)。
注意,即使这个变量为 off,
仍然可以创建包含空值的数组值。
backslash_quote (enum)
#
这控制一个引号是否可以用 '
在字符串字面量中表示。
表示引号的首选、符合 SQL
标准的方式是把它写成双引号
(''),但
PostgreSQL
历史上也接受 '。
然而,使用 '
会带来安全风险,因为在某些客户端字符集编码中,
存在最后一个字节在数值上等同于 ASCII
\ 的多字节字符。
如果客户端代码的转义不正确,
那么就可能发生 SQL 注入攻击。
让服务器拒绝那些引号看起来被反斜杠转义的查询,
可以防止这种风险。
backslash_quote
的允许值是
on(总是允许
')、
off(总是拒绝)和
safe_encoding(只有当客户端编码不允许
多字节字符内包含 ASCII \
时才允许)。
safe_encoding 是默认设置。
注意,在符合标准的字符串字面量中,
\ 无论如何都只表示
\。
这个参数只影响对不符合标准字面量的处理,
包括转义字符串语法
(E'...')。
escape_string_warning (boolean)
#
当开启时,如果在一个普通字符串字面量
('...'
语法)中出现反斜杠(\),
并且 standard_conforming_strings
为 off,则发出一条警告。
默认值为 on。
希望把反斜杠用作转义的应用程序应当被修改为使用转义字符串
语法(E'...'),
因为按照 SQL 标准,
普通字符串的默认行为现在是把反斜杠当作普通字符。
启用这个变量可以帮助定位需要修改的代码。
lo_compat_privileges (boolean)
#
在 PostgreSQL 9.0
之前的发行版中,大对象没有访问特权,
因此总是对所有用户可读可写。
把这个变量设置为 on
会禁用新的特权检查,以与之前的发行版兼容。
默认值为 off。
只有超级用户和具有相应 SET
权限的用户可以更改这个设置。
设置这个变量并不会禁用所有与大对象相关的安全检查 — 只禁用那些在 PostgreSQL 9.0 中默认行为发生了改变的安全检查。
quote_all_identifiers (boolean)
#
当数据库生成 SQL 时,强制所有标识符都被加上引号,
即使它们(目前)不是关键字。
这会影响 EXPLAIN
的输出以及诸如 pg_get_viewdef
之类的函数的结果。
另请参见 pg_dump 和
pg_dumpall
的 --quote-all-identifiers 选项。
standard_conforming_strings (boolean)
#
这控制普通字符串字面量
('...')是否按照 SQL
标准的规定把反斜杠按字面处理。
从 PostgreSQL 9.1
开始,默认值为 on
(之前发行版默认为 off)。
应用程序可以检查这个参数来确定字符串字面量将如何被处理。
这个参数的存在也可以被视为支持转义字符串语法
(E'...')的一个标志。
如果应用程序希望反斜杠被当作转义字符处理,
就应当使用转义字符串语法
(Section 4.1.2.2)。
synchronize_seqscans (boolean)
#
这允许大表的顺序扫描相互同步,
使得并发的扫描在大约相同的时间读取同一个块,
从而共享 I/O 工作负载。
启用之后,一次扫描可能从表的中间开始,
然后“环绕”到末尾以覆盖所有行,
以与已经在进行中的扫描的活动同步。
这可能导致没有 ORDER BY
子句的查询所返回的行顺序发生不可预测的变化。
把这个参数设置为
off
确保了 8.3 之前的行为,即顺序扫描总是从表的开头开始。
默认值为 on。
transform_null_equals (boolean)
#
开启时,形如 (或 expr =
NULLNULL =
)
的表达式会被当作
expr
处理,也就是说,如果
expr IS NULLexpr
求值为空值它们返回真,否则返回假。
符合 SQL 规范的正确行为是
总是返回空(未知)。
因此这个参数默认为
expr = NULLoff。
然而,
Microsoft
Access
中的过滤窗体会生成似乎使用
来测试空值的查询,
因此如果你使用该界面访问数据库,
你可能想开启这个选项。
由于形如
expr = NULL
的表达式总是返回空值(按照 SQL
标准的解释),它们并不是很有用,
在正常应用中也不常出现,所以这个选项在实践中没有什么坏处。
但新用户经常对涉及空值的表达式的语义感到困惑,
所以这个选项默认关闭。
expr = NULL
注意,这个选项只影响 = NULL
这一精确形式,不影响其他比较操作符,
也不影响在计算上与某个涉及等于操作符的表达式等价的其他
表达式(例如 IN)。
因此,这个选项并不是对糟糕编程的通用补救。
相关信息请参见 Section 9.2。
allow_alter_system (boolean)
#
当 allow_alter_system
被设置为 off 时,
如果执行 ALTER
SYSTEM 命令将返回错误。
这个参数只能在
postgresql.conf 文件中或服务器命令行上
设置。默认值为 on。
注意,这个设置不应被视为一项安全特性。
它只是禁用 ALTER SYSTEM 命令。
它不会阻止超级用户使用其他 SQL 命令更改配置。
超级用户有许多在操作系统层级执行 shell 命令的方式,
因此无论这个设置的值如何,
他们都可以修改
postgresql.auto.conf。
关闭这个设置针对的是
PostgreSQL
的配置由某个外部工具管理的环境。
在这样的环境中,一个出于好意的超级用户可能会
错误地使用
ALTER SYSTEM
而不是外部工具来更改配置。
这可能导致非预期的行为,
例如外部工具在稍后更新配置时覆盖该更改。
把这个参数设置为 off
有助于避免这类失误。
这个参数只控制 ALTER SYSTEM
的使用。
存储在
postgresql.auto.conf
中的设置会生效,即使
allow_alter_system
被设置为 off。