文档版本比较
POSTGRESQL · VERSION COMPARE
PostgreSQL 13.14 发布变化
此版本的完整功能、修复与兼容性说明,以及其他版本的关联记录。
包括起始版本之后至目标版本的变化。大版本号表示该分支的首个版本。
从数据库输出识别起始版本
完整发布变化
13.14
2024-02-08
13.14stable支持截止 2025-11-13
安全变化
| CVE / 问题 | 严重程度 | 修复版本 | 所选版本状态 |
|---|---|---|---|
| CVE-2024-0985 加强 REFRESH MATERIALIZED VIEW CONCURRENTLY 中的安全限制 | 13.14 | 已记录修复 |
PostgreSQL 13.14
迁移与兼容性
对于运行 13.X 的用户,不需要执行导出/恢复。
但是,修复了一个可能导致 GIN 索引在并发更新期间损坏的错误。如果怀疑存在此类损坏,请在安装此更新后重建受影响的索引。
此外,如果是从早于 13.13 的版本升级,请参见第 E.11 节。
安全加强 REFRESH MATERIALIZED VIEW CONCURRENTLY 中的安全限制
变更
加强 REFRESH MATERIALIZED VIEW CONCURRENTLY 中的安全限制(Heikki Linnakangas)§ §
并发刷新命令的一个步骤在弱安全限制下运行。如果物化视图的所有者能够说服超级用户或其他高权限用户对该视图执行并发刷新,则视图所有者可以控制以运行 REFRESH 的用户权限执行的代码。修复了这个问题,使所有用户确定的代码都以视图所有者身份运行,这是预期的行为。
此错误的唯一已知利用方式在 PostgreSQL 16.0 及更高版本中不起作用,因此 v16 在实际中可能不受影响。
PostgreSQL 项目感谢 Pedro Gallegos 报告此问题。(CVE-2024-0985)
问题修复修复执行 JIT 内联时的内存泄漏
变更
修复执行 JIT 内联时的内存泄漏(Andres Freund,Daniel Gustafsson)§
已有多次报告指出后端进程在足够多的 JIT 编译后出现内存不足的情况。此修复应该可以解决该问题。
改进在从 LWLock 出队时,避免需要搜索等待进程列表
变更
在从 LWLock 出队时,避免需要搜索等待进程列表(Andres Freund)§
这修复了等待者列表很长时的 O(N^2) 行为。在某些使用场景中,这会带来显著的吞吐量提升。
改进避免生成不正确的按分区连接计划
变更
避免生成不正确的按分区连接计划(Richard Guo)§
某些涉及横向引用的不常见情况可能创建不正确的计划。受影响的查询可能产生错误的结果,或出现诸如 “variable not found in subplan target list” 之类的奇怪失败,或执行器崩溃。
问题修复修复子查询输出表达式在 PlaceHolderVars 中的不正确包装
变更
修复子查询输出表达式在 PlaceHolderVars 中的不正确包装(Tom Lane)§
这修复了当子查询位于外连接下方且有一个输出列横向引用外连接范围之外的内容时的不正确结果。由于外连接的作用,该输出列可能不会在应为 NULL 时显示为 NULL。
改进避免在并行哈希连接中请求过大的共享内存区域
改进避免在外键强制触发器要更新的元组未通过额外可见性交叉检查时 heap_update() 和 heap_delete() 中的断言失败
变更
避免在外键强制触发器要更新的元组未通过额外可见性交叉检查时 heap_update() 和 heap_delete() 中的断言失败(Alexander Lakhin)§
此错误在非断言构建中没有影响。
关联记录 (4)
- 相同变化PostgreSQL 16.2 · 避免在外键强制触发器要更新的元组未通过额外可见性交叉检查时 heap_update() 和 heap_delete() 中的断言失败
- 相同变化PostgreSQL 15.6 · 避免在外键强制触发器要更新的元组未通过额外可见性交叉检查时 heap_update() 和 heap_delete() 中的断言失败
- 相同变化PostgreSQL 14.11 · 避免在外键强制触发器要更新的元组未通过额外可见性交叉检查时 heap_update() 和 heap_delete() 中的断言失败
- 相同变化PostgreSQL 12.18 · 避免在外键强制触发器要更新的元组未通过额外可见性交叉检查时 heap_update() 和 heap_delete() 中的断言失败
问题修复修复在复杂继承树上执行 ALTER TABLE ADD COLUMN 时可能的失败
变更
修复在复杂继承树上执行 ALTER TABLE ADD COLUMN 时可能的失败(Tender Wang)§
如果孙子表通过多个中间父表继承新列,该命令会失败并报告 “tuple already updated by self”。
问题修复修复 ALTER TEXT SEARCH CONFIGURATION ... MAPPING 命令中重复令牌名称的问题
变更
修复 ALTER TEXT SEARCH CONFIGURATION ... MAPPING 命令中重复令牌名称的问题(Tender Wang,Michael Paquier)§
关联记录 (4)
- 相同变化PostgreSQL 16.2 · 修复 ALTER TEXT SEARCH CONFIGURATION ... MAPPING 命令中重复令牌名称的问题
- 相同变化PostgreSQL 15.6 · 修复 ALTER TEXT SEARCH CONFIGURATION ... MAPPING 命令中重复令牌名称的问题
- 相同变化PostgreSQL 14.11 · 修复 ALTER TEXT SEARCH CONFIGURATION ... MAPPING 命令中重复令牌名称的问题
- 相同变化PostgreSQL 12.18 · 修复 ALTER TEXT SEARCH CONFIGURATION ... MAPPING 命令中重复令牌名称的问题
改进在 DROP STATISTICS 时正确锁定关联的表
变更
在 DROP STATISTICS 时正确锁定关联的表(Tomas Vondra)§
未能获取锁可能导致当 DROP 与 ANALYZE 并发执行时出现 “tuple concurrently deleted” 错误。
问题修复修复 GENERATED 和 DEFAULT 表达式中的函数波动性检查
变更
修复 GENERATED 和 DEFAULT 表达式中的函数波动性检查(Tom Lane)§
这些位置可能未能检测到易变函数默认参数表达式的插入,或者判定一个多态函数是易变的,而实际上对于相关的数据类型它是不可变的。这可能导致不正确地拒绝或接受 GENERATED 子句,或在 ALTER TABLE ADD COLUMN 中错误地应用常量默认值优化。
改进检测新目录缓存条目在展开其字段时变为过时的情况
问题修复修复某些平台上边缘情况的整数溢出检测错误
变更
修复某些平台上边缘情况的整数溢出检测错误(Dean Rasheed)§
计算 0 - INT64_MIN 应该导致溢出错误,在大多数平台上确实如此。然而,既没有整数溢出内置函数也没有 128 位整数的平台无法发现该溢出,而是返回 INT64_MIN。
改进检测在 timestamp 上加减 interval 时的儒略日溢出
变更
检测在 timestamp 上加减 interval 时的儒略日溢出(Tom Lane)§
某些应该导致超出范围错误的情况反而产生了不正确的结果。
改进增加 interval_mul() 和 interval_div() 中的更多溢出检查
变更
增加 interval_mul() 和 interval_div() 中的更多溢出检查(Dean Rasheed)§
某些应该导致超出范围错误的情况反而产生了不正确的结果。
改进使 pg_file_settings 视图检查具有 backend 或 superuser-backend 上下文的设置中未应用值的有效性
变更
使 pg_file_settings 视图检查具有 backend 或 superuser-backend 上下文的设置中未应用值的有效性(Tom Lane)§
无效值未按预期在视图中标注。这个问题未被发现是因为这些组中的设置非常少。
关联记录 (4)
- 相同变化PostgreSQL 16.2 · 使 pg_file_settings 视图检查具有 backend 或 superuser-backend 上下文的设置中未应用值的有效性
- 相同变化PostgreSQL 15.6 · 使 pg_file_settings 视图检查具有 backend 或 superuser-backend 上下文的设置中未应用值的有效性
- 相同变化PostgreSQL 14.11 · 使 pg_file_settings 视图检查具有 backend 或 superuser-backend 上下文的设置中未应用值的有效性
- 相同变化PostgreSQL 12.18 · 使 pg_file_settings 视图检查具有 backend 或 superuser-backend 上下文的设置中未应用值的有效性
改进在将现有索引匹配到新分区索引时也匹配排序规则
变更
在将现有索引匹配到新分区索引时也匹配排序规则(Peter Eisentraut)§
之前我们可能接受与分区键对应元素排序规则不同的索引,可能导致异常行为。
问题修复修复清理 GIN 索引内部页面不完整分裂时的锁定不足问题
变更
修复清理 GIN 索引内部页面不完整分裂时的锁定不足问题(Fei Changhong,Heikki Linnakangas)§
代码尝试使用共享锁而非排他锁来完成此操作。如果两个进程同时尝试清理,这可能导致索引损坏。
改进避免在 GIN 索引插入中过早释放缓冲区固定
变更
避免在 GIN 索引插入中过早释放缓冲区固定(Tom Lane)§
如果索引根页面的分裂与我们自己的插入并发发生,代码可能报告 “buffer NNNN is not owned by resource owner”。
改进避免分区 SP-GiST 索引的失败
变更
避免分区 SP-GiST 索引的失败(Tom Lane)§
尝试使用这类索引可能导致 “No such file or directory” 错误。
问题修复修复大对象的所有权变更报告
变更
修复大对象的所有权变更报告(Tom Lane)§
无操作的 ALTER LARGE OBJECT OWNER 命令(即选择现有所有者的命令)向 PostAlterHook 传递了错误的类 ID,可能会混淆使用该钩子的任何扩展。
改进防止备库在子事务期间错误处理已死亡的索引元组
变更
防止备库在子事务期间错误处理已死亡的索引元组(Fei Changhong)§
startedInRecovery 标志在子事务中没有被正确设置。这仅影响已死亡索引元组的处理。它可能允许子事务中的查询忽略它应该返回的索引条目(如果它们在主库上已经死亡,但对备库事务来说还未死亡),或过早地将在主库上尚未死亡的索引条目标记为已死亡。目前尚不清楚后一种情况是否有严重后果,但这不是预期的行为。
问题修复修复逻辑复制应用工作进程、其表同步工作进程和尝试修改订阅的会话进程之间的死锁
变更
修复逻辑复制应用工作进程、其表同步工作进程和尝试修改订阅的会话进程之间的死锁(Shlok Kyal)§
死锁循环中的一条边不涉及锁等待,因此死锁未被检测到,会持续存在直到手动干预。
问题修复当新客户端在未响应服务器的密码质询就断开连接时,返回正确的状态码
变更
当新客户端在未响应服务器的密码质询就断开连接时,返回正确的状态码(Liu Lang,Tom Lane)§
在某些情况下,我们会将此视为可记录的错误,但这不是预期的行为,并且容易产生日志噪音,因为常见的客户端如 psql 经常这样做。这也可能混淆使用 ClientAuthentication_hook 的扩展。
问题修复修复与 OpenSSL 3.2 的不兼容性
变更
修复与 OpenSSL 3.2 的不兼容性(Tristan Partin,Bo Andreson)§
使用 BIO “app_data” 字段进行我们的私有存储,而不是假定可以使用 “data” 字段。此错误此前不会造成问题,但在 3.2 中会导致崩溃和双重释放错误。
改进对 OpenSSL 在错误时不设置 errno 的情况更加谨慎
变更
对 OpenSSL 在错误时不设置 errno 的情况更加谨慎(Tom Lane)§
如果 errno 未被设置,则假设所报告失败的原因是读取到 EOF。这修复了罕见的奇怪错误报告情况,如 “could not accept SSL connection: Success”。
改进将文件相关系统调用的 ENOMEM 错误报告为 ERRCODE_OUT_OF_MEMORY,而不是 ERRCODE_INTERNAL_ERROR
变更
将文件相关系统调用的 ENOMEM 错误报告为 ERRCODE_OUT_OF_MEMORY,而不是 ERRCODE_INTERNAL_ERROR(Alexander Kuzmenkov)§
关联记录 (4)
- 相同变化PostgreSQL 16.2 · 将文件相关系统调用的 ENOMEM 错误报告为 ERRCODE_OUT_OF_MEMORY,而不是 ERRCODE_INTERNAL_ERROR
- 相同变化PostgreSQL 15.6 · 将文件相关系统调用的 ENOMEM 错误报告为 ERRCODE_OUT_OF_MEMORY,而不是 ERRCODE_INTERNAL_ERROR
- 相同变化PostgreSQL 14.11 · 将文件相关系统调用的 ENOMEM 错误报告为 ERRCODE_OUT_OF_MEMORY,而不是 ERRCODE_INTERNAL_ERROR
- 相同变化PostgreSQL 12.18 · 将文件相关系统调用的 ENOMEM 错误报告为 ERRCODE_OUT_OF_MEMORY,而不是 ERRCODE_INTERNAL_ERROR
改进避免 libpq 在两个不同线程中并发初始化 OpenSSL 支持时的竞态条件
变更
避免 libpq 在两个不同线程中并发初始化 OpenSSL 支持时的竞态条件(Willi Mann,Michael Paquier)§
问题修复修复 GSSAPI 数据传输中与时间相关的失败
变更
修复 GSSAPI 数据传输中与时间相关的失败(Tom Lane)§
在非阻塞模式下使用 GSSAPI 加密时,libpq 有时会报告 “GSSAPI caller failed to retransmit all data needing to be retried”。
改进在 pg_dump 中,不要导出扩展成员对象的 RLS 策略或安全标签
改进在 pg_dump 中,如果扩展统计对象的底层表没有被导出,则不要导出该统计对象
变更
在 pg_dump 中,如果扩展统计对象的底层表没有被导出,则不要导出该统计对象(Rian McGuire,Tom Lane)§
这与索引等其他依赖对象的行为保持一致。
问题修复修复 contrib/intarray 中当包含等于 INT_MAX 的元素的数组被插入到 gist__int_ops 索引时的崩溃
变更
修复 contrib/intarray 中当包含等于 INT_MAX 的元素的数组被插入到 gist__int_ops 索引时的崩溃(Alexander Lakhin,Tom Lane)§
关联记录 (4)
- 相同变化PostgreSQL 16.2 · 修复 contrib/intarray 中当包含等于 INT_MAX 的元素的数组被插入到 gist__int_ops 索引时的崩溃
- 相同变化PostgreSQL 15.6 · 修复 contrib/intarray 中当包含等于 INT_MAX 的元素的数组被插入到 gist__int_ops 索引时的崩溃
- 相同变化PostgreSQL 14.11 · 修复 contrib/intarray 中当包含等于 INT_MAX 的元素的数组被插入到 gist__int_ops 索引时的崩溃
- 相同变化PostgreSQL 12.18 · 修复 contrib/intarray 中当包含等于 INT_MAX 的元素的数组被插入到 gist__int_ops 索引时的崩溃
改进当 contrib/pageinspect 的 hash_bitmap_info() 函数应用于分区 hash 索引时报告更好的错误
变更
当 contrib/pageinspect 的 hash_bitmap_info() 函数应用于分区 hash 索引时报告更好的错误(Alexander Lakhin,Michael Paquier)§
关联记录 (4)
- 相同变化PostgreSQL 16.2 · 当 contrib/pageinspect 的 hash_bitmap_info() 函数应用于分区 hash 索引时报告更好的错误
- 相同变化PostgreSQL 15.6 · 当 contrib/pageinspect 的 hash_bitmap_info() 函数应用于分区 hash 索引时报告更好的错误
- 相同变化PostgreSQL 14.11 · 当 contrib/pageinspect 的 hash_bitmap_info() 函数应用于分区 hash 索引时报告更好的错误
- 相同变化PostgreSQL 12.18 · 当 contrib/pageinspect 的 hash_bitmap_info() 函数应用于分区 hash 索引时报告更好的错误
改进当 contrib/pgstattuple 的 pgstathashindex() 函数应用于分区 hash 索引时报告更好的错误
变更
当 contrib/pgstattuple 的 pgstathashindex() 函数应用于分区 hash 索引时报告更好的错误(Alexander Lakhin)§
关联记录 (4)
- 相同变化PostgreSQL 16.2 · 当 contrib/pgstattuple 的 pgstathashindex() 函数应用于分区 hash 索引时报告更好的错误
- 相同变化PostgreSQL 15.6 · 当 contrib/pgstattuple 的 pgstathashindex() 函数应用于分区 hash 索引时报告更好的错误
- 相同变化PostgreSQL 14.11 · 当 contrib/pgstattuple 的 pgstathashindex() 函数应用于分区 hash 索引时报告更好的错误
- 相同变化PostgreSQL 12.18 · 当 contrib/pgstattuple 的 pgstathashindex() 函数应用于分区 hash 索引时报告更好的错误
改进在 Windows 上,在 pg_ctl 和 pg_regress 中启动子进程时抑制自动运行选项
问题修复修复 libxml2 版本 2.12.0 及更高版本的编译失败
变更
修复 libxml2 版本 2.12.0 及更高版本的编译失败(Tom Lane)§
问题修复修复 Windows 上 WAL_DEBUG 代码的编译失败
变更
修复 Windows 上 WAL_DEBUG 代码的编译失败(Bharath Rupireddy)§
改进抑制来自 Python 头文件的编译器警告
变更
抑制来自 Python 头文件的编译器警告(Peter Eisentraut,Tom Lane)§
我们首选的编译器选项会对最近版本的 Python 头文件中出现的构造产生警告。使用 gcc 时,我们可以通过 pragma 来抑制这些警告。
改进避免使用 LLVM 18 编译时的弃用警告
变更
避免使用 LLVM 18 编译时的弃用警告(Thomas Munro)§
改进更新时区数据文件至 tzdata 2024a 版本,包括格陵兰、哈萨克斯坦和巴勒斯坦的夏令时法律变更,以及南极站 Casey 和 Vostok 的修正。同时还有越南、多伦多和密克隆的历史修正。
变更
更新时区数据文件至 tzdata 2024a 版本,包括格陵兰、哈萨克斯坦和巴勒斯坦的夏令时法律变更,以及南极站 Casey 和 Vostok 的修正。同时还有越南、多伦多和密克隆的历史修正。(Tom Lane)§
关联记录 (4)
- 相同变化PostgreSQL 16.2 · 更新时区数据文件至 tzdata 2024a 版本,包括格陵兰、哈萨克斯坦和巴勒斯坦的夏令时法律变更,以及南极站 Casey 和 Vostok 的修正。同时还有越南、多伦多和密克隆的历史修正。
- 相同变化PostgreSQL 15.6 · 更新时区数据文件至 tzdata 2024a 版本,包括格陵兰、哈萨克斯坦和巴勒斯坦的夏令时法律变更,以及南极站 Casey 和 Vostok 的修正。同时还有越南、多伦多和密克隆的历史修正。
- 相同变化PostgreSQL 14.11 · 更新时区数据文件至 tzdata 2024a 版本,包括格陵兰、哈萨克斯坦和巴勒斯坦的夏令时法律变更,以及南极站 Casey 和 Vostok 的修正。同时还有越南、多伦多和密克隆的历史修正。
- 相同变化PostgreSQL 12.18 · 将时区数据文件更新到 tzdata 2024a 版,以反映格陵兰、哈萨克斯坦和巴勒斯坦的夏令时法规变更,并修正南极洲凯西站和沃斯托克站的数据。另有越南、多伦多和密克隆的历史数据修正
没有匹配的变化
尝试其他关键词,或 .
如何生成比较结果?
比较依据起始版本之后至目标版本的 PostgreSQL 发布说明。经核实的回补重复项会谨慎合并,保留每条原始说明;相关提交可能涉及独立变化,仍作为不同记录保留。
发布快照: 2026-09-26 · 安全快照: 2026-09-26
内容来自 PostgreSQL 发布说明。交互方式参考 pgversions.com 与 pgversionreport.