↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

文档版本比较

POSTGRESQL · VERSION COMPARE

PostgreSQL 10.16 发布变化

此版本的完整功能、修复与兼容性说明,以及其他版本的关联记录。

此版本的完整变化
此版本的完整变化

包括起始版本之后至目标版本的变化。大版本号表示该分支的首个版本。

完整发布变化

10.16

2021-02-11

导出 JSON ↓
40项变化功能、修复、改进
1个版本按版本分组
0CVE独立漏洞编号

10.16stable支持截止 2022-11-10

PostgreSQL 10.16

迁移与兼容性

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

但是,请参阅下方变更记录中的第一项,其中描述了升级后可能适合重建索引的情况。

此外,如果是从早于 10.11 的版本升级,请参见第 E.13 节。

问题修复修复 CREATE INDEX CONCURRENTLY,使其等待并发的预备事务

变更

修复 CREATE INDEX CONCURRENTLY,使其等待并发的预备事务(Andrey Borodin)

CREATE INDEX CONCURRENTLY 等待所有并发事务完成,以便看到它们插入的行时,也必须出于相同原因等待所有预备事务完成。未能这样做意味着,预备事务插入的行可能被遗漏在新索引之外,导致依赖该索引的查询找不到这些行。对于启用了预备事务(max_prepared_transactions > 0)的安装实例,建议重建所有并发构建的索引,以防其构建时发生过此问题。

关联记录 (5)
改进避免将 WHERE CURRENT OF 应用于计划中包含 MergeAppend 节点的游标时产生错误结果

变更

避免将 WHERE CURRENT OF 应用于计划中包含 MergeAppend 节点的游标时产生错误结果(Tom Lane)

这种情况不受支持(一般来说,不能保证使用 ORDER BY 的游标可以简单地用于更新);但以前的代码没有拒绝它,并可能悄然给出错误匹配。

关联记录 (5)
问题修复修复将 WHERE CURRENT OF 应用于计划中包含自定义扫描节点的游标时的崩溃

变更

修复将 WHERE CURRENT OF 应用于计划中包含自定义扫描节点的游标时的崩溃(David Geier)

关联记录 (5)
问题修复修复规划器对在某个连接层级计算、且仅在同一层级使用的占位符的处理

变更

修复规划器对在某个连接层级计算、且仅在同一层级使用的占位符的处理(Tom Lane)

这一疏漏可能导致 “failed to build any N-way joins” 规划器错误。

关联记录 (5)
改进更谨慎地判断索引访问方法是否支持标记/恢复

变更

更谨慎地判断索引访问方法是否支持标记/恢复(Andrew Gierth)

这可以防止在罕见的边界情况下出现关于缺少支持函数的错误。

关联记录 (5)
改进调整设置,降低大量使用并行查询时耗尽 DSM 槽的可能性

变更

调整设置,降低大量使用并行查询时耗尽 DSM 槽的可能性(Thomas Munro)

关联记录 (2)
问题修复修复 ALTER DEFAULT PRIVILEGES,使其安全地处理重复参数

变更

修复 ALTER DEFAULT PRIVILEGES,使其安全地处理重复参数(Michael Paquier)

同一命令中重复的角色名或模式名可能导致 “tuple already updated by self” 错误或违反唯一约束。

关联记录 (5)
改进在 pg_authid 变更时清除 ACL 相关缓存

变更

在 pg_authid 变更时清除 ACL 相关缓存(Noah Misch)

此项修改确保与权限相关的判断及时反映 ALTER ROLE ... [NO] INHERIT 的结果。

关联记录 (5)
改进防止错误处理有歧义的 CREATE TABLE LIKE 子句

变更

防止错误处理有歧义的 CREATE TABLE LIKE 子句(Tom Lane)

初步创建新表后,会重新检查 LIKE 子句,以处理索引等对象的导入。这次重新检查有可能找到另一个同名表,从而导致意外行为;例如,新表是一个与 LIKE 目标同名的临时表时就会如此。

关联记录 (5)
改进调整 CREATE TABLE LIKE 中的操作顺序,在构建外键约束之前克隆索引

变更

调整 CREATE TABLE LIKE 中的操作顺序,在构建外键约束之前克隆索引(Tom Lane)

这修复了外层 CREATE TABLE 中声明的自引用外键约束依赖于来自 LIKE 子句的索引的情况。

关联记录 (5)
改进禁止对系统目录执行 CREATE STATISTICS

变更

禁止对系统目录执行 CREATE STATISTICS(Tomas Vondra)

关联记录 (3)
改进禁止将继承子表转换为视图

变更

禁止将继承子表转换为视图(Tom Lane)

关联记录 (5)
改进确保为已删除关系分配的磁盘空间在提交时及时释放

变更

确保为已删除关系分配的磁盘空间在提交时及时释放(Thomas Munro)

以前,如果删除的关系跨越多个 1GB 段,只有第一个段会立即被截断。其他段只是被解除链接;只要其他后端仍打开着这些文件,内核就不能释放其存储空间。

关联记录 (5)
问题修复修复 COPY FROM 对反斜杠转义的多字节字符的处理

变更

修复 COPY FROM 对反斜杠转义的多字节字符的处理(Heikki Linnakangas)

反斜杠后跟多字节字符时未被正确处理。在某些客户端字符编码中,这可能导致多字节字符的一部分被误认为字段分隔符或复制数据结束标记。

关联记录 (5)
改进在不带 ANALYZE 的 EXPLAIN 中,避免预先分配执行器 hash 表

变更

在不带 ANALYZE 的 EXPLAIN 中,避免预先分配执行器 hash 表(Alexey Bashtanov)

关联记录 (5)
问题修复修复最近在 LISTEN/NOTIFY 队列处理中引入的竞争条件

变更

修复最近在 LISTEN/NOTIFY 队列处理中引入的竞争条件(Tom Lane)

刚开始侦听的后端可能尝试读取正在被截断的 SLRU 页面,从而可能导致错误。

队列尾指针可能被设为一个与任何后端的队列位置都不相等的值,导致队列截断逻辑实际上失效。继续使用 NOTIFY 随后会产生队列填满警告,最终无法再发送任何通知,直到服务器重启。

关联记录 (5)
改进允许 jsonb 连接操作符处理所有 JSON 数据类型组合

变更

允许 jsonb 连接操作符处理所有 JSON 数据类型组合(Tom Lane)

我们可以连接两个 JSON 对象或两个 JSON 数组。对于其他情况,将非数组输入包装为单元素数组,再进行数组连接。以前,某些输入组合遵循此规则,而其他组合却会无端报错。

关联记录 (5)
问题修复修复解析 BRE 模式正则表达式中的 * 量词时使用未初始化值的问题

变更

修复解析 BRE 模式正则表达式中的 * 量词时使用未初始化值的问题(Tom Lane)

此错误可能使量词表现为非贪婪模式,即表现得像完整正则表达式中的 *? 量词。

关联记录 (5)
问题修复修复 numeric power() 在指数恰好为 INT_MIN(-2147483648)时的行为

变更

修复 numeric power() 在指数恰好为 INT_MIN(-2147483648)时的行为(Dean Rasheed)

以前会产生没有有效数字的结果。

关联记录 (4)
改进防止因错误检测 SLRU 日志的回卷点而可能造成的数据丢失

变更

防止因错误检测 SLRU 日志的回卷点而可能造成的数据丢失(Noah Misch)

回卷点通常位于页面中间,必须将其取整到页边界,但以前没有正确做到这一点。只有当安装实例距离 SLRU 溢出不到一页时,才可能出现问题,而这在正常运行的系统中不太可能发生。如果确实发生,会表现为后续出现 “apparent wraparound” 或 “could not access status of transaction” 错误。

关联记录 (5)
问题修复修复 WAL 发送进程进程为逻辑解码发送新快照时的内存泄漏

变更

修复 WAL 发送进程进程为逻辑解码发送新快照时的内存泄漏(Amit Kapila)

关联记录 (5)
问题修复修复 WAL 发送进程,使其在终止复制后接受其他命令

变更

修复 WAL 发送进程,使其在终止复制后接受其他命令(Jeff Davis)

关联记录 (5)
改进确保检测热备后端与启动(WAL 应用)进程之间的死锁

变更

确保检测热备后端与启动(WAL 应用)进程之间的死锁(Fujii Masao)

启动进程没有运行死锁检测代码,因此当启动进程最后加入循环等待时,死锁可能永远不会被识别。

关联记录 (4)
改进确保 postmaster 开始 “smart” 或 “fast” 关闭流程时,清理尚未处理的后台工作进程请求

变更

确保 postmaster 开始 “smart” 或 “fast” 关闭流程时,清理尚未处理的后台工作进程请求(Tom Lane)

以前存在一种竞争条件:如果子进程恰好在关闭前请求了后台工作进程,就可能无限期等待,导致关闭无法完成。

关联记录 (3)
问题修复修复解析 recovery_target_xid 值时的可移植性问题

变更

修复解析 recovery_target_xid 值时的可移植性问题(Michael Paquier)

目标 XID 可能有 64 位宽,但以前使用 strtoul() 解析,导致在 long 为 32 位的平台(例如 Windows)上行为异常。

关联记录 (4)
改进避免 pg_get_functiondef() 检查带有 TRANSFORM 选项的函数时发生断言失败

变更

避免 pg_get_functiondef() 检查带有 TRANSFORM 选项的函数时发生断言失败(Tom Lane)

关联记录 (5)
改进在 psql 中,重新允许在 \connect 命令的 connection_string 参数中包含密码

变更

在 psql 中,重新允许在 \connect 命令的 connection_string 参数中包含密码(Tom Lane)

这以前是可以的,但最近的一项缺陷修复导致密码被忽略(从而提示用户输入密码)。

关联记录 (5)
问题修复修复 psql 的 \help 命令中的多种缺陷

变更

修复 psql 的 \help 命令中的多种缺陷(Kyotaro Horiguchi,Tom Lane)

\help 带有两个参数词时,无法仅使用第一个词找到命令说明,例如 \help reset all 本应显示 RESET 的帮助,但却没有。另外,\help 经常未在应该调用分页器时调用它,也会泄漏内存。

关联记录 (5)
改进在 pg_dump 中,确保恢复脚本以发布所有者的身份运行 ALTER PUBLICATION ADD TABLE 命令

变更

在 pg_dump 中,确保恢复脚本以发布所有者的身份运行 ALTER PUBLICATION ADD TABLE 命令(Tom Lane)

以前,这些命令由启动恢复脚本的角色运行;这通常能够正常工作,但在边界情况下,该角色可能没有足够权限。

关联记录 (3)
问题修复修复 pg_dump,使其处理扩展初始权限中的 WITH GRANT OPTION

变更

修复 pg_dump,使其处理扩展初始权限中的 WITH GRANT OPTION(Noah Misch)

如果扩展脚本创建一个对象,并授予其带转授权选项的权限,而用户之后撤销了这些权限,pg_dump 就会生成不正确的 SQL 来重现这种情况。(目前,即使有扩展这样做,数量也很少。)

关联记录 (4)
改进在 pg_rewind 中,确保回退备库时计入所有 WAL

变更

在 pg_rewind 中,确保回退备库时计入所有 WAL(Ian Barwick,Heikki Linnakangas)

关联记录 (5)
问题修复在某些客户端程序的连接失败错误消息中报告正确的数据库名称

变更

在某些客户端程序的连接失败错误消息中报告正确的数据库名称(Álvaro Herrera)

如果数据库名称采用默认值,而非通过命令行给出,pg_dumpall、pgbench、oid2name 和 vacuumlo 就会在连接失败后产生误导性的错误消息。

关联记录 (5)
问题修复修复 contrib/auto_explain 中的内存泄漏

变更

修复 contrib/auto_explain 中的内存泄漏(Japin Li)

生成 EXPLAIN 输出时消耗的内存,直到当前事务结束(对于顶层语句)或外层语句结束(对于嵌套语句)才会释放。启用 log_nested_statements 时,这尤其容易造成问题。

关联记录 (5)
问题修复在 contrib/postgres_fdw 中,避免删除用户映射或外部服务器对象时泄漏已打开的远程服务器连接

变更

在 contrib/postgres_fdw 中,避免删除用户映射或外部服务器对象时泄漏已打开的远程服务器连接(Bharath Rupireddy)

依赖已删除用户映射或外部服务器的打开连接已无法再被引用,但以前仍会将它们保留到本地会话结束。

关联记录 (5)
改进在 contrib/pgcrypto 中,检查 OpenSSL EVP 函数返回的错误

变更

在 contrib/pgcrypto 中,检查 OpenSSL EVP 函数返回的错误(Michael Paquier)

我们并不真正预期这里会出现错误,但此项修改消除了静态分析工具的警告。

关联记录 (5)
问题修复在 contrib/pg_trgm 的 GiST 索引支持中,避免恰好对两个索引项调用 picksplit 这一罕见情况下的崩溃

变更

在 contrib/pg_trgm 的 GiST 索引支持中,避免恰好对两个索引项调用 picksplit 这一罕见情况下的崩溃(Andrew Gierth,Alexander Korotkov)

关联记录 (5)
问题修复修复 contrib/pg_prewarm 和 contrib/postgres_fdw 中错误的超时计算

变更

修复 contrib/pg_prewarm 和 contrib/postgres_fdw 中错误的超时计算(Alexey Kondratov,Tom Lane)

contrib/pg_prewarm 的 autoprewarm 父进程中的主循环,将所需睡眠时间低估为实际值的千分之一,导致 CPU 消耗远高于预期。等待远程服务器返回结果时,contrib/postgres_fdw 则将所需超时时间高估为实际值的 1000 倍(不过,60 秒的上限缓解了这一错误)。

这两个错误都源于将秒和微秒错误地转换为毫秒。引入新的 API TimestampDifferenceMilliseconds(),使今后更容易正确完成这一转换。

关联记录 (5)
改进改进 configure 在 macOS 上选择 PG_SYSROOT 的启发式方法

变更

改进 configure 在 macOS 上选择 PG_SYSROOT 的启发式方法(Tom Lane)

当 Xcode 比底层操作系统更新时,新方法更有可能产生理想结果。选择与操作系统版本不匹配的 sysroot,可能生成无法工作的可执行文件。

关联记录 (5)
改进在 macOS 上构建时,在链接步骤和编译步骤中都指定 -isysroot

变更

在 macOS 上构建时,在链接步骤和编译步骤中都指定 -isysroot(James Hilliard)

这同样可以改善 Xcode 与操作系统版本不同步时的结果。

关联记录 (5)
改进将时区数据文件更新到 tzdata 2021a 版,以反映俄罗斯(伏尔加格勒时区)和南苏丹的夏令时法规变更,并修正澳大利亚、巴哈马、伯利兹、百慕大、加纳、以色列、肯尼亚、尼日利亚、巴勒斯坦、塞舌尔和瓦努阿图的历史数据。

变更

将时区数据文件更新到 tzdata 2021a 版,以反映俄罗斯(伏尔加格勒时区)和南苏丹的夏令时法规变更,并修正澳大利亚、巴哈马、伯利兹、百慕大、加纳、以色列、肯尼亚、尼日利亚、巴勒斯坦、塞舌尔和瓦努阿图的历史数据。

特别是,Australia/Currie 时区经过修正后,已与 Australia/Hobart 完全相同。

关联记录 (5)
如何生成比较结果?

比较依据起始版本之后至目标版本的 PostgreSQL 发布说明。经核实的回补重复项会谨慎合并,保留每条原始说明;相关提交可能涉及独立变化,仍作为不同记录保留。

发布快照: 2026-09-26 · 安全快照: 2026-09-26

内容来自 PostgreSQL 发布说明。交互方式参考 pgversions.com 与 pgversionreport.