pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
文档版本对比
POSTGRESQL · VERSION COMPARE
本次发布的完整功能、修复与兼容性说明,以及它们在其他版本中的关联记录。
从起始版本之后,看到目标版本为止。大版本名称代表该系列首个正式版本。
收录 PostgreSQL 9.0 起的 17 个大版本、352 份发布说明;数据更新于 2026-09-26。
本次发布的全部变更
2017-11-09
10.1 历史版本维护截止 2022-11-10
| CVE / 问题 | 严重程度 | 修复版本 |
|---|---|---|
| CVE-2017-12172 修复示例服务器启动脚本,使其在打开 $PGLOG 之前切换为 $PGUSER | 8.4 | 10.1 |
| CVE-2017-15098 修复 json{b}_populate_recordset() 中行类型不匹配导致的崩溃 | 4.3 | 10.1 |
| CVE-2017-15099 确保 INSERT ... ON CONFLICT DO UPDATE 在所有情况下都检查表权限和 RLS 策略 | 3.1 | 10.1 |
对于运行 10.X 的用户,不需要执行导出/恢复。
但是,如果使用了 BRIN 索引,请参阅下方第四条变更日志。
变更
确保 INSERT ... ON CONFLICT DO UPDATE 在所有情况下都检查表权限和 RLS 策略(Dean Rasheed)
INSERT ... ON CONFLICT DO UPDATE 的更新路径要求对仲裁索引的列拥有 SELECT 权限,但在通过约束名称指定仲裁对象时,没有检查该权限。此外,对于启用了行级安全的表,它没有依据表的 SELECT 策略检查更新后的行(无论以何种方式指定仲裁索引)。(CVE-2017-15099)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 json{b}_populate_recordset() 中行类型不匹配导致的崩溃(Michael Paquier,Tom Lane)
这些函数直接使用 FROM ... AS 子句中指定的结果行类型,而不检查它是否与所提供元组值的实际行类型匹配。如果不匹配,通常会导致崩溃,但似乎也可能泄露服务器内存内容。(CVE-2017-15098)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复示例服务器启动脚本,使其在打开 $PGLOG 之前切换为 $PGUSER(Noah Misch)
以前,postmaster 日志文件在仍以 root 身份运行时打开。因此,数据库所有者可以将 $PGLOG 设为指向其他文件的符号链接,对其他系统用户发动攻击,因为追加日志消息会破坏该文件。
默认情况下,这些脚本不会安装到任何位置。使用这些脚本的用户需要手动重新复制脚本,或将相同修改应用到自行修改过的版本中。如果现有的 $PGLOG 文件归 root 所有,则需要先删除它或将其重命名移开,再使用修正后的脚本重启服务器。(CVE-2017-12172)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 BRIN 索引摘要生成,使其正确处理并发的表扩展(Álvaro Herrera)
以前,一个竞态条件可能导致索引遗漏某些表行。可能需要重建现有 BRIN 索引,以修复此问题过去造成的影响。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复并发更新 BRIN 索引期间可能发生的失败(Tom Lane)
这些竞态条件可能导致 “invalid index offnum” 或 “inconsistent range map” 等错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止逻辑复制在复制 UPDATE 时将未复制的列设为空值(Petr Jelinek)
变更
修复逻辑复制,使其按预期触发 BEFORE ROW DELETE 触发器(Masahiko Sawada)
以前,除非表还具有 BEFORE ROW UPDATE 触发器,否则不会触发。
变更
修复从使用 SPI 的函数(尤其是用 PL 语言编写的任何函数)调用逻辑解码时的崩溃(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
查找 INSERT/UPDATE/DELETE 的目标表时忽略 CTE,并防止将带模式限定的目标表名与触发器过渡表名匹配(Thomas Munro)
这恢复了 v10 之前附加到 DML 命令的 CTE 的行为。
变更
避免在聚合函数的 FILTER 测试不通过的行上计算其参数表达式(Tom Lane)
这恢复了 v10 之前的行为(也符合 SQL 标准)。
变更
修复多个 GROUPING SETS 列包含相同简单变量时查询结果不正确的问题(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复计算 SELECT 目标列表中的集合返回函数时,在查询生命周期内发生的内存泄漏(Tom Lane)
变更
允许并行执行使用通用计划的预备语句(Amit Kapila,Kuntal Ghosh)
变更
修复对嵌套查询作出的不正确并行化决定(Amit Kapila,Kuntal Ghosh)
变更
修复并行查询处理,避免最近使用过的角色被删除时发生失败(Amit Kapila)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复并行执行位图扫描时,BitmapOr 节点下具有 BitmapAnd 计划节点所导致的崩溃(Dilip Kumar)
变更
修复 json_build_array()、json_build_object() 及其 jsonb 对应函数,使其正确处理显式 VARIADIC 参数(Michael Paquier)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复自动清理的“工作项”逻辑,防止可能的崩溃和工作项静默丢失(Álvaro Herrera)
变更
修复在视图末尾添加列时的极端情况崩溃(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
当视图或规则包含 FieldSelect 或 FieldStore 表达式节点时,记录正确的依赖关系(Tom Lane)
缺少这些依赖关系可能导致本应失败的列或数据类型 DROP 得以执行,从而使随后使用该视图或规则的操作出错。此补丁不会保护现有视图或规则,只保护今后创建的视图或规则。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
正确检测范围数据类型是否支持 hash 运算(Tom Lane)
规划器错误地假定任何范围类型都可进行 hash 运算,用于哈希连接或 hash 聚合,但实际上必须检查该范围的子类型是否支持 hash。这不影响任何内置范围类型,因为它们都可进行 hash 运算。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
检查函数依赖统计信息时,正确忽略 RelabelType 表达式节点(David Rowley)
例如,这使 varchar 列上的扩展统计信息能够得到正确使用。
变更
防止有序集聚合之间共享转换状态(David Rowley)
这会使内置有序集聚合崩溃,用户编写的聚合很可能也会如此。v11 及更高版本将提供安全处理此类情况的措施,但在已发布分支中,仅禁用这项优化。
变更
防止在先前发生 statement_timeout 后忽略 idle_in_transaction_session_timeout(Lukas Fittl)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 XID 回卷导致 NOTIFY 消息以低概率丢失的问题(Marko Tiikkaja,Tom Lane)
如果一个会话在超过 20 亿个事务期间不执行查询,只监听通知,它就会开始遗漏某些来自并发提交事务的通知。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
降低批量复制文件期间的数据刷盘请求频率,以避免 macOS 上的性能问题,尤其是其新的 APFS 文件系统(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
允许在事务隔离级别为 REPEATABLE READ 或更高时使用 COPY 的 FREEZE 选项(Noah Misch)
之前的一项缺陷修复意外破坏了这种用法。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 AggGetAggref(),使其向转换计算已合并的聚合的最终函数返回正确的 Aggref 节点(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_dump 和 psql 中某些新查询的模式限定不充分的问题(Vitaly Burovoy,Tom Lane,Noah Misch)
变更
避免在 psql 的 \d 查询中使用 @> 操作符(Tom Lane)
这避免了安装 parray_gin 扩展时出现问题,因为该扩展定义了一个冲突的操作符。
变更
修复 pg_basebackup 的表空间路径匹配,使其在比较前先规范化两条路径(Michael Paquier)
这在 Windows 上尤其有用。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 libpq,使其不再要求用户主目录存在(Tom Lane)
在 v10 中,尝试读取 ~/.pgpass 时找不到主目录被视为严重错误,但实际上应只视为找不到该文件。v10 和以前的发布分支在读取 ~/.pg_service.conf 时都犯了同样的错误,不过这个问题不太明显,因为只有指定服务名时才会查找该文件。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 ecpglib 中,根据是否设置了 standard_conforming_strings 正确处理字符串字面量中的反斜杠(Tsunakawa Takayuki)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
使 ecpglib 的 Informix 兼容模式按预期忽略整数输入字符串中的小数位(Gao Zengqi,Michael Meskes)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复类似 check 的 Make 目标缺少 temp-install 前置依赖的问题(Noah Misch)
某些本应像 make check 一样工作的非默认测试过程,未能确保临时安装是最新的。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
将时区数据文件更新到 tzdata 2017c 版,以反映斐济、纳米比亚、北塞浦路斯、苏丹、汤加和特克斯 & 凯科斯群岛的夏令时法规变更,并修正阿拉斯加、阿皮亚、缅甸、加尔各答、底特律、爱尔兰、纳米比亚和帕果帕果的历史数据。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在文档中,恢复使用大写字符串作为 HTML 锚点(Peter Eisentraut)
由于工具链变更,10.0 用户手册的页内锚点使用了小写字符串,导致某些指向我们网站文档的外部链接失效。现在恢复了以前使用大写字符串的惯例。
试试其他关键词,或。
对比以 PostgreSQL 发行说明为依据,汇总起始版本之后、目标版本及之前的变更,支持同一大版本内的小版本更新,以及跨大版本升级。跨大版本时,旧分支的维护记录只纳入到下一大版本首次发布之日,所有记录均不晚于目标版本的发布日期。大版本名称(如 18)指首个正式版本(18.0);测试版与开发快照会单独标注。
条目正文来自本站中文手册,版本清单、条目覆盖与提交依据逐一核对上游英文原文。每条变更保留完整说明与原文链接;分类用于辅助浏览,具体影响、适用条件与升级操作请阅读条目正文和各版本的升级说明。
同一修复可能回补到多个版本分支。对比会保守合并可确认相同的条目,并保留各分支完整说明;已知由起始版本包含的修复会排除。一条说明包含多个独立修复时,只有全部已包含才排除。大版本新功能不因与旧版补丁存在提交关联而合并,不能确认相同的条目继续保留。这是发行说明的累计差异,不能覆盖二进制程序之间的每一处代码变化。
CVE 独立依据 PostgreSQL 官方安全公告与漏洞记录计算:起始版本受影响、目标版本已修复或不受影响的漏洞才计入,按编号去重。目标版本仍受影响的漏洞另行提示;安全变更条数与 CVE 数量分别统计。
交互参考 pgversions.com 与 pgversionreport,内容来自 PostgreSQL 发行说明。更多历史资料见发行说明归档。