版本和平台兼容性(VERSION AND PLATFORM COMPATIBILITY)类别参数

本文档介绍了系统配置参数中 版本和平台兼容性类别的相关参数。

注意!
为确保系统稳定与安全,请务必谨慎手动修改相关参数


PostgreSQL 12 之前的版本

array_nulls


这个参数控制数组输入解析器是否把未用引号的 NULL 识别为一个空数组元素。

  • 默认为 on,允许输入包含空值的数组值。
  • 注意:即使这个变量为 off 也能够创建包含空值的数组值。
数据类型 默认值 设置分类
boolean on master;session;reload

backslash_quote


这个参数控制字符串文本中的单引号是否能够用 \' 来表示。

  • 首选的 SQL 标准的方法是将其双写(''),但是也接受 \'
  • 不过使用 \' 容易导致安全风险,因为在某些客户端字符集编码中,有多字节字符的最后一个字节在数值上等价于 ASCII 的 \'。如果客户端代码没有做到正确转义,那么将会导致 SQL 注入攻击。如果服务器拒绝看起来带有被反斜线转义的单引号的查询,那么就可以避免这种风险。
  • 此参数的可用值是 on(总是允许 \')、off(总是拒绝)以及 safe_encoding(只有客户端编码不允许在多字节字符中存在 ASCII \ 时允许)。
  • 注意:在符合标准的字符串文本中,\ 就表示 \。这个参数只影响不符合标准的文本的处理,包括转义字符串语法(E'...')。
数据类型 默认值 设置分类
enum safe_encoding master;session;reload

escape_string_warning


此参数打开时,如果在普通字符串文本中('...' 语法)出现了 一个反斜线(\)并且standard_conforming_strings 为关闭,那么就会发出一个警告。

  • 使用反斜线作为转义符的应用应该考虑使用转义字符串语法(E'...'),因为在 SQL 标准中普通字符串的默认行为是将反斜线视作一个普通字符。
  • 这个变量可以被启用来帮助定位需要被更改的代码。
数据类型 默认值 设置分类
boolean on master;session;reload

lo_compat_privileges


为了和以前的版本兼容,把这个变量设置为 on 可以禁用这种新的特权检查。

  • 大对象不具有访问特权,因此总是所有用户可读可写的。
  • 设置这个参数不会禁用所有与大对象相关的安全检查。
数据类型 默认值 设置分类
boolean off segments;session;reload;superuser

operator_precedence_warning


当开启此参数时,对于任何从 PostgreSQL 9.4 以来由于操作符优先级变化而导致含义改变的结构,解析器将发出一个警告。

  • 这有助于审计应用,以检查是否优先级变化破坏了什么东西。但是它的本意并不是希望在生产环境中保持打开,因为它会对某些完全合法、兼容标准的 SQL 代码发出警告。
数据类型 默认值 设置分类
boolean off segments;session;reload

quote_all_identifiers


当数据库产生 SQL 时,强制所有标识符被引号包围,即使它们(当前)不是关键字。

  • 这将影响 EXPLAIN 的输出以及 pg_get_viewdef 等函数的结果。另见 pg_dumppg_dumpall--quote-all-identifiers 选项。
数据类型 默认值 设置分类
boolean off segments;session;reload

standard_conforming_strings


控制普通字符串文本('...')是否按照 SQL 标准把反斜线当普通文本。

  • 默认值为 on(之前的发行中默认值为 off)。
  • 应用可以检查这个参数来判断字符串文本将被如何处理。
  • 这个参数的存在是转义字符串语法(E'...')被支持的标志。如果一个应用希望反斜线被当做转义字符,应该使用转义字符串语法。
数据类型 默认值 设置分类
boolean on master;session;reload

synchronize_seqscans


它允许对大型表的顺序扫描与其他扫描同步,因此并发扫描可以在几乎相同的时刻读取相同的块,这样可以分担 I/O 负载。

  • 当启用这个参数时,一个扫描可能会从表的中间开始并且之后“绕回”到开头以覆盖所有的行,这样可以与已在进行中的扫描活动同步。
  • 对于没有 ORDER BY 子句的查询来,这样的扫描会在返回行的顺序中造成不可预料的改变。
数据类型 默认值 设置分类
boolean on segments;session;reload

gp_debug_add_path


是否允许路径调试信息添加到 YMatrix 数据库中。

  • 此参数主要用于优化器的调试,启用它会将优化器考虑的所有路径信息均打印出来,红色表示没有采用,绿色表示采用。
数据类型 默认值 设置分类
boolean off master;session;reload


其他平台与客户端

transform_null_equals


当打开此参数时,形为 expr = NULL(或 NULL = expr)的表达式将被当做 expr IS NULL,也就是说,如果 expr 得出空值值则返回真,否则返回假。

  • 正确的 SQL 标准兼容的 expr = NULL 行为总是返回空(未知)。因此这个参数默认为 off
  • 不过,在 Microsoft Access 里的过滤表单生成的查询似乎使用 expr = NULL 来测试空值,因此,如果你使用这个接口访问数据库,你可以将此选项打开。
  • 由于 expr = NULL 形式的表达式总是返回空值(使用 SQL 标准解释)。它们不是非常有用并且在普通应用中也不常见,在应用中也不常见,因此这个选项实际上没有什么危害。但是新用户常常对涉及空值的表达式的语义上感到困惑,因此这个选项默认为关闭。
  • 请注意这个选项只影响 = NULL 形式,而不影响其它比较操作符或者其它与一些涉及等值操作符的表达式在计算上等效的其他表达式(例如 IN)。因此,这个选项不是劣质程序的一般修复。
数据类型 默认值 设置分类
boolean off master;session;reload