选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

不受支持的版本: 9.5
历史版本PostgreSQL 9.5 已于 2021 年 2 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本手册首页

E.2. 版本 9.5.24 #

发布日期:. 2020-11-12

此版本包含自 9.5.23 以来的多种修复。 有关 9.5 大版本中新特性的信息,参见 第 E.26 节

PostgreSQL 社区将于 2021 年 2 月停止对 9.5.X 版本系列的更新。建议用户尽快更新到较新的版本分支。

E.2.1. 迁移到版本 9.5.24

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

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

E.2.2. 变更

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

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

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

  • 修复 pg_dumppg_restoreclusterdbreindexdbvacuumdb 中复杂连接字符串参数的用法 (Tom Lane)

    pg_dumppg_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 wraparoundcould not access status of transaction 错误。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 确保数据在插入 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)

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

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

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

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

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

  • 修复 SIGHUP 处理判定新的 GUC 变量值必须重启才能应用时的小内存泄漏 (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)

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

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

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

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

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

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。