Redrock Postgres 搜索 英文
版本: 9.3 / 9.4 / 9.5 / 9.6 / 10 / 11 / 12 / 13 / 14 / 15 / 16 / 17

19.13. 版本和平台兼容性 #

19.13.1. 前面 Postgres 版本
19.13.2. 平台和客户端兼容性

19.13.1. 前面 Postgres 版本 #

array_nulls (boolean) #

这会控制 array 输入解析器是否可以识别未加引号的 NULL 来指定某个 null array 元素。默认情况下,它为 on,允许输入包含 null 值的 array 值。然而,PostgreSQL 8.2 之前的版本不支持 array 中的 null 值,因而会将 NULL 作为常规 array 元素来处理,其中字符串值为 NULL。为了向需要旧行为的应用程序提供向后兼容性,此变量可以设置为 off

请注意,即使此变量为 off,也可以创建包含 null 值的 array 值。

backslash_quote (enum) #

这控制字符串字面量中是否可以通过 \' 表示引用标记。表示引用标记的首选且符合 SQL 标准的方法是使引用标记加倍 (''),但 PostgreSQL 过去也接受 \'。然而,使用 \' 会产生安全风险,因为在某些客户端字符集编码中,有多字节字符在最后一个字节在数值上等同于 ASCII \。如果客户端代码转义不正确,那么就会发生 SQL 注入攻击。可以通过让服务器拒绝带有引用标记经过反斜杠转义的查询来预防这种风险。backslash_quote 允许的值为 on(始终允许 \')、off(始终拒绝)和 safe_encoding(仅当客户端编码在多字节字符内不允许 ASCII \ 时才允许)。safe_encoding 为默认设置。

请注意,在符合标准的字符串字面量中,\ 本身就表示 \。此参数仅影响对不符合标准的字面量的处理,包括转义字符串语法(E'...')。

escape_string_warning (boolean) #

开启后,如果在普通字符串文本('...' 语法)中出现反斜线 (\),且 standard_conforming_strings 处于关闭状态,则会发出警告。默认设置为 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_dumppg_dumpall--quote-all-identifiers 选项。

standard_conforming_strings (boolean) #

这用于控制标准字符串文本 ('...') 是否像 SQL 标准中指定的那样,以原义对待反斜线。从 PostgreSQL 9.1 之后开始,默认值为 on(以前的版本默认值为 off)。应用程序可以检查此参数以确定如何处理字符串文本。还可将此参数的存在视为支持转义字符串语法(E'...')。如果应用程序希望将反斜线视为转义字符,则应使用转义字符串语法(第 4.1.2.2 节)。

synchronize_seqscans (boolean) #

此选项能够对大表的顺序扫描进行同步,使同时进行的扫描在相同的时间读取相同的块并共享输入/输出工作负载。启用此选项后,扫描将从表的中间位置开始,然后绕过结尾来覆盖所有行,以同步正在进行的扫描活动。对于没有任何 ORDER BY 从句的查询,这会导致返回的行序出现不可预料的变化。将此参数设置为 off 将确保顺序扫描始终从表开头开始,这是 8.3 之前的行为。默认值为 on

19.13.2. 平台和客户端兼容性 #

transform_null_equals (boolean) #

启用时,形式为 expr = NULL(或 NULL = expr)的表达式将被视为 expr IS NULL,即如果 expr 计算结果为 null 值,则返回 true,否则返回 false。expr = NULL 的正确 SQL 规范兼容行为是始终返回 null(未知)。因此,此参数默认值为 off

但是,在 Microsoft Access 中筛选后的形式会生成看上去使用 expr = NULL 来测试 null 值的查询,因此如果你使用该界面访问数据库,则可以考虑启用此选项。因为形式为 expr = NULL 的表达式始终返回 null 值(使用 SQL 标准解释),且在常规应用程序中并不会很常用,所以此选项在实践中没有多大妨碍。但是,新用户经常会对包含 null 值的表达式的语义感到困惑,因此此选项默认关闭。

请注意,此选项只影响确切形式 = NULL,不影响其他比较运算符或在计算上等同于包含相等运算符的表达式的其他表达式(如 IN)。因此,此选项不是糟糕编程问题的通用修复方法。

有关详细信息,请参见章节 9.2

allow_alter_system (布尔型) #

allow_alter_system 设置为 off,执行 ALTER SYSTEM 命令时将返回错误。此参数只能在 postgresql.conf 文件或服务器命令行中设置。默认值为 on

请注意,此设置不应被视为安全特性。它仅禁用 ALTER SYSTEM 命令。它不会阻止超级用户使用其他 SQL 命令更改配置。超级用户可以通过操作系统级别执行各种 shell 命令,因此,无论此设置的值如何,超级用户都可以修改 postgresql.auto.conf

关闭此设置适用于由外部工具管理 PostgreSQL 配置的环境。在此类环境中,善意的超级用户可能会错误地使用 ALTER SYSTEM 更改配置,而不是使用外部工具。这可能会导致非预期行为,例如,外部工具在以后更新配置时覆盖更改。将此参数设置为 off 可以帮助避免此类错误。

此参数仅控制对 ALTER SYSTEM 的使用。即使 allow_alter_system 设置为 off,存储在 postgresql.auto.conf 中的设置也会生效。