文档版本比较
POSTGRESQL · VERSION COMPARE
PostgreSQL 13.10 发布变化
此版本的完整功能、修复与兼容性说明,以及其他版本的关联记录。
包括起始版本之后至目标版本的变化。大版本号表示该分支的首个版本。
从数据库输出识别起始版本
完整发布变化
13.10
2023-02-09
13.10stable支持截止 2025-11-13
安全变化
| CVE / 问题 | 严重程度 | 修复版本 | 所选版本状态 |
|---|---|---|---|
| CVE-2022-41862 libpq 在 GSSAPI 传输加密初始化失败后可能泄漏内存内容 | 13.10 | 已记录修复 |
PostgreSQL 13.10
迁移与兼容性
对于运行 13.X 的用户,不需要执行导出/恢复。
但是,如果是从早于 13.7 的版本升级,请参见第 E.17 节。
安全libpq 在 GSSAPI 传输加密初始化失败后可能泄漏内存内容
变更
libpq 在 GSSAPI 传输加密初始化失败后可能泄漏内存内容(Jacob Champion)§
一个被修改的服务器,或未经身份验证的中间人,可以在建立 GSSAPI(Kerberos)传输加密期间发送一个非零终止的错误消息。 libpq 随后会复制该字符串以及应用程序内存中直到下一个零字节的后续字节到其错误报告中。根据调用应用程序对错误报告的处理方式,这可能导致应用程序内存内容的泄露。由于读取超出内存末尾,还有很小的概率导致崩溃。修复方法是正确地对服务器消息进行零终止处理。(CVE-2022-41862)
问题修复修复在对分区表或继承树执行 UPDATE 时,计算子表中哪些 GENERATED 列需要更新的问题
改进允许在尚未(完全)有效的索引上设置 REPLICA IDENTITY
变更
允许在尚未(完全)有效的索引上设置 REPLICA IDENTITY(Tom Lane)§
当 pg_dump 导出一个标记了 REPLICA IDENTITY 的分区索引时,它生成的命令序列会在分区索引被标记为有效之前应用 REPLICA IDENTITY,导致恢复失败。似乎没有很好的理由禁止按此顺序操作,因此允许这样做。在索引变为有效之前,该标记不会产生任何效果。
问题修复修复在规则中从多行 VALUES 列表执行 INSERT 时对 DEFAULT 标记的处理
变更
修复在规则中从多行 VALUES 列表执行 INSERT 时对 DEFAULT 标记的处理(Dean Rasheed)§
在某些情况下,DEFAULT 标记不会被替换为正确的默认值表达式,导致 “unrecognized node type” 错误。
改进拒绝在 jsonpath 存在性检查中使用未定义的变量
变更
拒绝在 jsonpath 存在性检查中使用未定义的变量(Alexander Korotkov,David G. Johnston)§
虽然 jsonpath 匹配操作符对路径模式中的未定义变量会抛出错误,但存在性操作符却默默地将其视为匹配。
问题修复修复并行哈希连接中的边界情况数据损坏问题
变更
修复并行哈希连接中的边界情况数据损坏问题(Dmitry Astapov)§
如果正在写入临时文件的大元组的最后一个块恰好是 32760 字节,由于栅栏柱错误会导致数据损坏。查询通常会在稍后以数据损坏的症状而失败。
改进遵循 checkpoint_completion_target 的非默认设置
变更
遵循 checkpoint_completion_target 的非默认设置(Bharath Rupireddy)§
在 checkpoint_completion_target 更改后,内部状态未被更新,可能导致检查点 I/O 执行得比预期更快或更慢,特别是在动态更改该设置时。
问题修复在 recovery_target_xid 模式下记录正确的结束时间戳
变更
在 recovery_target_xid 模式下记录正确的结束时间戳(Tom Lane)§
当基于 recovery_target_xid 设置且 recovery_target_inclusive = off 结束恢复时,我们在 “recovery stopping before ... transaction” 日志消息中打印了一个不正确的时间戳(始终为 2000-01-01)。
改进改进某些缓冲文件读取失败的错误报告
变更
改进某些缓冲文件读取失败的错误报告(Peter Eisentraut)§
正确报告短读取,给出期望的字节数和实际读取的字节数,而不是报告一个不相关的错误代码。大多数地方已经正确处理了此问题,但一些最近编写的复制逻辑没有。
改进防止 VACUUM 结束时出现 “wrong tuple length” 错误
变更
防止 VACUUM 结束时出现 “wrong tuple length” 错误(Ashwin Agrawal,Junfeng Yang)§
如果 VACUUM 需要更新当前数据库的 datfrozenxid 值,而数据库被授予的权限很多,以至于其 datacl 值已被移到行外存储,就会发生这种情况。
改进在扩展查询协议中,如果我们正在运行管道,避免在 ANALYZE 之后立即提交
变更
在扩展查询协议中,如果我们正在运行管道,避免在 ANALYZE 之后立即提交(Tom Lane)§
如果没有显式的 BEGIN TRANSACTION,ANALYZE 会自行提交,但这在管道化的命令序列中不应该发生。
改进拒绝长度错误的取消请求包
变更
拒绝长度错误的取消请求包(Andrey Borodin)§
即使取消请求的长度字段过小,服务器也会处理该请求。这导致读取超出已分配缓冲区的末尾。理论上这可能导致段错误,但在实际中不太可能发生,因为缓冲区需要非常接近内存末尾才会出现。更可能的结果是关于错误后端 PID 或取消码的虚假日志消息。改为对错误的长度发出报告。
改进在子查询提升中增加递归和循环防护
变更
在子查询提升中增加递归和循环防护(Tom Lane)§
一个精心构造的查询可能导致深度递归和过多的时间用于尝试展平子查询。一个正确的修复对于后移来说过于侵入性,但至少我们可以增加堆栈深度检查和中断检查以允许取消查询。
问题修复修复按分区连接代码以容忍无法为每个分区生成计划的情况
变更
修复按分区连接代码以容忍无法为每个分区生成计划的情况(Tom Lane)§
这可能导致 “could not devise a query plan for the given query” 错误。
改进限制 get_actual_variable_range 执行的清理工作量
变更
限制 get_actual_variable_range 执行的清理工作量(Simon Riggs)§
在删除大量出现在索引末尾的元组之后立即进行的规划器运行,可能会花费大量工作来设置那些索引条目的 “killed” 位。通过在检查 100 个堆页面后放弃此过程来限制任何一次查询中的工作量。所有清理工作最终仍会完成,但不会出现如此大的性能波动。
改进确保在执行短语匹配时可以取消全文检索查询的执行
变更
确保在执行短语匹配时可以取消全文检索查询的执行(Tom Lane)§
问题修复修复在使用非确定性排序规则对字符串进行 hash 运算时的内存泄漏
变更
修复在使用非确定性排序规则对字符串进行 hash 运算时的内存泄漏(Jeff Davis)§
改进在复制连接尝试失败后清理 libpq 连接对象
变更
在复制连接尝试失败后清理 libpq 连接对象(Andres Freund)§
之前的代码泄漏了连接对象。在后台代码路径中这基本无害,因为调用进程会放弃并退出。但在诸如 CREATE SUBSCRIPTION 等命令中,此类失败会导致少量会话生命周期的内存泄漏。
改进在热备服务器中,减少跟踪主库上已知活跃 XID 的处理开销
变更
在热备服务器中,减少跟踪主库上已知活跃 XID 的处理开销(Simon Riggs,Michail Nikolaev)§
对 KnownAssignedXids 数组清理不够积极可能导致性能下降,特别是在备库上 max_connections 设置较大时。
改进在确定最旧的目录 xmin 时忽略已失效的逻辑复制槽
变更
在确定最旧的目录 xmin 时忽略已失效的逻辑复制槽(Sirisha Chamarthi)§
复制槽即使在因超过 max_slot_wal_keep_size 而变为失效之后,仍可能阻止系统目录中死元组的清理。因此,复制消费者的故障可能导致无限增长的目录膨胀。
问题修复修复逻辑解码中未初始化内存的使用
变更
修复逻辑解码中未初始化内存的使用(Masahiko Sawada)§
在某些情况下,逻辑解码的恢复可能会尝试重用已经释放的 XID 数据,导致不可预测的行为。
改进避免在 WAL 重放 hash 索引页面分裂操作期间出现罕见的 “failed to acquire cleanup lock” 恐慌
变更
避免在 WAL 重放 hash 索引页面分裂操作期间出现罕见的 “failed to acquire cleanup lock” 恐慌(Robert Haas)§
关联记录 (4)
- 相同变化PostgreSQL 15.2 · 避免在 WAL 重放 hash 索引页面分裂操作期间出现罕见的 “failed to acquire cleanup lock” 恐慌
- 相同变化PostgreSQL 14.7 · 避免在 WAL 重放 hash 索引页面分裂操作期间出现罕见的 “failed to acquire cleanup lock” 恐慌
- 相同变化PostgreSQL 12.14 · 避免在 WAL 重放 hash 索引页面分裂操作期间出现罕见的 “failed to acquire cleanup lock” 恐慌
- 相同变化PostgreSQL 11.19 · 避免在 WAL 重放 hash 索引页面分裂操作期间出现罕见的 “failed to acquire cleanup lock” 恐慌
改进在 WAL 重放期间设置堆页面的 all-visible 位时推进页面的 LSN
变更
在 WAL 重放期间设置堆页面的 all-visible 位时推进页面的 LSN(Jeff Davis)§
未能这样做会导致备库上的页面可能与主库不同,并违反了关于 LSN 何时更改的其他预期。就 PostgreSQL 本身而言,这似乎只是一个理论上的隐患,但可能影响第三方工具。
改进防止不安全地使用关系缓存条目的 rd_smgr 指针
变更
防止不安全地使用关系缓存条目的 rd_smgr 指针(Amul Sul)§
移除各种假设 rd_smgr 在一系列操作中始终有效的假定,通过将所有使用包装在一个函数中,在需要时重新计算。这防止了在一系列操作中途发生意外缓存刷新时出现的错误。
问题修复修复 WaitEventSet 逻辑中的潜在缓冲区溢出问题
变更
修复 WaitEventSet 逻辑中的潜在缓冲区溢出问题(Thomas Munro)§
基于 epoll 和 kqueue 的实现,在其内部缓冲区大小与调用者输出缓冲区大小不同时,可能向内核请求过多的事件。该情况在已发布的 PostgreSQL 版本中尚未出现,但此错误对外部模块和未来的错误修复构成隐患。
改进避免在 32 位构建中访问共享内存时出现名义上的未定义行为
变更
避免在 32 位构建中访问共享内存时出现名义上的未定义行为(Andres Freund)§
clang 的未定义行为检测器对使用对齐不足的指针发出了警告。这在非调试构建中不太可能造成问题,但为了测试目的值得修复。
改进移除无用的 RESULT-RTE 优化逻辑中的错误断言
变更
移除无用的 RESULT-RTE 优化逻辑中的错误断言(Tom Lane)§
问题修复修复 ACL 检查中缓存查找失败消息的复制粘贴错误
变更
修复 ACL 检查中缓存查找失败消息的复制粘贴错误(Justin Pryzby)§
原则上这些错误应该永远不会触发。但如果触发了,其中一些会报告错误类型的对象。
改进在 pg_dump 中,避免在获取要检查的表的锁之前调用不安全的服务器函数
问题修复修复 ALTER FUNCTION/PROCEDURE/ROUTINE ... SET SCHEMA 的 Tab 补全
变更
修复 ALTER FUNCTION/PROCEDURE/ROUTINE ... SET SCHEMA 的 Tab 补全(Dean Rasheed)§
关联记录 (4)
- 相同变化PostgreSQL 15.2 · 修复 ALTER FUNCTION/PROCEDURE/ROUTINE ... SET SCHEMA 的 Tab 补全
- 相同变化PostgreSQL 14.7 · 修复 ALTER FUNCTION/PROCEDURE/ROUTINE ... SET SCHEMA 的 Tab 补全
- 相同变化PostgreSQL 12.14 · 修复 ALTER FUNCTION/PROCEDURE/ROUTINE ... SET SCHEMA 的 Tab 补全
- 相同变化PostgreSQL 11.19 · 修复 ALTER FUNCTION/PROCEDURE/ROUTINE ... SET SCHEMA 的 Tab 补全
问题修复修复 contrib/seg 在输入数字超过 127 位时不再崩溃或输出垃圾数据
变更
修复 contrib/seg 在输入数字超过 127 位时不再崩溃或输出垃圾数据(Tom Lane)§
改进在 contrib/sepgsql 中,避免较新版本的 libselinux 产生弃用警告
变更
在 contrib/sepgsql 中,避免较新版本的 libselinux 产生弃用警告(Michael Paquier)§
问题修复修复在 Microsoft Visual Studio 2013 上的构建问题
变更
修复在 Microsoft Visual Studio 2013 上的构建问题(Tom Lane)§
之前的补丁假设所有相关平台都有 snprintf(),但 MSVC 2013 还不完全支持。在该平台上回退使用 sprintf()。
问题修复修复在使用 Strawberry Perl 时用 MSVC 构建 PL/Perl 的编译失败问题
变更
修复在使用 Strawberry Perl 时用 MSVC 构建 PL/Perl 的编译失败问题(Andrew Dunstan)§
问题修复修复用 MSVC 构建的 PL/Perl 与用 gcc 构建的 Perl 库之间的不匹配问题
变更
修复用 MSVC 构建的 PL/Perl 与用 gcc 构建的 Perl 库之间的不匹配问题(Andrew Dunstan)§
此类组合之前可能导致 “loadable library and perl binaries are mismatched” 错误。
改进抑制来自 Perl 头文件的编译器警告
变更
抑制来自 Perl 头文件的编译器警告(Andres Freund)§
我们首选的编译器选项会对 Perl 头文件最近版本中出现的构造引发警告。在使用 gcc 时,我们可以用 pragma 来抑制这些警告。
问题修复修复 pg_waldump 使其在不丢弃未使用的 static-inline 函数的编译器上可以构建
变更
修复 pg_waldump 使其在不丢弃未使用的 static-inline 函数的编译器上可以构建(Tom Lane)§
改进将时区数据文件更新为 tzdata 2022g 版本,包含格陵兰和墨西哥的夏令时法规变更,以及加拿大北部、哥伦比亚和新加坡的历史修正。
变更
将时区数据文件更新为 tzdata 2022g 版本,包含格陵兰和墨西哥的夏令时法规变更,以及加拿大北部、哥伦比亚和新加坡的历史修正。(Tom Lane)§
值得注意的是,一个新的时区 America/Ciudad_Juarez 从 America/Ojinaga 中分离出来。
关联记录 (4)
- 相同变化PostgreSQL 15.2 · 将时区数据文件更新为 tzdata 2022g 版本,包含格陵兰和墨西哥的夏令时法规变更,以及加拿大北部、哥伦比亚和新加坡的历史修正。
- 相同变化PostgreSQL 14.7 · 将时区数据文件更新为 tzdata 2022g 版本,包含格陵兰和墨西哥的夏令时法规变更,以及加拿大北部、哥伦比亚和新加坡的历史修正。
- 相同变化PostgreSQL 12.14 · 将时区数据文件更新为 tzdata 2022g 版本,包含格陵兰和墨西哥的夏令时法规变更,以及加拿大北部、哥伦比亚和新加坡的历史修正。
- 相同变化PostgreSQL 11.19 · 将时区数据文件更新到 tzdata 2022g 版,以反映格陵兰和墨西哥的夏令时法规变更,并修正加拿大北部、哥伦比亚和新加坡的历史数据。
没有匹配的变化
尝试其他关键词,或 .
如何生成比较结果?
比较依据起始版本之后至目标版本的 PostgreSQL 发布说明。经核实的回补重复项会谨慎合并,保留每条原始说明;相关提交可能涉及独立变化,仍作为不同记录保留。
发布快照: 2026-09-26 · 安全快照: 2026-09-26
内容来自 PostgreSQL 发布说明。交互方式参考 pgversions.com 与 pgversionreport.