pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
文档版本对比
POSTGRESQL · VERSION COMPARE
本次发布的完整功能、修复与兼容性说明,以及它们在其他版本中的关联记录。
从起始版本之后,看到目标版本为止。大版本名称代表该系列首个正式版本。
收录 PostgreSQL 9.0 起的 17 个大版本、352 份发布说明;数据更新于 2026-09-26。
本次发布的全部变更
2020-11-12
11.10 历史版本维护截止 2023-11-09
| CVE / 问题 | 严重程度 | 修复版本 |
|---|---|---|
| CVE-2020-25695 禁止在索引表达式和物化视图查询中执行 DECLARE CURSOR ... WITH HOLD 以及触发延迟触发器 | 8.8 | 11.10 |
| CVE-2020-25694 修复 pg_dump、pg_restore、clusterdb、reindexdb 和 vacuumdb 对复杂连接字符串参数的使用 | 8.1 | 11.10 |
| CVE-2020-25696 防止 psql 的 \gset 命令修改具有特殊处理方式的变量 | 7.5 | 11.10 |
对于运行 11.X 的用户,不需要执行导出/恢复。
但是,如果是从早于 11.6 的版本升级,请参见第 E.17 节。
变更
禁止在索引表达式和物化视图查询中执行 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 日志可能造成的数据丢失(Noah Misch)
这一罕见问题会表现为后续出现 “apparent wraparound” 或 “could not access status of transaction” 错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保在检查点期间对 SLRU 目录正确执行 fsync(Thomas Munro)
这可以防止后续操作系统崩溃时可能发生的数据丢失。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复对具有 BYPASSRLS 属性的用户执行 ALTER ROLE 的行为(Tom Lane,Stephen Frost)
只有超级用户才可以修改 BYPASSRLS 属性,但其他 ALTER ROLE 操作(例如修改密码)应该只需通过普通权限检查就可以执行。之前的代码错误地将对此类角色的所有修改都限制为只能由超级用户执行。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保 ALTER TABLE ONLY ... ENABLE/DISABLE TRIGGER 不递归处理子表(Álvaro Herrera)
以前,ONLY 标志被忽略了。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复结合继承使用的 CREATE TABLE LIKE 中对表达式的处理(Tom Lane)
如果 CREATE TABLE 命令同时使用 LIKE 和传统继承,来自 LIKE 父表的 CHECK 约束及表达式索引中的列引用往往会被错误编号,导致错误结果或奇怪的错误消息。在具有生成列特性的分支中,GENERATED 表达式也可能出现同样的问题。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
禁止对分区表执行 DROP INDEX CONCURRENTLY(Álvaro Herrera,Michael Paquier)
这种情况本来就会失败,但错误消息令人困惑。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
允许对自引用视图成功执行 LOCK TABLE(Tom Lane)
以前会抛出关于无限递归的错误,但似乎没有必要禁止这种情况。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 to_date() 和 to_timestamp() 将负年份转换为公元前日期时相差一年的错误(Dar Alathar-Yemen,Tom Lane)
另外,使负年份与显式 “BC” 标记相抵消,得到 AD 年份。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保 archive_mode 设为 always 时,备库会归档 WAL 时间线历史文件(Grigory Smolkin,Fujii Masao)
这一疏漏可能导致后续的 PITR 恢复尝试失败。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复逻辑复制工作进程中的 “cache lookup failed for relation 0” 错误(Tom Lane)
实际影响很小,因为这种失败不太可能发生;即使发生,工作进程也只会退出并被重启。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
防止逻辑复制工作进程发送多余的 ping 请求(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 “smart” 关闭期间,在所有客户端(前台)会话结束之前,不终止后台进程(Tom Lane)
以前的行为会破坏并行查询处理,因为 postmaster 会终止并行工作进程,并拒绝启动新的并行工作进程。它还会使自动清理停止工作;如果仍存活的客户端会话进行了大量数据变更,就可能造成严重的长期影响。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免 postmaster 处理信号时递归消耗栈空间(Tom Lane)
已有观察表明,大量使用并行处理时,过多请求创建并行工作进程的并发信号会导致 postmaster 崩溃。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免因 SIGQUIT 退出时运行 atexit 处理函数(Kyotaro Horiguchi,Tom Lane)
大多数服务器进程早已遵循这一做法,但归档进程被遗漏了。仍在等待客户端启动包的后端也处理有误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免错误优化引用看似为常量的分组列的子查询限制条件(Tom Lane)
如果某个“常量”子查询输出列是仅出现在部分分组集中的分组列,它就并非真正的常量。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免 SQL 函数内联改变可能用于 hash 处理的子计划比较表达式的形态时发生失败(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
构建或重建索引时,容许因并发更新而出现新的 HOT 链(Anastasia Lubennikova,Álvaro Herrera)
这一疏漏可能导致 “failed to find parent tuple for heap-only tuple” 错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复索引条件无法满足时并行 B-树索引扫描的失败(James Hunter)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
确保数据插入 BRIN 索引之前,先将其从 TOAST 表示还原(Tomas Vondra)
索引条目本不应包含指向行外数据的 TOAST 指针,但 BRIN 没有遵守这一要求。这可能导致 “missing chunk number 0 for toast value NNN” 等错误。(如果现有索引出现这种错误,执行 REINDEX 应该就足以修复。)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 BRIN 索引扫描期间正确处理并发取消汇总(Alexander Lakhin,Álvaro Herrera)
以前,如果某个页范围恰好在不合适的时刻被取消汇总,索引扫描就可能错误地抛出表示索引损坏的错误。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复多列 GIN 索引扫描中罕见的 “lost saved point in index” 错误(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 pg_hba_file_rules 视图中不具可移植性的 getnameinfo() 用法(Tom Lane)
在 FreeBSD 11 以及可能的其他平台上,此错误会使该视图的 address 和 netmask 列始终为空。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免启动并行工作进程时 debug_query_string 为 NULL 所导致的崩溃(Noah Misch)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复事件触发器监控 ALTER TABLE 操作时的释放后使用隐患(Jehan-Guillaume de Rorthais)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复关于移动聚合数据类型不一致的不正确错误消息(Jeff Janes)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免并行工作进程报告很长的错误消息时卡死(Vignesh C)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
避免通过共享内存队列传输很大的数据载荷时发生不必要的失败(Markus Wanner)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 JIT 代码生成中对模板函数属性的不正确处理(Andres Freund)
已证实这会在 s390x 上导致崩溃,而且其他平台上很可能也存在其他情况。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 RLS 策略相关的关系缓存内存泄漏(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 SIGHUP 处理判定某个 GUC 变量的新值必须重启才能应用时出现的小量内存泄漏(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 PL/pgsql 的 CALL 处理中的内存泄漏(Pavel Stehule,Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
使 libpq 支持 .pgpass 文件中任意长度的行(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 命令。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
使 pg_upgrade 检查目标集群中的表空间目录是否已存在(Bruce Momjian)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复 contrib/pgcrypto 中潜在的内存泄漏(Michael Paquier)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
在 contrib/pgcrypto 中增加对一种不太可能发生的失败情况的检查(Daniel Gustafsson)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
修复最近添加的 timetz 测试用例,使其在美国未实行夏令时期间也能正常工作(Tom Lane)
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
将时区数据文件更新到 tzdata 2020d 版,以反映斐济、摩洛哥、巴勒斯坦、加拿大育空地区、麦夸里岛和凯西站(南极洲)的夏令时法规变更,并修正法国、匈牙利、摩纳哥和巴勒斯坦的历史数据。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
变更
将我们使用的时区库副本同步到 IANA tzcode 2020d 版(Tom Lane)
这纳入了上游将 zic 默认输出选项从 “fat” 改为 “slim” 的修改。对我们而言,这只是表面上的变化,因为在 v13 之前的分支中,我们仍然选择 “fat” 模式。此项修改还确保 strftime() 只在失败时才改变 errno。
“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。
试试其他关键词,或。
对比以 PostgreSQL 发行说明为依据,汇总起始版本之后、目标版本及之前的变更,支持同一大版本内的小版本更新,以及跨大版本升级。跨大版本时,旧分支的维护记录只纳入到下一大版本首次发布之日,所有记录均不晚于目标版本的发布日期。大版本名称(如 18)指首个正式版本(18.0);测试版与开发快照会单独标注。
条目正文来自本站中文手册,版本清单、条目覆盖与提交依据逐一核对上游英文原文。每条变更保留完整说明与原文链接;分类用于辅助浏览,具体影响、适用条件与升级操作请阅读条目正文和各版本的升级说明。
同一修复可能回补到多个版本分支。对比会保守合并可确认相同的条目,并保留各分支完整说明;已知由起始版本包含的修复会排除。一条说明包含多个独立修复时,只有全部已包含才排除。大版本新功能不因与旧版补丁存在提交关联而合并,不能确认相同的条目继续保留。这是发行说明的累计差异,不能覆盖二进制程序之间的每一处代码变化。
CVE 独立依据 PostgreSQL 官方安全公告与漏洞记录计算:起始版本受影响、目标版本已修复或不受影响的漏洞才计入,按编号去重。目标版本仍受影响的漏洞另行提示;安全变更条数与 CVE 数量分别统计。
交互参考 pgversions.com 与 pgversionreport,内容来自 PostgreSQL 发行说明。更多历史资料见发行说明归档。