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

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

文档版本对比

POSTGRESQL · VERSION COMPARE

PostgreSQL 10.17 的版本变更

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

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

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

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

本次发布的全部变更

10.17

2021-05-13

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

10.17 历史版本维护截止 2022-11-10

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

修复 INSERT ... ON CONFLICT ... UPDATE 目标列表中对 “junk” 列的错误处理

6.510.17
CVE-2021-32027

防止数组下标计算中的整数溢出

6.510.17

PostgreSQL 10.17

升级与兼容性说明

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

但是,如果是从早于 10.16 的版本升级,请参见第 E.8 节。

安全相关防止数组下标计算中的整数溢出

变更

防止数组下标计算中的整数溢出(Tom Lane)

以前,当数组下界加上长度发生整数溢出时,数组代码不会报错。这会使数组中后面的项无法访问(因为它们的下标无法表示为整数),更重要的是还会干扰后续赋值操作。这可能造成内存覆盖,进而导致崩溃或非预期的数据修改。(CVE-2021-32027)

关联记录(4)

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

安全相关修复 INSERT ... ON CONFLICT ... UPDATE 目标列表中对 “junk” 列的错误处理

变更

修复 INSERT ... ON CONFLICT ... UPDATE 目标列表中对 “junk” 列的错误处理(Tom Lane)

如果 UPDATE 列表包含任何多列子查询(它们除了产生正式结果外,还会产生 junk 列),UPDATE 路径最终会存储包含额外 junk 列值的元组。短期内这基本无害,但如果向表中添加新列,这些值就会变得可访问;如果它们与新增列的数据类型不匹配,就可能导致异常。

此外,在支持跨分区更新的版本中,由此类情况触发的跨分区更新存在相反的问题:junk 列被从目标列表中移除,通常会因多列子查询机制失效而立即崩溃。(CVE-2021-32028)

关联记录(4)

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

其他改进禁止将标识列标记为可空

变更

禁止将标识列标记为可空(Vik Fearing)

GENERATED ... AS IDENTITY 隐含 NOT NULL,因此不允许将其与显式的 NULL 指定结合使用。

关联记录(3)

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

其他改进允许 ALTER ROLE/DATABASE ... SET 设置 role、session_authorization 和 temp_buffers 参数

变更

允许 ALTER ROLE/DATABASE ... SET 设置 role、session_authorization 和 temp_buffers 参数(Tom Lane)

以前,过于急切的有效性检查可能拒绝这些命令,即使相关值在之后实际使用时本可以正常工作。这使转储/重载和升级场景中出现了命令顺序方面的隐患。

关联记录(4)

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

BUG 修复修复将 COLLATE 表达式的结果强制转换为不支持排序规则的类型时的缺陷

变更

修复将 COLLATE 表达式的结果强制转换为不支持排序规则的类型时的缺陷(Tom Lane)

这会生成一棵语法解析树,其中 COLLATE 看起来被应用于一个不支持排序规则的值。虽然这通常没有实际影响(因为 COLLATE 在运行时没有作用),但仍有可能构造出在转储/重载期间被拒绝的视图。

关联记录(4)

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

其他改进禁止通过“快速路径”线协议消息调用窗口函数和过程

变更

禁止通过“快速路径”线协议消息调用窗口函数和过程(Tom Lane)

这里只支持普通函数。虽然尝试调用聚合函数已经会失败,但调用窗口函数会导致崩溃,而调用过程只有在过程不进行事务控制时才能正常工作。

关联记录(4)

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

其他改进扩展 pg_identify_object_as_address(),使其支持事件触发器

变更

扩展 pg_identify_object_as_address(),使其支持事件触发器(Joel Jacobson)

关联记录(4)

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

BUG 修复修复 to_char() 对负时间间隔使用罗马数字月份格式代码的处理

变更

修复 to_char() 对负时间间隔使用罗马数字月份格式代码的处理(Julien Rouhaud)

以前,此类情况通常会导致崩溃。

关联记录(4)

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

其他改进检查 pg_import_system_collations() 的参数是否为有效的模式 OID

变更

检查 pg_import_system_collations() 的参数是否为有效的模式 OID(Tom Lane)

关联记录(3)

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

BUG 修复修复解析 BRE 模式正则表达式中的 \{m,n\} 量词时使用未初始化值的问题

变更

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

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

关联记录(4)

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

其他改进使用扩展统计信息估计分组数量时,不要忽略系统列

变更

使用扩展统计信息估计分组数量时,不要忽略系统列(Tomas Vondra)

这会导致 SELECT ... GROUP BY a, b, ctid 等查询得到异常的估计值。

关联记录(3)

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

BUG 修复避免估计具有很长固定前缀的正则表达式的选择率时出现除零错误

变更

避免估计具有很长固定前缀的正则表达式的选择率时出现除零错误(Tom Lane)

这通常会产生 NaN 选择率值,从而导致断言失败或规划器行为异常。

关联记录(4)

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

BUG 修复修复 BRIN 索引位图扫描中访问超出表末尾位置的错误

变更

修复 BRIN 索引位图扫描中访问超出表末尾位置的错误(Tomas Vondra)

如果 BRIN 索引使用的页范围大小不是二的幂,在某些边界情况下,位图扫描可能尝试获取超出表实际末尾的页面,导致 “could not open file” 错误。

关联记录(4)

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

其他改进避免从 WAL 恢复未提交的两阶段事务时发生不正确的时间线变更

变更

避免从 WAL 恢复未提交的两阶段事务时发生不正确的时间线变更(Soumyadeep Chakraborty,Jimmy Yih,Kevin Yeap)

此错误可能使后续 WAL 记录在错误的时间线 ID 下写入,导致之后出现一致性问题,甚至完全无法重启服务器。

关联记录(3)

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

其他改进确保关闭备库的启动进程时释放锁

变更

确保关闭备库的启动进程时释放锁(Fujii Masao)

在备库仍处于恢复状态时将其关闭,可能会留下某些仍被持有的锁。这会导致调试构建中的断言失败;尚不清楚在生产构建中是否可能造成严重后果。

关联记录(4)

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

BUG 修复修复逻辑复制工作进程执行 ALTER SUBSCRIPTION REFRESH 时的崩溃

变更

修复逻辑复制工作进程执行 ALTER SUBSCRIPTION REFRESH 时的崩溃(Peter Smith)

核心代码不会这样做,但副本触发器可能会。

关联记录(3)

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

其他改进确保在较新版本的 FreeBSD 上默认使用 wal_sync_method = fdatasync

变更

确保在较新版本的 FreeBSD 上默认使用 wal_sync_method = fdatasync(Thomas Munro)

FreeBSD 13 支持 open_datasync,通常它会成为默认选择。但尚不清楚这对 Postgres 是否确有改进,因此暂时保留现有默认值。

关联记录(4)

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

其他改进确保分离 DSM 段期间被中断时仍能完成清理

变更

确保分离 DSM 段期间被中断时仍能完成清理(Thomas Munro)

此错误可能导致并行查询后未能及时清理临时文件。

关联记录(4)

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

BUG 修复修复初始化服务器 SSL 参数时的内存泄漏

变更

修复初始化服务器 SSL 参数时的内存泄漏(Michael Paquier)

这通常影响很小,但如果反复向 postmaster 发送 SIGHUP 信号,泄漏就会随时间累积。

关联记录(2)

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

BUG 修复修复服务器中多种较小的内存泄漏

变更

修复服务器中多种较小的内存泄漏(Tom Lane,Andres Freund)

关联记录(4)

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

BUG 修复防止 libpq 收到长度损坏的 ParameterDescription 消息时陷入无限循环

变更

防止 libpq 收到长度损坏的 ParameterDescription 消息时陷入无限循环(Tom Lane)

关联记录(4)

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

其他改进当 initdb 打印如何启动服务器的说明时,使其在 Windows 上显示的 pg_ctl 路径使用反斜杠分隔符

变更

当 initdb 打印如何启动服务器的说明时,使其在 Windows 上显示的 pg_ctl 路径使用反斜杠分隔符(Nitin Jadhav)

关联记录(3)

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

BUG 修复修复 psql,恢复 \connect service=something 以前的行为

变更

修复 psql,恢复 \connect service=something 以前的行为(Tom Lane)

先前的一项缺陷修复导致环境变量(例如 PGPORT)在此情况下覆盖服务文件中的条目。现在恢复以前的行为,使优先级反过来。

关联记录(4)

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

BUG 修复修复 psql 的 \e 及相关命令检测文件修改时的竞争条件

变更

修复 psql 的 \e 及相关命令检测文件修改时的竞争条件(Laurenz Albe)

输入速度非常快的用户可能使代码基于文件时间戳对临时编辑文件是否更改的判断失准。

关联记录(4)

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

BUG 修复修复 pg_restore 中遗漏的文件版本检查

变更

修复 pg_restore 中遗漏的文件版本检查(Tom Lane)

从不支持定位的来源读取自定义格式归档时,pg_restore 忽略了检查归档版本。如果输入的归档版本比它所支持的版本更新,之后就会以混乱的方式失败。

关联记录(4)

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

其他改进为 pg_upgrade 增加对包含不可升级数据类型的用户表的检查

变更

为 pg_upgrade 增加对包含不可升级数据类型的用户表的检查(Tom Lane)

修复对不可升级的数据类型嵌入容器类型(例如数组或范围)中的某些情况的检测。另外,如果用户表包含系统定义的复合类型的列,则不允许升级,因为这些类型的 OID 在不同版本之间并不稳定。

关联记录(4)

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

BUG 修复修复 pg_waldump,使其在生成逐记录统计信息时正确统计 XACT 记录

变更

修复 pg_waldump,使其在生成逐记录统计信息时正确统计 XACT 记录(Kyotaro Horiguchi)

关联记录(4)

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

BUG 修复修复 contrib/amcheck,使其不再因元组标志 HEAP_XMAX_LOCK_ONLY 和 HEAP_KEYS_UPDATED 同时设置而报错

变更

修复 contrib/amcheck,使其不再因元组标志 HEAP_XMAX_LOCK_ONLY 和 HEAP_KEYS_UPDATED 同时设置而报错(Julien Rouhaud)

这是 SELECT FOR UPDATE 之后的一种有效状态。

关联记录(4)

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

其他改进调整 VPATH 构建规则,以支持较新版本的 Oracle Developer Studio 编译器

变更

调整 VPATH 构建规则,以支持较新版本的 Oracle Developer Studio 编译器(Noah Misch)

关联记录(4)

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

BUG 修复修复 Solaris 上针对 Python 3 的 PL/Python 测试

变更

修复 Solaris 上针对 Python 3 的 PL/Python 测试(Noah Misch)

关联记录(4)

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

这份对比如何生成?

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

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

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

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

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