↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

文档版本比较

POSTGRESQL · VERSION COMPARE

PostgreSQL 9.5.24 发布变化

此版本的完整功能、修复与兼容性说明,以及其他版本的关联记录。

此版本的完整变化
此版本的完整变化

包括起始版本之后至目标版本的变化。大版本号表示该分支的首个版本。

完整发布变化

9.5.24

2020-11-12

导出 JSON ↓
34项变化功能、修复、改进
1个版本按版本分组
3CVE独立漏洞编号

9.5.24stable支持截止 2021-02-11

安全变化
CVE / 问题严重程度修复版本所选版本状态
CVE-2020-25695

禁止在索引表达式和物化视图查询中执行 DECLARE CURSOR ... WITH HOLD 以及触发延迟触发器

9.5.24已记录修复
CVE-2020-25694

修复 pg_dump、pg_restore、 clusterdb、reindexdb 和 vacuumdb 中复杂连接字符串参数的用法

9.5.24已记录修复
CVE-2020-25696

防止 psql 的 \gset 命令修改特殊处理的变量

9.5.24已记录修复

PostgreSQL 9.5.24

迁移与兼容性

对于运行 9.5.X 的用户,不需要转储/恢复。

不过,如果你是从 9.5.20 之前的版本升级,参见第 E.6 节。

安全禁止在索引表达式和物化视图查询中执行 DECLARE CURSOR ... WITH HOLD 以及触发延迟触发器

变更

禁止在索引表达式和物化视图查询中执行 DECLARE CURSOR ... WITH HOLD 以及触发延迟触发器(Noah Misch)

这本质上是“安全受限操作”沙箱机制中的一种泄漏。有权创建非临时 SQL 对象的攻击者可以利用此泄漏以超级用户身份执行任意 SQL 代码。

PostgreSQL 项目感谢 Etienne Stalmans 报告此问题。(CVE-2020-25695)

关联记录 (5)
安全修复 pg_dump、pg_restore、 clusterdb、reindexdb 和 vacuumdb 中复杂连接字符串参数的用法

变更

修复 pg_dump、pg_restore、 clusterdb、reindexdb 和 vacuumdb 中复杂连接字符串参数的用法(Tom Lane)

pg_dump 和 pg_restore 的 -d 参数,或所述其他程序的 --maintenance-db 参数,可以是包含多个连接参数的“连接字符串”而不只是数据库名。在这些程序需要发起额外连接的场合(如并行处理或多数据库处理),连接字符串被遗忘,额外连接只使用了基本连接参数(数据库名、主机、端口和用户名)。如果连接字符串包含任何其他必要信息(如非默认的 SSL 或 GSS 参数),这可能导致连接失败。更糟的是,连接可能成功但没有按预期加密,或者容易受到原本预期的连接参数可以阻止的中间人攻击。(CVE-2020-25694)

关联记录 (5)
安全当 psql 的 \connect 命令复用连接参数时,确保先前连接字符串中所有未被覆盖的参数都被复用

变更

当 psql 的 \connect 命令复用连接参数时,确保先前连接字符串中所有未被覆盖的参数都被复用(Tom Lane)

这避免了因遗漏相关参数(如非默认的 SSL 或 GSS 选项)而导致重连失败的情况。更糟的是,重连可能成功但没有按预期加密,或者容易受到原本预期的连接参数可以阻止的中间人攻击。这与刚才提到的 pg_dump 等程序的问题基本相同,不过 psql 的行为更复杂,因为用户可能有意覆盖某些连接参数。(CVE-2020-25694)

关联记录 (5)
安全防止 psql 的 \gset 命令修改特殊处理的变量

变更

防止 psql 的 \gset 命令修改特殊处理的变量(Noah Misch)

不带前缀的 \gset 会覆盖服务器让它设置的任何变量。因此,一个被攻破的服务器可以设置 PROMPT1 等特殊处理的变量,从而能够在用户的会话中执行任意 shell 代码。

PostgreSQL 项目感谢 Nick Cleaton 报告此问题。(CVE-2020-25696)

关联记录 (5)
改进防止并发截断 SLRU 日志可能导致的数据丢失

变更

防止并发截断 SLRU 日志可能导致的数据丢失(Noah Misch)

这一罕见问题之后会表现为 “apparent wraparound” 或 “could not access status of transaction” 错误。

关联记录 (4)
改进确保检查点期间正确 fsync SLRU 目录

变更

确保检查点期间正确 fsync SLRU 目录(Thomas Munro)

这防止了后续操作系统崩溃时可能的数据丢失。

关联记录 (5)
问题修复修复对具有 BYPASSRLS 属性的用户的 ALTER ROLE

变更

修复对具有 BYPASSRLS 属性的用户的 ALTER ROLE(Tom Lane、Stephen Frost)

BYPASSRLS 属性只允许超级用户更改,但其他 ALTER ROLE 操作(如更改密码)应只需普通权限检查即可。原来的编码错误地把对此类角色的所有更改都限制为超级用户。

关联记录 (5)
问题修复修复带继承的 CREATE TABLE LIKE 中表达式的处理

变更

修复带继承的 CREATE TABLE LIKE 中表达式的处理(Tom Lane)

如果一条 CREATE TABLE 命令同时使用了 LIKE 和传统继承,来自 LIKE 父表的 CHECK 约束和表达式索引中的列引用容易被编错号,导致错误答案和/或离奇的错误消息。在拥有该特性的分支中,GENERATED 表达式也可能发生同样的问题。

关联记录 (4)
问题修复修复 to_date() 和 to_timestamp() 中负年份转换为公元前日期的差一错误

变更

修复 to_date() 和 to_timestamp() 中负年份转换为公元前日期的差一错误(Dar Alathar-Yemen、Tom Lane)

同时,让负年份与显式“BC”标记的组合相互抵消并产生公元日期。

关联记录 (5)
改进确保 archive_mode 设为 always 时备库服务器会归档 WAL 时间线历史文件

变更

确保 archive_mode 设为 always 时备库服务器会归档 WAL 时间线历史文件(Grigory Smolkin、Fujii Masao)

这一疏漏可能导致后续 PITR 恢复尝试失败。

关联记录 (5)
改进避免因 SIGQUIT 退出时运行 atexit 处理器

变更

避免因 SIGQUIT 退出时运行 atexit 处理器(Kyotaro Horiguchi、Tom Lane)

大多数服务器进程已经遵循这一做法,但归档器进程被遗漏了。仍在等待客户端启动包的后端也做错了。

关联记录 (4)
改进避免错误优化引用表面常量分组列的子查询限定条件

变更

避免错误优化引用表面常量分组列的子查询限定条件(Tom Lane)

如果“常量”子查询输出列是只出现在部分分组集中的分组列,它就不是真正的常量。

关联记录 (4)
改进避免 SQL 函数内联改变潜在可哈希子计划比较表达式形状时的失败

变更

避免 SQL 函数内联改变潜在可哈希子计划比较表达式形状时的失败(Tom Lane)

关联记录 (4)
改进在构建或重建索引期间,容忍并发更新导致的新 HOT 链的出现

变更

在构建或重建索引期间,容忍并发更新导致的新 HOT 链的出现(Anastasia Lubennikova、Álvaro Herrera)

这一疏漏可能导致 “failed to find parent tuple for heap-only tuple” 错误。

关联记录 (4)
改进确保数据在插入 BRIN 索引之前被解 TOAST

变更

确保数据在插入 BRIN 索引之前被解 TOAST(Tomas Vondra)

索引条目不应包含外联 TOAST 指针,但 BRIN 没有遵守这一点。这可能导致 “missing chunk number 0 for toast value NNN” 之类的错误。(如果现有索引报出这种错误,REINDEX 就足以修复。)

关联记录 (5)
改进在 BRIN 索引扫描期间正确处理并发取消摘要

变更

在 BRIN 索引扫描期间正确处理并发取消摘要(Alexander Lakhin、Álvaro Herrera)

此前,如果某个页范围恰好在错误的时间被取消摘要,索引扫描可能错误地报出指示索引损坏的错误。

关联记录 (4)
问题修复修复多列 GIN 索引扫描中罕见的 “lost saved point in index” 错误

变更

修复多列 GIN 索引扫描中罕见的 “lost saved point in index” 错误(Tom Lane)

关联记录 (4)
问题修复修复事件触发器监视 ALTER TABLE 操作时的释放后使用风险

变更

修复事件触发器监视 ALTER TABLE 操作时的释放后使用风险(Jehan-Guillaume de Rorthais)

关联记录 (4)
问题修复修复关于移动聚合数据类型不一致的错误错误消息

变更

修复关于移动聚合数据类型不一致的错误错误消息(Jeff Janes)

关联记录 (4)
改进避免并行工作者报告很长的错误消息时的锁死

变更

避免并行工作者报告很长的错误消息时的锁死(Vignesh C)

关联记录 (4)
改进避免通过共享内存队列传输超大载荷时不必要的失败

变更

避免通过共享内存队列传输超大载荷时不必要的失败(Markus Wanner)

关联记录 (5)
问题修复修复 RLS 策略导致的关系缓存内存泄漏

变更

修复 RLS 策略导致的关系缓存内存泄漏(Tom Lane)

关联记录 (5)
问题修复修复 SIGHUP 处理判定新的 GUC 变量值必须重启才能应用时的小内存泄漏

变更

修复 SIGHUP 处理判定新的 GUC 变量值必须重启才能应用时的小内存泄漏(Tom Lane)

关联记录 (5)
改进让 libpq 支持 .pgpass 文件中任意长度的行

变更

让 libpq 支持 .pgpass 文件中任意长度的行(Tom Lane)

这主要用于允许使用很长的安全令牌作为密码。

关联记录 (4)
改进在 Windows 的 libpq 中,每进程调用一次 WSAStartup(),完全不调用 WSACleanup()

变更

在 Windows 的 libpq 中,每进程调用一次 WSAStartup(),完全不调用 WSACleanup()(Tom Lane、Alexander Lakhin)

此前,libpq 在连接开始时调用 WSAStartup(),在连接清理时调用 WSACleanup()。然而,调用 WSACleanup() 似乎会干扰其他程序操作;特别是,我们观察到向 stdout 输出预期内容偶尔失败。省略该调用似乎没有不良影响,因此就这么做。(这还消除了程序执行一系列数据库连接时因反复加载和卸载 DLL 导致的性能问题。)

关联记录 (5)
问题修复修复 ecpg 库在 Windows 上的每线程初始化逻辑

变更

修复 ecpg 库在 Windows 上的每线程初始化逻辑(Tom Lane、Alexander Lakhin)

多线程的 ecpg 应用可能因错误的锁定而出现罕见的错误行为。

关联记录 (5)
改进在 Windows 上,让 psql 以文本模式而非二进制模式读取反引号命令的输出

变更

在 Windows 上,让 psql 以文本模式而非二进制模式读取反引号命令的输出(Tom Lane)

这确保正确处理换行符。

关联记录 (5)
改进确保 pg_dump 收集扩展配置表的逐列信息

变更

确保 pg_dump 收集扩展配置表的逐列信息(Fabrízio de Royes Mello、Tom Lane)

没有做到这一点会导致指定 --inserts 时崩溃,或在使用 COPY 重新装载表数据时生成欠指定(虽然通常正确)的 COPY 命令。

关联记录 (5)
改进让 pg_upgrade 检查目标集簇中表空间目录的预先存在

变更

让 pg_upgrade 检查目标集簇中表空间目录的预先存在(Bruce Momjian)

关联记录 (5)
问题修复修复 contrib/pgcrypto 中潜在的内存泄漏

变更

修复 contrib/pgcrypto 中潜在的内存泄漏(Michael Paquier)

关联记录 (5)
改进在 contrib/pgcrypto 中为一个不太可能发生的失败情况添加检查

变更

在 contrib/pgcrypto 中为一个不太可能发生的失败情况添加检查(Daniel Gustafsson)

关联记录 (5)
改进在 configure 的测试程序中使用 return 而非 exit()

变更

在 configure 的测试程序中使用 return 而非 exit()(Peter Eisentraut)

这避免了更挑剔的编译器下的失败。

关联记录 (1)
改进更新时区数据文件到 tzdata 版本 2020d,涉及斐济、摩洛哥、巴勒斯坦、加拿大育空、麦夸里岛和凯西站(南极洲)的夏令时法规变更,以及法国、匈牙利、摩纳哥和巴勒斯坦的历史修正。

变更

更新时区数据文件到 tzdata 版本 2020d,涉及斐济、摩洛哥、巴勒斯坦、加拿大育空、麦夸里岛和凯西站(南极洲)的夏令时法规变更,以及法国、匈牙利、摩纳哥和巴勒斯坦的历史修正。

关联记录 (5)
改进把我们的时区库副本与 IANA tzcode 版本 2020d 同步

变更

把我们的时区库副本与 IANA tzcode 版本 2020d 同步(Tom Lane)

这吸收了上游把 zic 默认输出选项从 “fat” 改为 “slim” 的变更。对我们的用途而言这只是表面变化,因为我们在 v13 之前的分支中继续选择 “fat” 模式。这一更改还确保 strftime() 不会在未失败时更改 errno。

关联记录 (5)
如何生成比较结果?

比较依据起始版本之后至目标版本的 PostgreSQL 发布说明。经核实的回补重复项会谨慎合并,保留每条原始说明;相关提交可能涉及独立变化,仍作为不同记录保留。

发布快照: 2026-09-26 · 安全快照: 2026-09-26

内容来自 PostgreSQL 发布说明。交互方式参考 pgversions.com 与 pgversionreport.