跳转到主要内容

operator_precedence_warning

operator_precedence_warning:对自 PostgreSQL 9.4 起含义发生变化的表达式发出警告。实测在档范围为 PG9.5–13;最后在档的 PG13 启动默认值为 off,context 为 user。它在 PG14 被移除。
说明

Fact — 官方简述译文:对自 PostgreSQL 9.4 起含义发生变化的表达式发出警告。

身份

类型 , bool
上游 pg_settings 类型
Context , user
普通用户可在运行时修改
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Version and Platform Compatibility / Previous PostgreSQL Versions
上游分类
最后 boot 值 , off
off

生命周期

Fact
首次观测 PG9.5
在档版本 PG9.5–13
移除版本 PG14
引入提交 c6b3c939b7e0 — Make operator precedence follow the SQL standard more closely.
提交日期 2015-03-11
Discussion

默认值变迁

PG9.0–19 Beta 3 实测 boot 默认值
版本 原始 boot_val 单位 人类可读值
PG9.5–13 off off

机制详解

对自 PostgreSQL 9.4 起含义发生变化的表达式发出警告。该参数在 PG13 仍存在,并从 PG14 起不再被识别。PostgreSQL 14 移除了这一迁移警告;应给有歧义的表达式显式加括号,并在目标版本上测试。

它曾为 PostgreSQL 9.5 改变结合规则的表达式发出迁移警告,并不会恢复旧优先级。参数移除后,可靠方案是显式括号与回归测试。

升级前应联合检查 default_with_oids、lo_compat_privileges、synchronize_seqscans,从配置、ALTER SYSTEM、角色/数据库设置和自动化模板中删除旧名,并先验证替代机制再启动 PG14+。

调优建议

提示

Advice。 以下建议是工作负载起点,必须用真实测量验证。

场景 建议
OLTP 不要在 PG14+ 调优或继续下发 operator_precedence_warning。PostgreSQL 14 移除了这一迁移警告;应给有歧义的表达式显式加括号,并在目标版本上测试。升级前扫描所有配置层并做业务回归。
OLAP 迁移方案与 OLTP 相同;另外在长批处理、备库或大对象/扩展工作流中验证新机制,不要假定删除旧开关会保留旧行为。
小规格 直接删除旧配置并采用受支持替代项;若没有真实兼容需求,不要用脚本伪造旧行为。

Pigsty 取值

以下值来自固定 8 核、32 GiB、100 GiB SSD 夹具,并按 PG13 渲染当前 Pigsty 模板;这不表示 Pigsty 当前支持该历史或测试版本。

模板 有效值 与上游 boot 比较 源表达式
OLTP 未修改
OLAP 未修改
CRIT 未修改
TINY 未修改
注意

Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG9.5–13 未修改;OLAP: PG9.5–13 未修改;CRIT: PG9.5–13 未修改;TINY: PG9.5–13 未修改。 未发现覆盖值,因此不推断 Pigsty 专属理由。

常见坑

  • 在 PG14+ 配置中继续下发未知参数 operator_precedence_warning。
  • 只删除参数名,却未迁移依赖它的应用行为。
  • 把历史默认值当作新版本替代机制的默认值。
  • 遗漏 ALTER SYSTEM、角色/数据库设置或自动化模板中的旧条目。

default_with_oids · lo_compat_privileges · synchronize_seqscans · standard_conforming_strings · array_nulls · backslash_quote

参考资料