选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

文档 / 配置参数 / 版本和平台兼容性

CONFIGURATION PARAMETER版本和平台兼容性 / 其他平台和客户端

transform_null_equals

将 expr = NULL 视为 expr IS NULL。

Treats "expr=NULL" as "expr IS NULL".

布尔 会话 引入 9.0(基线) 现存至 20 devel 0 次默认值变更

类型
布尔bool
上下文
会话任何用户都可在会话内用 SET 修改
默认值
off
引入版本
9.0(基线)
状态
现存

PostgreSQL 18 手册 官方文档

版本轨迹

相对 PostgreSQL 17 无变化。

默认值变迁

off 9.0 – 20

默认值自 PostgreSQL 9.0 起没有变过。带单位的取值换算成了可读形式,原始的 boot_val 与单位写在悬浮提示里。

手册说明

PostgreSQL 18 手册 · 19.13 版本和平台兼容性 本站手册 官方原文

当打开时,形为expr = NULL(或NULL = expr)的表达式将被当做expr IS NULL, 也就是说,如果expr得出空值值则返回真,否则返回假。正确的 SQL 标准兼容的expr = NULL行为总是返回空(未知)。因此这个参数默认为off

不过,在Microsoft Access里的过滤表单生成的查询似乎使用expr = NULL来测试空值,因此,如果你使用这个接口访问数据库,你可能想把这个选项打开。因为expr = NULL形式的表达式总是返回空值(使用 SQL 标准解释)。它们不是非常有用并且在普通应用中也不常见,在应用中也不常见,因此这个选项实际上没有什么危害。但是新用户常常对涉及 空值的表达式的语义上感到困惑,因此这个选项默认为关闭。

请注意这个选项只影响= NULL形式,而不影响其它比较操作符或者其它与一些涉及等值操作符的表达式在计算上等效的其他表达式(例如IN)。因此,这个选项不是劣质程序的一般修复。

相关信息请见Section 9.2

机制详解

将 expr = NULL 视为 expr IS NULL。它可在会话级修改,因此不同会话可能采用不同的行为。

该兼容开关改变旧客户端或旧 SQL 的解析/输出行为,而不是执行计划的常规性能旋钮。长期方案应修复客户端与 SQL,并在升级测试中移除兼容依赖。

应把 transform_null_equals 与 array_nulls、backslash_quote、escape_string_warning 一起监控和变更。先在对应角色与真实负载上验证,再按其 user context 选择会话修改、reload 或 restart;历史默认值并不等于当前有效值。

调优建议

按典型负载给出的取值思路,不是放之四海皆准的配方:实际取值要看数据量、并发度与硬件。

  • OLTP在线事务处理

    保持现代默认并修复依赖 transform_null_equals 的旧客户端/SQL;先在会话级做迁移测试,不要把兼容开关永久设为集群全局策略。

  • OLAP分析与批处理

    重点回归 ETL、生成 SQL 与旧驱动,因为它们常隐藏解析/引用假设;性能差异通常不是调该开关的理由。

  • 小规格低配实例与开发机

    没有遗留需求就保持默认。若临时启用,记录责任人、受影响连接与移除日期。

常见问题

  • 把兼容开关当作永久方案而不修复客户端。
  • 只在一个会话测试,却全局部署到所有应用。
  • 混淆解析兼容性与数据或安全兼容性。
  • 升级后忘记清理已经不需要的覆盖。

演化历史

相邻两个大版本之间的差异,新的在前。版本号链到该版的快照。

  1. PostgreSQL 20 ← 19 沿用 19

    事实沿用 19

逐版本快照

每个收录版本里的 7 项事实,与上一个存在的版本不同的格子带底色。版本号链到该版。

版本 默认值单位上下文类型最小值最大值枚举值
9.0 off 会话 布尔
9.1 off 会话 布尔
9.2 off 会话 布尔
9.3 off 会话 布尔
9.4 off 会话 布尔
9.5 off 会话 布尔
9.6 off 会话 布尔
10 off 会话 布尔
11 off 会话 布尔
12 off 会话 布尔
13 off 会话 布尔
14 off 会话 布尔
15 off 会话 布尔
16 off 会话 布尔
17 off 会话 布尔
18 off 会话 布尔
19 off 会话 布尔
20 沿用 off 会话 布尔

参考资料

同类参数

参数 类型 上下文 默认值 版本变动 最近变更
Version and Platform Compatibility 版本和平台兼容性 2 个
其他平台和客户端 2
allow_alter_system 布尔 重载生效 on
允许执行 ALTER SYSTEM 命令。 现存
transform_null_equals 布尔 会话 off
将 expr = NULL 视为 expr IS NULL。 现存