pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
文档版本对比
POSTGRESQL · VERSION COMPARE
本次发布的完整功能、修复与兼容性说明,以及它们在其他版本中的关联记录。
从起始版本之后,看到目标版本为止。大版本名称代表该系列首个正式版本。
收录 PostgreSQL 9.0 起的 17 个大版本、352 份发布说明;数据更新于 2026-09-26。
本次发布的全部变更
2019-08-08
11.5 历史版本维护截止 2023-11-09
| CVE / 问题 | 严重程度 | 修复版本 |
|---|---|---|
| CVE-2019-10208 使用函数式类型转换语法转换为临时类型时,要求使用模式限定 | 7.5 | 11.5 |
| CVE-2019-10209 修复需要跨类型比较的 hash 子计划的执行 | 3.1 | 11.5 |
| CVE-2007-2138 使用函数式类型转换语法转换为临时类型时,要求使用模式限定 | — |
对于运行 11.X 的用户,不需要执行导出/恢复。
但是,如果是从早于 11.1 的版本升级,请参见第 E.22 节。
变更
使用函数式类型转换语法转换为临时类型时,要求使用模式限定(Noah Misch)
我们早已要求调用临时函数时显式指定临时模式,即 pg_temp.。现在也要求在使用函数记法转换为临时类型时这样做,例如 func_name(args)pg_temp.。否则,就可能利用临时对象截获函数调用,从而以与我们在 CVE-2007-2138 中阻止的方式基本相同的方式提升权限。(CVE-2019-10208)type_name(arg)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复需要跨类型比较的 hash 子计划的执行(Tom Lane,Andreas Seltenreich)
hash 子计划使用外层查询原有的比较操作符来比较 hash 表中的项。如果该操作符是跨类型的,这样做就是错误的,因为 hash 表中的所有项都会具有子查询的输出类型。对于核心 PostgreSQL 中可进行 hash 运算的跨类型操作符,这一错误在 64 位机器上似乎几乎没有危害,但在 32 位机器上可能导致崩溃,也可能造成未经授权的服务器内存泄露。扩展可能提供风险更大的、可进行 hash 运算的跨类型操作符。(CVE-2019-10209)
变更
修复在一条命令中更改多列类型时 ALTER TABLE ... ALTER COLUMN TYPE 发生的失败(Tom Lane)
这修复了最近的小版本引入的回归问题:使用被修改列的索引未得到正确处理,导致 ALTER TABLE 期间出现异常失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
如果子分区中存在待处理的触发器事件,则防止删除分区表的触发器(Álvaro Herrera)
这尤其适用于外键约束,因为外键约束是通过触发器实现的。
变更
将触发器定义从分区表复制到其分区时,包含用户指定的触发器参数(Patrick McHardy)
变更
建立依赖关系以防止删除分区键列(Tom Lane)
ALTER TABLE ... DROP COLUMN 会拒绝删除分区键列。但间接删除(例如删除键列的数据类型所引发的级联删除)没有这样的检查,因此可能删除键列。这会使分区表严重损坏,既无法访问也无法删除。
此修复添加了 pg_depend 条目,确保如果级联删除迫使键列被移除,将删除整个分区表,而非仅删除键列。不过,这些条目仅在创建分区表时生成,因此此修复无法消除现有分区表的风险。此问题只会发生在分区键列使用非内置数据类型的情况下,所以对大多数用户似乎没有威胁。
变更
确保分区表与其默认分区之间的列号得到正确映射(Amit Langote)
如果映射不是严格的一一对应,例如一个表中有已删除列而另一个表中没有,某些操作会出现错误行为。
变更
在分区表上创建索引时,忽略作为外部表的分区(Álvaro Herrera)
以前,遇到外部表分区时会抛出错误,但这没有帮助,也不能防止任何实际问题。
变更
在更多情况下剪枝分区表的默认分区(即避免无用地扫描它)(Yuzuko Hosoya)
变更
修复存在多个 boolean 类型分区键列时可能无法剪枝分区的问题(David Rowley)
变更
当涉及的表是继承父表时,不要通过优化移除 GROUP BY 列(David Rowley)
通常,如果表的主键列包含在 GROUP BY 中,就可以安全地移除其他分组列,因为主键列足以使各组唯一。但如果查询还读取继承子表,这条规则就不成立:父表的唯一性并不延伸到子表。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免对半连接查询错误地使用并行哈希连接(Thomas Munro)
此错误导致某些 EXISTS 查询返回重复的结果行。
变更
避免在某些带有 GROUPING SETS 的查询中使用不必要的排序步骤(Andrew Gierth,Richard Guo)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复规划器的索引端点探测可能发生的失败(Tom Lane)
使用最近创建的索引确定列的最小值或最大值时,规划器可能选中一个最近死亡、实际并不包含端点值的元组。最坏情况下,该元组可能包含空值,导致可见的 “found unexpected null value in index” 错误;更常见的情况是最终使用错误的值,降低规划估算的质量。
变更
修复 EvalPlanQual 复检期间无法访问触发器过渡表的问题(Alex Aktsipetrov)
在存在并发更新时,依赖过渡表的触发器有时会失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复重建外键约束时对多列外键的不正确处理(Tom Lane)
如果外键的各列类型不完全相同,ALTER TABLE 可能错误判断是否需要重新验证外键。这种错误似乎总会偏向保守方向,即进行不必要的重新验证。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
不再为继承树构建扩展统计信息(Tomas Vondra)
这避免了 ANALYZE 期间发生 “tuple already updated by self” 错误。
变更
避免升级元组锁时出现虚假的死锁错误(Oleksii Kliukin)
当两个或更多事务正在等待事务 T1 释放元组级锁,而 T1 又将锁升级到更高的级别时,T1 结束时可能会报告这些等待事务之间存在虚假的死锁。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复无法解除涉及多个并行工作进程的死锁的问题(Rui Hai Jiang)
尚不清楚非人为构造的查询能否触发此缺陷,但如果发生,参与本可解除的死锁的查询会一直阻塞,直到被取消。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止对端点为 infinity 的日期范围进行不正确的规范化(Laurenz Albe)
如果端点为无穷大,通过递增或递减端点值将开区间转换为闭区间(或反过来)是不正确的,因此在这种情况下保持范围原样。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复将非常大的 money 值转换为 numeric 时小数位丢失的问题(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 BTREE_META_CLEANUP WAL 记录的输出(Michael Paquier)
变更
防止对版本 2 的 B-树元页面处理不当导致断言失败(Peter Geoghegan)
变更
修复 MIPS CPU 的自旋锁汇编代码,使其适用于 MIPS r6(YunQiang Su)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保从 PL/pgSQL 函数返回的记录值或行值被标记为函数声明的复合类型(Tom Lane)
这可避免将结果直接存入表时出现问题。
变更
使 libpq 忽略连接服务文件中的回车符(\r)(Tom Lane,Michael Paquier)
在某些边界情况下,包含 Windows 风格换行符的服务文件可能被错误解析,导致连接失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 psql 中,避免在 SET 之后提供不正确的 Tab 补全选项(Tom Lane)variable =
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 psql 的 \d 命令中少量的内存泄漏(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_dump,以确保按正确顺序转储自定义操作符类(Tom Lane)
如果用户定义的操作符类是用户定义范围类型的子类型操作符类,相关对象会按错误顺序转储,产生无法恢复的转储。(底层对操作符类依赖关系的处理缺陷也可能在其他情况下出现,但这是唯一已知的情况。)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复使用 -R 选项时 pgbench 可能卡死的问题(Fabien Coelho)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
提高 contrib/amcheck 索引验证的可靠性(Peter Geoghegan)
变更
修复 contrib/jsonb_plperl 中对 Perl undef 值的处理(Ivan Panchenko)
变更
修复 contrib/passwordcheck,使其能与 check_password_hook 的其他使用者共存(Michael Paquier)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 contrib/sepgsql 测试,使其适用于近期的 SELinux 版本(Mike Palmiotto)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
提高 src/test/kerberos 和 src/test/ldap 回归测试的稳定性(Thomas Munro,Tom Lane)
变更
提高 src/test/recovery 回归测试的稳定性(Michael Paquier)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
减少 pg_upgrade 测试脚本的 stderr 输出(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pgbench 回归测试,使其适用于 Windows(Fabien Coelho)
变更
修复构建目录位于非根 msys 挂载点时 TAP 测试在 msys Perl 下的运行(Noah Misch)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
支持使用 Microsoft Visual Studio 2019 构建 Postgres(Haribabu Kommi)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 Visual Studio 构建中,如果设置了 WindowsSDKVersion 环境变量,则遵循其设置(Peifeng Qiu)
这修复了某些配置下的构建失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 Visual Studio 构建中支持 OpenSSL 1.1.0 及更新版本(Juan José Santamaría Flecha,Michael Paquier)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在顶层调用非 GNU make 时,允许将 make 选项向下传递给 gmake(Thomas Munro)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 initdb 期间,避免选择 localtime 或 posixrules 作为 TimeZone(Tom Lane)
在某些情况下,initdb 会选择这两个人为设置的时区名之一,而非“真实”的时区名。现在,只要有其他名称与 C 库的时区行为匹配,就优先选择其他名称。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
调整 pg_timezone_names 视图,使其仅在 Factory 时区具有简短缩写时才显示它(Tom Lane)
历史上,IANA 为这个人为设置的时区指定了类似 Local time zone must be set--see zic manual page 的“缩写”。现代版本的 tzdb 数据库改为显示 -00,但某些平台会修改数据,显示某个历史短语。现在,仅当此时区使用现代缩写时才显示它。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
将我们使用的时区库副本同步到 IANA tzcode 2019b 版(Tom Lane)
这添加了对 zic 的新选项 -b slim 的支持,可减小已安装时区文件的大小。我们目前未使用此选项,但未来可能会启用。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
将时区数据文件更新到 tzdata 2019b 版,以反映巴西的夏令时法规变更,并修正香港、意大利和巴勒斯坦的历史数据。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
试试其他关键词,或。
对比以 PostgreSQL 发行说明为依据,汇总起始版本之后、目标版本及之前的变更,支持同一大版本内的小版本更新,以及跨大版本升级。跨大版本时,旧分支的维护记录只纳入到下一大版本首次发布之日,所有记录均不晚于目标版本的发布日期。大版本名称(如 18)指首个正式版本(18.0);测试版与开发快照会单独标注。
条目正文来自本站中文手册,版本清单、条目覆盖与提交依据逐一核对上游英文原文。每条变更保留完整说明与原文链接;分类用于辅助浏览,具体影响、适用条件与升级操作请阅读条目正文和各版本的升级说明。
同一修复可能回补到多个版本分支。对比会保守合并可确认相同的条目,并保留各分支完整说明;已知由起始版本包含的修复会排除。一条说明包含多个独立修复时,只有全部已包含才排除。大版本新功能不因与旧版补丁存在提交关联而合并,不能确认相同的条目继续保留。这是发行说明的累计差异,不能覆盖二进制程序之间的每一处代码变化。
CVE 独立依据 PostgreSQL 官方安全公告与漏洞记录计算:起始版本受影响、目标版本已修复或不受影响的漏洞才计入,按编号去重。目标版本仍受影响的漏洞另行提示;安全变更条数与 CVE 数量分别统计。
交互参考 pgversions.com 与 pgversionreport,内容来自 PostgreSQL 发行说明。更多历史资料见发行说明归档。