17.12. 版本和平台兼容性

17.12.1. 以前的 PostgreSQL 版本

add_missing_from (boolean)

如果为开,查询引用的表将自动增加到 FROM 里 -如果还没有出现这个子句的话。 这个行为不是 SQL 的标准,并且很多人不喜欢它, 因为它会隐藏错误(比如该引用别名的时候引用了表名)。 缺省是 off。这个变量可以设置为开以便和 8.1 之前的 PostgreSQL 版本兼容,因为那些版本的行为是缺省允许。

请注意,即使打开了这个变量,那么查询每次隐含地 FROM 项引用也都会触发一个警号信息。 我们鼓励用户更新他们的应用,不要依赖这个行为, 方法是在查询的 FROM 子句(或者是它的 USING 子句,如果是 DELETE 的话)里添加所有查询需要的表引用。

regex_flavor (string)

正则表达式"风味"可以设置为 advancedextended, 或者 basic。通常的缺省是 advancedextended 设置对于和 7.4 以前的 PostgreSQL 精确的向下兼容很有用。 参阅 Section 9.7.3.1 获取细节。

sql_inheritance (boolean)

这个选项控制继承语义,尤其是在缺省时是否在各种命令里把子表包括进来。 版本 7.1 以前是不包括的。如果你需要老特性,你可以把这个变量设为 off, 但是从长远看来,我们建议你修改你的应用以使用 ONLY 关键字来排除子表。 参考 Section 5.8 获取关于继承的更多信息。

default_with_oids (boolean)

如果既没有声明 WITH OIDS,又没有声明 WITHOUT OIDS, 那么这个选项控制 CREATE TABLECREATE TABLE AS 是否在新创建的表中包含一个 OID 字段。它还决定 SELECT INTO 创建的表里面是否包含 OID。 在 PostgreSQL 8.1 default_with_oids 缺省为假。 以前版本的 PostgreSQL,它的缺省为打开。

在用户表中使用 OID 被认为是废弃了,因此大多数安装应该关闭这个变量。 特定的需要 OID 的表应该在创建表的时候声明 WITH OIDS。 为了兼容不遵循这个特性的旧应用,这个变量可以为之打开。

escape_string_warning (boolean)

打开的时候,如果在普通的字串文本里('...' 语法)出现了一个反斜扛 (\),那么就会发出一个警告。 缺省是 off

应该使用逃逸字串语法(E'...')来做逃逸, 因为在将来的 PostgreSQL 版本里, 普通的字串对待反斜扛文本的行为将是标准兼容的。

17.12.2. 平台和客户端兼容性

transform_null_equals (boolean)

如果打开,那么下面这样的表达式 expr = NULL (或者 NULL = expr)被当做 expr IS NULL,处理,也就是说, 如果 expr 得出 NULL 值则返回真,否则返回假。 expr = NULL 正确的 SQL 标准兼容的行为总是返回 NULL(未知)。 因此这个选项缺省时是 off

不过,在Microsoft Access里的过滤表单生成的查询好像使用的是 expr = NULL 测试空值, 因此,如果你使用这个界面访问数据库,你可能想把这个选项打开。 因为形如 expr = NULL 的表达式总是返回 NULL (使用正确的代换),因此它们并不常用, 而且在一般的应用中也不常见,因此这个选项实际上没有什么害处。 但是新用户常常在涉及 NULL 的表达式语义上感到胡涂,因此缺省时不打开这个选项。

请注意这个选项只影响 = NULL 形式, 不包括其它比较操作符或者其它与一些涉及等号操作符的表达式计算(比如 IN)。 因此,这个选项不是垃圾程序的狗皮膏药。

请参考 Section 9.2 获取相关信息。