↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

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

文档版本对比

POSTGRESQL · VERSION COMPARE

PostgreSQL 18.1 的版本变更

本次发布的完整功能、修复与兼容性说明,以及它们在其他版本中的关联记录。

查看该版本全部变更
查看该版本全部变更

从起始版本之后,看到目标版本为止。大版本名称代表该系列首个正式版本。

收录 PostgreSQL 9.0 起的 17 个大版本、352 份发布说明;数据更新于 2026-09-26。

本次发布的全部变更

18.1

2025-11-13

导出 JSON
53项变更功能、修复与改进
1次版本发布按发行版本归档
2个 CVE本版说明中提及的漏洞编号

18.1 受支持版本维护截止 2030-11-14

本版提及的安全记录 2 个 CVE
本版发布说明提及的 CVE,可能包含已有漏洞的后续修复
CVE / 问题严重程度修复版本
CVE-2025-12818

避免 libpq 中分配大小计算的整数溢出

5.918.1
CVE-2025-12817

检查 CREATE STATISTICS 中模式的 CREATE 权限

3.118.1

PostgreSQL 18.1

升级与兼容性说明

对于运行 18.X 的用户,不需要执行导出/恢复。

安全相关检查 CREATE STATISTICS 中模式的 CREATE 权限

变更

检查 CREATE STATISTICS 中模式的 CREATE 权限(Jelte Fennema-Nio)§

此遗漏允许表的所有者在任何模式中创建统计对象,可能导致意外的命名冲突。

PostgreSQL 项目感谢 Jelte Fennema-Nio 报告此问题。(CVE-2025-12817)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

安全相关避免 libpq 中分配大小计算的整数溢出

变更

避免 libpq 中分配大小计算的整数溢出(Jacob Champion)§

libpq 中有多处对内存分配所需大小的计算不够谨慎。足够大的输入可能导致整数溢出,从而分配一个不够大的缓冲区,进而导致写入超出缓冲区的末尾。

PostgreSQL 项目感谢 Positive Technologies 的 Aleksey Solovev 报告此问题。(CVE-2025-12818)

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进防止当 JSON_VALUE 等 SQL/JSON 函数的 DEFAULT 子句包含 COLLATE 表达式时出现 “unrecognized node type” 错误

变更

防止当 JSON_VALUE 等 SQL/JSON 函数的 DEFAULT 子句包含 COLLATE 表达式时出现 “unrecognized node type” 错误(Jian He)§ §

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免对带有分组集的无变量 HAVING 子句进行错误优化

变更

避免对带有分组集的无变量 HAVING 子句进行错误优化(Richard Guo)§ §

其他改进不要在哈希右半连接中使用并行

变更

不要在哈希右半连接中使用并行(Richard Guo)§

由于在更新连接的共享 hash 表时存在竞态条件,该情况无法可靠工作。

其他改进避免创建有序追加计划时可能发生的除零错误

变更

避免创建有序追加计划时可能发生的除零错误(Richard Guo)§

这种错误可能导致错误选择最便宜的路径,或导致调试构建中的断言失败。

BUG 修复修复使用支持有序访问但不支持仅索引扫描的索引类型时发生的规划器失败

变更

修复使用支持有序访问但不支持仅索引扫描的索引类型时发生的规划器失败(Maxime Schoemans)§

这一疏漏会导致 “no data returned for index-only scan” 等错误。任何核心内置索引类型都不会出现这种情况,但一些扩展遇到了此问题。

其他改进移除 B-树索引清理中的错误断言

变更

移除 B-树索引清理中的错误断言(Peter Geoghegan)§

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免并行 GIN 索引构建期间可能发生的内存不足或 “invalid memory alloc request size” 失败

变更

避免并行 GIN 索引构建期间可能发生的内存不足或 “invalid memory alloc request size” 失败(Tomas Vondra)§

其他改进确保 BRIN 自动汇总为需要快照的索引表达式提供快照

变更

确保 BRIN 自动汇总为需要快照的索引表达式提供快照(Álvaro Herrera)§ §

以前,此类索引的自动汇总会失败,然后留下占位索引元组,导致索引随时间膨胀。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复当表接近 232 页时 BRIN 索引扫描中的整数溢出风险

变更

修复当表接近 232 页时 BRIN 索引扫描中的整数溢出风险(Sunil S)§

此疏忽可能导致无限循环或扫描不需要的表页面。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 JIT 生成的元组解构代码中存储值的错误零扩展问题

变更

修复 JIT 生成的元组解构代码中存储值的错误零扩展问题(David Rowley)§

不使用 JIT 时,等效代码执行的是符号扩展而非零扩展,导致小整数数据类型的 Datum 表示不同。这种不一致在大多数情况下被掩盖了,但已知在使用 Memoize 计划节点时会导致 “could not find memoization table entry” 错误,还可能存在其他症状。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复处理带 hash 的 GROUPING SETS 查询时罕见的崩溃

变更

修复处理带 hash 的 GROUPING SETS 查询时罕见的崩溃(David Rowley)§

BUG 修复修复哈希连接中有误的 hash 表大小选择逻辑

变更

修复哈希连接中有误的 hash 表大小选择逻辑(Tomas Vondra)§

哈希连接有时会使用比预期更多的内存,或者未能以高效的方式划分这些内存。

其他改进改进统计信息操纵函数中的关系查找逻辑

变更

改进统计信息操纵函数中的关系查找逻辑(Nathan Bossart)§ §

修复 pg_restore_relation_stats()、pg_clear_relation_stats()、pg_restore_attribute_stats() 和 pg_clear_attribute_stats(),使其在获取目标关系锁之前而不是之后检查权限。

BUG 修复修复触发器结果关系信息缓存的错误逻辑

变更

修复触发器结果关系信息缓存的错误逻辑(David Rowley,Amit Langote)§

在分区的列集与其父分区表的列集在物理上不完全相同的情况下,此疏忽可能导致崩溃。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复在分区表上执行 EvalPlanQual 重新检查期间发生的崩溃

变更

修复在分区表上执行 EvalPlanQual 重新检查期间发生的崩溃(David Rowley、Amit Langote)§

BUG 修复修复没有准备替代本地连接计划用于 EPQ 的外部或自定义连接的 EvalPlanQual 处理

变更

修复没有准备替代本地连接计划用于 EPQ 的外部或自定义连接的 EvalPlanQual 处理(Masahiko Sawada,Etsuro Fujita)§

在这种情况下,应该正常调用外部或自定义访问方法,但之前并未发生,通常会导致崩溃。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免在 DETACH CONCURRENTLY 期间重复 hash 分区约束

变更

避免在 DETACH CONCURRENTLY 期间重复 hash 分区约束(Haiyang Li)§

ALTER TABLE DETACH PARTITION CONCURRENTLY 被编写为向现已分离的分区添加分区约束的副本。这是不恰当的,部分原因是非并发 DETACH 不会这样做,但主要原因是在 hash 分区的情况下,约束表达式包含对父表 OID 的引用。这在导出/恢复期间,或在 DETACH 之后父表被删除时会导致问题。在 v19 及更高版本中,我们将不再创建任何此类约束副本。在已发布的分支中,为了最大限度地降低不可预见后果的风险,仅在 hash 分区的情况下跳过添加复制约束。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进禁止在分区键中使用生成列

变更

禁止在分区键中使用生成列(Jian He,Ashutosh Bapat)§

这本来已经不被允许,但检查遗漏了一些情况,例如列引用隐含在整行引用中的情况。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进禁止在 COPY ... FROM ... WHERE 子句中使用生成列

变更

禁止在 COPY ... FROM ... WHERE 子句中使用生成列(Peter Eisentraut,Jian He)§

以前,尝试引用此类列会导致不正确的行为或晦涩的错误消息,因为在执行 WHERE 过滤时生成列尚未计算。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进如果某列带有标记为无效的非空约束,则禁止将其设置为 identity 列

变更

如果某列带有标记为无效的非空约束,则禁止将其设置为 identity 列(Jian He)§

identity 列必须是非空的,但先前的检查漏掉了这一边界情况。

其他改进避免并行清理中潜在的释放后使用问题

变更

避免并行清理中潜在的释放后使用问题(Kevin Oommen Anish)§

该缺陷在标准构建中似乎没有实际后果,但理论上仍存在风险。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_temp 中统计对象的可见性检查

变更

修复 pg_temp 中统计对象的可见性检查(Noah Misch)§

位于临时模式中的统计对象如果不加模式限定就无法命名,但 pg_statistics_obj_is_visible() 遗漏了这一点,可能无论如何都返回 “true”。反过来,像 pg_describe_object() 这样的函数可能无法按预期对对象名称进行模式限定。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 WAL 重放数据库创建过程中的轻微内存泄漏

变更

修复 WAL 重放数据库创建过程中的轻微内存泄漏(Nathan Bossart)§

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_stat_replication 视图中复制延迟的错误报告

变更

修复 pg_stat_replication 视图中复制延迟的错误报告(Fujii Masao)§

如果任何备库的重放 LSN 停止前进,write_lag 和 flush_lag 列最终将停止更新。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免关于无效 primary_slot_name 设置的重复日志消息

变更

避免关于无效 primary_slot_name 设置的重复日志消息(Fujii Masao)§

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进当 synchronized_standby_slots 引用了不存在的复制槽时,避免发生故障

变更

当 synchronized_standby_slots 引用了不存在的复制槽时,避免发生故障(Shlok Kyal)§

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在写入复制槽状态到磁盘失败后删除未完成的槽状态文件

变更

在写入复制槽状态到磁盘失败后删除未完成的槽状态文件(Michael Paquier)§

以前,磁盘空间不足等失败会留下一个临时 state.tmp 文件。这是有问题的,因为它会阻止所有后续写入状态的尝试,需要手动干预来清理。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复逻辑复制并行应用工作进程中锁超时信号的错误处理

变更

修复逻辑复制并行应用工作进程中锁超时信号的错误处理(Hayato Kuroda)§

同一个信号编号被同时用于工作进程关闭和锁超时,导致混淆。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免从流式传输切换到归档 WAL 源时不必要的 WAL 接收进程关闭

变更

避免从流式传输切换到归档 WAL 源时不必要的 WAL 接收进程关闭(Xuneng Zhou)§

在时间线切换期间,备库的 WAL 接收进程应保持活动状态,等待新的 WAL 流式传输起始点。相反,它反复关闭并立即重新启动,这可能会混淆状态监控代码。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pgoutput 逻辑解码插件维护的关系同步缓存中的释放后使用问题

变更

修复 pgoutput 逻辑解码插件维护的关系同步缓存中的释放后使用问题(Vignesh C,Masahiko Sawada)§

逻辑解码期间的错误可能导致同一会话中后续逻辑解码尝试崩溃。此情况仅在通过 SQL 函数调用 pgoutput 时可以触发。

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免不必要地失效逻辑复制槽

变更

避免不必要地失效逻辑复制槽(Bertrand Drouvot)§

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在区域设置中恢复对 C 排序规则的特殊处理

变更

在区域设置中恢复对 C 排序规则的特殊处理(Jeff Davis)§

这修复了后端启动早期、尚未选择数据库之前访问共享系统目录时的一个回归问题。目前尚未发现这会影响 PostgreSQL 核心代码,但某些扩展已因此失效。

BUG 修复修复关于检查用户是否具有 Windows 管理员权限时失败消息的错误打印

变更

修复关于检查用户是否具有 Windows 管理员权限时失败消息的错误打印(Bryan Green)§

此代码本来会崩溃或至少打印乱码。但没有此类情况被报告过,这表明这些系统调用的失败极为罕见。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复避免在使用某些 libsanitizer 选项测试 PostgreSQL 时崩溃

变更

避免在使用某些 libsanitizer 选项测试 PostgreSQL 时崩溃(Emmanuel Sibi,Jacob Champion)§

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 64 位 Windows 调试构建中虚假的内存上下文检查警告

变更

修复 64 位 Windows 调试构建中虚假的内存上下文检查警告(David Rowley)§

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进正确处理 PL/pgSQL 赋值语句中的 GROUP BY DISTINCT

变更

正确处理 PL/pgSQL 赋值语句中的 GROUP BY DISTINCT(Tom Lane)§

解析器在此上下文中未能记录 DISTINCT 选项,导致命令的行为就像是普通的 GROUP BY。

关联记录(4)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复避免在 PL/Python 中处理 SQL 错误时泄漏内存

变更

避免在 PL/Python 中处理 SQL 错误时泄漏内存(Tom Lane)§

这修复了在我们之前的小版本中引入的会话生命周期内存泄漏。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 libpq 在 Windows 上 GSSAPI 逻辑中处理套接字相关错误的问题

变更

修复 libpq 在 Windows 上 GSSAPI 逻辑中处理套接字相关错误的问题(Ning Wu,Tom Lane)§

使用 GSSAPI 加密/解密传输数据的代码未能正确识别连接套接字上的错误条件,因为 Windows 报告这些错误的方式与其他平台不同。这导致在 Windows 上无法建立此类连接。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复继承表列上非继承而来的非空约束的转储问题

变更

修复继承表列上非继承而来的非空约束的转储问题(Dilip Kumar)§

从早于 v18 的服务器转储时,pg_dump 未能保留这类约束。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_dump 对外键约束的排序

变更

修复 pg_dump 对外键约束的排序(Álvaro Herrera)§

确保这些数据库对象的顺序一致,如对其他对象类型所做的那样。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_dump 和 pg_restore 中数据压缩逻辑的各种错误

变更

修复 pg_dump 和 pg_restore 中数据压缩逻辑的各种错误(Daniel Gustafsson,Tom Lane)§ § §

多处缺少或不正确的错误检查,还存在会在大端硬件上出现的可移植性问题。这些问题一直未被发现,因为此代码仅用于读取目录格式导出中压缩的 TOC 文件。 pg_dump 不会生成这样的导出;该情况只有在事后手动压缩 TOC 文件时才会出现,这是一种受支持但非常罕见的操作。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pgbench 以在启动 COPY 操作时妥善报告错误并退出

变更

修复 pgbench 以在启动 COPY 操作时妥善报告错误并退出(Anthonin Bonnefoy)§

pgbench 不打算支持这种情况,但之前会进入无限循环。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pgbench 的多错误报告

变更

修复 pgbench 的多错误报告(Yugo Nagata)§

在连续两次 PQgetResult 调用都失败的情况下, pgbench 可能报告错误的错误消息。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复在 pgbench 中,修复流水线模式下关于错误的错误断言

变更

在 pgbench 中,修复流水线模式下关于错误的错误断言(Yugo Nagata)§

关联记录(3)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_combinebackup 中每个文件的内存泄漏

变更

修复 pg_combinebackup 中每个文件的内存泄漏(Tom Lane)§

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进确保 contrib/pg_buffercache 函数可以被取消

变更

确保 contrib/pg_buffercache 函数可以被取消(Satyanarayana Narlapuram,Yuhang Qiu)§ §

某些代码路径能够长时间运行而不检查中断。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 contrib/pg_prewarm 对索引的权限检查

变更

修复 contrib/pg_prewarm 对索引的权限检查(Ayush Vatsa,Nathan Bossart)§ §

pg_prewarm() 要求对要预热的关系具有 SELECT 权限。但由于索引没有自己的 SQL 权限,这导致非超级用户无法预热索引。改为检查索引所属表的 SELECT 权限。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复在 contrib/pg_stat_statements 中,避免当 SQL 语句文本中的两个或多个常量被标记为同一位置时发生崩溃

变更

在 contrib/pg_stat_statements 中,避免当 SQL 语句文本中的两个或多个常量被标记为同一位置时发生崩溃(Sami Imseih、Dmitry Dolgov)§

其他改进使 contrib/pgstattuple 更健壮地处理空页面或无效索引页面

变更

使 contrib/pgstattuple 更健壮地处理空页面或无效索引页面(Nitin Motiani)§

将全零页面计为空闲空间,并忽略根据页面特殊空间大小检查判定为无效的页面。B-树索引的代码已经将全零页面计为空闲空间,但 hash 和 gist 的代码会报告错误并退出,这被发现对用户不太友好。同样,使这三种情况在忽略损坏页面而非抛出错误方面保持一致。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进加固我们的读写屏障宏以满足 Clang 的要求

变更

加固我们的读写屏障宏以满足 Clang 的要求(Thomas Munro)§

我们假设 __atomic_thread_fence() 是防止 C 编译器在其周围重排内存访问的充分屏障,但似乎对于 Clang 来说并非如此,导致它至少为 RISC-V、MIPS 和 LoongArch 机器生成不正确的代码。添加显式编译器屏障来修复此问题。

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 PGXS 构建基础设施以支持为扩展构建 NLS po 文件

变更

修复 PGXS 构建基础设施以支持为扩展构建 NLS po 文件(Ryo Matsumura)§

关联记录(5)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

这份对比如何生成?

对比以 PostgreSQL 发行说明为依据,汇总起始版本之后、目标版本及之前的变更,支持同一大版本内的小版本更新,以及跨大版本升级。跨大版本时,旧分支的维护记录只纳入到下一大版本首次发布之日,所有记录均不晚于目标版本的发布日期。大版本名称(如 18)指首个正式版本(18.0);测试版与开发快照会单独标注。

条目正文来自本站中文手册,版本清单、条目覆盖与提交依据逐一核对上游英文原文。每条变更保留完整说明与原文链接;分类用于辅助浏览,具体影响、适用条件与升级操作请阅读条目正文和各版本的升级说明。

同一修复可能回补到多个版本分支。对比会保守合并可确认相同的条目,并保留各分支完整说明;已知由起始版本包含的修复会排除。一条说明包含多个独立修复时,只有全部已包含才排除。大版本新功能不因与旧版补丁存在提交关联而合并,不能确认相同的条目继续保留。这是发行说明的累计差异,不能覆盖二进制程序之间的每一处代码变化。

CVE 独立依据 PostgreSQL 官方安全公告与漏洞记录计算:起始版本受影响、目标版本已修复或不受影响的漏洞才计入,按编号去重。目标版本仍受影响的漏洞另行提示;安全变更条数与 CVE 数量分别统计。

交互参考 pgversions.com 与 pgversionreport,内容来自 PostgreSQL 发行说明。更多历史资料见发行说明归档。