pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
文档版本对比
POSTGRESQL · VERSION COMPARE
本次发布的完整功能、修复与兼容性说明,以及它们在其他版本中的关联记录。
从起始版本之后,看到目标版本为止。大版本名称代表该系列首个正式版本。
收录 PostgreSQL 9.0 起的 17 个大版本、352 份发布说明;数据更新于 2026-09-26。
本次发布的全部变更
2020-11-12
13.1 历史版本维护截止 2025-11-13
| CVE / 问题 | 严重程度 | 修复版本 |
|---|---|---|
| CVE-2020-25695 禁止在索引表达式和物化视图查询中执行 DECLARE CURSOR ... WITH HOLD 以及触发延迟触发器 | 8.8 | 13.1 |
| CVE-2020-25694 修复 pg_dump、pg_restore、clusterdb、reindexdb 和 vacuumdb 对复杂连接字符串参数的使用 | 8.1 | 13.1 |
| CVE-2020-25696 防止 psql 的 \gset 命令修改具有特殊处理方式的变量 | 7.5 | 13.1 |
对于运行 13.X 的用户,不需要执行导出/恢复。
变更
禁止在索引表达式和物化视图查询中执行 DECLARE CURSOR ... WITH HOLD 以及触发延迟触发器(Noah Misch)§
这实际上是“安全受限操作”沙箱机制中的一个漏洞。有权创建非临时 SQL 对象的攻击者可以利用此漏洞,以超级用户身份执行任意 SQL 代码。
PostgreSQL 项目感谢 Etienne Stalmans 报告此问题。(CVE-2020-25695)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_dump、pg_restore、clusterdb、reindexdb 和 vacuumdb 对复杂连接字符串参数的使用(Tom Lane)§ §
pg_dump 和 pg_restore 的 -d 参数,以及其他上述程序的 --maintenance-db 参数,可以是包含多个连接参数的“连接字符串”,而不仅仅是数据库名称。当这些程序需要发起额外连接时,例如进行并行处理或处理多个数据库时,连接字符串会被遗忘,额外连接只会使用基本连接参数(数据库名称、主机、端口和用户名)。如果连接字符串包含其他必要信息,例如非默认的 SSL 或 GSS 参数,这可能导致连接失败。更糟的是,连接可能成功建立,却未按预期加密,或者可能遭受本应由指定连接参数防止的中间人攻击。(CVE-2020-25694)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
当 psql 的 \connect 命令复用连接参数时,确保复用先前连接字符串中所有未被覆盖的参数(Tom Lane)§
这可以避免因遗漏相关参数(例如非默认的 SSL 或 GSS 选项)而导致重新连接失败。更糟的情况是,重新连接可能成功,却未按预期加密,或者可能遭受本应由指定连接参数防止的中间人攻击。这与刚才提到的 pg_dump 等程序的问题基本相同,只是 psql 的行为更复杂,因为用户可能有意覆盖某些连接参数。(CVE-2020-25694)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止 psql 的 \gset 命令修改具有特殊处理方式的变量(Noah Misch)§
不带前缀的 \gset 会覆盖服务器要求其设置的任何变量。因此,被攻陷的服务器可以设置 PROMPT1 等受到特殊处理的变量,从而能够在用户会话中执行任意 shell 代码。
PostgreSQL 项目感谢 Nick Cleaton 报告此问题。(CVE-2020-25696)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保在检查点期间对 SLRU 目录正确执行 fsync(Thomas Munro)§
这可以防止后续操作系统崩溃时可能发生的数据丢失。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复对具有 BYPASSRLS 属性的用户执行 ALTER ROLE 的行为(Tom Lane,Stephen Frost)§
只有超级用户才可以修改 BYPASSRLS 属性,但其他 ALTER ROLE 操作(例如修改密码)应该只需通过普通权限检查就可以执行。之前的代码错误地将对此类角色的所有修改都限制为只能由超级用户执行。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
存在子表时,禁止 ALTER TABLE ONLY ... DROP EXPRESSION(Peter Eisentraut)§
当前实现无法正确处理这种情况,因此暂时将其禁止。
变更
确保 ALTER TABLE ONLY ... ENABLE/DISABLE TRIGGER 不递归处理子表(Álvaro Herrera)§
以前,ONLY 标志被忽略了。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
允许对自引用视图成功执行 LOCK TABLE(Tom Lane)§
以前会抛出关于无限递归的错误,但似乎没有必要禁止这种情况。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 REINDEX CONCURRENTLY 前后保留索引的统计信息(Michael Paquier,Fabrízio de Royes Mello)§
非并发的索引重建一直会保留这些统计信息。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 REINDEX CONCURRENTLY 不正确的进度报告(Matthias van de Meent,Michael Paquier)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保通过规则或可更新视图更新 GENERATED 列所依赖的列时,生成列也得到更新(Tom Lane)§
此修复还处理了在这些情况下可能未能触发特定列触发器的问题。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
支持对 text 数组进行 hash 运算(Peter Eisentraut)§
如果数组元素类型支持排序规则,对数组进行 hash 计算就会失败。尤其是,这使 text 数组列无法用作 hash 分区的分区键。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止跨类型日期时间比较中的内部溢出(Nikita Glukhov,Alexander Korotkov,Tom Lane)§
以前,将日期与时间戳比较时,如果日期超出了时间戳的有效范围,就会失败。还有一些边界情况涉及接近限值的时间戳在时区转换期间溢出。
变更
修复 to_date() 和 to_timestamp() 将负年份转换为公元前日期时相差一年的错误(Dar Alathar-Yemen,Tom Lane)§
另外,使负年份与显式 “BC” 标记相抵消,得到 AD 年份。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保 archive_mode 设为 always 时,备库会归档 WAL 时间线历史文件(Grigory Smolkin,Fujii Masao)§
这一疏漏可能导致后续的 PITR 恢复尝试失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免排序键为易变表达式时生成不正确的增量排序计划(James Coleman)§
变更
修复 GEQO 规划期间考虑逐分区连接时可能发生的崩溃(Tom Lane)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复仅执行清理的 VACUUM 期间对 B-树索引条目数量的统计(Peter Geoghegan)§
变更
确保数据插入 BRIN 索引之前,先将其从 TOAST 表示还原(Tomas Vondra)§
索引条目本不应包含指向行外数据的 TOAST 指针,但 BRIN 没有遵守这一要求。这可能导致 “missing chunk number 0 for toast value NNN” 等错误。(如果现有索引出现这种错误,执行 REINDEX 应该就足以修复。)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复带缓冲的 GiST 索引构建,使其在索引具有内含列时正常工作(Pavel Borisov)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_hba_file_rules 视图中不具可移植性的 getnameinfo() 用法(Tom Lane)§
在 FreeBSD 11 以及可能的其他平台上,此错误会使该视图的 address 和 netmask 列始终为空。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免启动并行工作进程时 debug_query_string 为 NULL 所导致的崩溃(Noah Misch)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 EXPLAIN 对增量排序计划的输出,使其在 XML 输出模式下具有正确的标签嵌套(Daniel Gustafsson)§
变更
避免通过共享内存队列传输很大的数据载荷时发生不必要的失败(Markus Wanner)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 SQL 语言函数在某些情况下遗漏结果数据类型强制转换的问题(Tom Lane)§
根据所涉及的数据类型,这可能导致错误结果或崩溃。
变更
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 RLS 策略相关的关系缓存内存泄漏(Tom Lane)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 index_get_partition() 在边界情况下的内存泄漏(Justin Pryzby)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 SIGHUP 处理判定某个 GUC 变量的新值必须重启才能应用时出现的小量内存泄漏(Tom Lane)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 PL/pgsql 的 CALL 处理中的内存泄漏(Pavel Stehule,Tom Lane)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 Windows 版 libpq 中,每个进程只调用一次 WSAStartup(),完全不调用 WSACleanup()(Tom Lane,Alexander Lakhin)§
以前,libpq 在连接开始时调用 WSAStartup(),在连接清理时调用 WSACleanup()。但调用 WSACleanup() 似乎会干扰程序的其他操作;特别是,我们观察到过无法将预期输出写入 stdout 的罕见失败。省略该调用似乎没有不良影响,因此予以省略。(这还消除了程序执行一连串数据库连接时,反复加载和卸载 DLL 所造成的性能问题。)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 ecpg 库在 Windows 上的逐线程初始化逻辑(Tom Lane,Alexander Lakhin)§
多线程 ecpg 应用可能因锁定不正确而偶发行为异常。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 Windows 上,使 psql 以文本模式而非二进制模式读取反引号命令的输出(Tom Lane)§
这可以确保正确处理换行符。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保 pg_dump 收集扩展配置表的逐列信息(Fabrízio de Royes Mello,Tom Lane)§ §
未能这样做会导致指定 --inserts 时崩溃,或在使用 COPY 重载表数据时生成指定不完整(虽然通常正确)的 COPY 命令。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 contrib/pgcrypto 中潜在的内存泄漏(Michael Paquier)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 contrib/pgcrypto 中增加对一种不太可能发生的失败情况的检查(Daniel Gustafsson)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复最近添加的 timetz 测试用例,使其在美国未实行夏令时期间也能正常工作(Tom Lane)§
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
将时区数据文件更新到 tzdata 2020d 版,以反映斐济、摩洛哥、巴勒斯坦、加拿大育空地区、麦夸里岛和凯西站(南极洲)的夏令时法规变更,并修正法国、匈牙利、摩纳哥和巴勒斯坦的历史数据。(Tom Lane)§ §
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
将我们使用的时区库副本同步到 IANA tzcode 2020d 版(Tom Lane)§ §
这纳入了上游将 zic 默认输出选项从 “fat” 改为 “slim” 的修改。对我们而言,这只是表面上的变化,因为在 v13 之前的分支中,我们仍然选择 “fat” 模式。此项修改还确保 strftime() 只在失败时才改变 errno。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
试试其他关键词,或。
对比以 PostgreSQL 发行说明为依据,汇总起始版本之后、目标版本及之前的变更,支持同一大版本内的小版本更新,以及跨大版本升级。跨大版本时,旧分支的维护记录只纳入到下一大版本首次发布之日,所有记录均不晚于目标版本的发布日期。大版本名称(如 18)指首个正式版本(18.0);测试版与开发快照会单独标注。
条目正文来自本站中文手册,版本清单、条目覆盖与提交依据逐一核对上游英文原文。每条变更保留完整说明与原文链接;分类用于辅助浏览,具体影响、适用条件与升级操作请阅读条目正文和各版本的升级说明。
同一修复可能回补到多个版本分支。对比会保守合并可确认相同的条目,并保留各分支完整说明;已知由起始版本包含的修复会排除。一条说明包含多个独立修复时,只有全部已包含才排除。大版本新功能不因与旧版补丁存在提交关联而合并,不能确认相同的条目继续保留。这是发行说明的累计差异,不能覆盖二进制程序之间的每一处代码变化。
CVE 独立依据 PostgreSQL 官方安全公告与漏洞记录计算:起始版本受影响、目标版本已修复或不受影响的漏洞才计入,按编号去重。目标版本仍受影响的漏洞另行提示;安全变更条数与 CVE 数量分别统计。
交互参考 pgversions.com 与 pgversionreport,内容来自 PostgreSQL 发行说明。更多历史资料见发行说明归档。