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

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

已结束支持的版本: 9.5
历史版本。 PostgreSQL 9.5 已结束支持。 2021-02-11. 请参阅 当前版本手册.

E.12. 版本 9.5.14 #

发布日期:. 2018-08-09

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

E.12.1. 迁移到版本 9.5.14

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

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

E.12.2. 变更

  • 修复连接尝试之间未能完全重置 libpq 状态的问题(Tom Lane)

    dblink 或 postgres_fdw 的无权限用户可以绕过旨在防止使用服务器端凭据(如运行服务器的操作系统用户拥有的 ~/.pgpass 文件)的检查。允许本地连接上对等认证的服务器尤其容易受影响。其他攻击(如向 postgres_fdw 会话注入 SQL)也是可能的。以这种方式攻击 postgres_fdw 需要能够创建带选定连接参数的外部服务器对象,但任何能访问 dblink 的用户都可以利用该问题。一般而言,能够为使用 libpq 的应用选择连接参数的攻击者都可能作恶,尽管其他合理的攻击场景更难想到。感谢 Andrew Krasichkov 报告此问题。(CVE-2018-10915)

  • 修复通过不只是 SELECT * FROM ... 的视图执行 INSERT ... ON CONFLICT UPDATE 的问题(Dean Rasheed、Amit Langote)

    如果视图的 SELECT 列表与底层表的列不是一一对应,可更新视图的错误展开可能导致崩溃或 “attribute ... has the wrong type” 错误。此外,如果攻击用户对表的其他某些列有 INSERT 和 UPDATE 权限,此 bug 可被利用来更新该用户没有 UPDATE 权限的列。任何用户还可以利用它泄露服务器内存。(CVE-2018-10925)

  • 确保对“钉住”的系统目录的 relfrozenxid 和 relminmxid 值的更新被及时处理(Andres Freund)

    过于乐观的缓存规则可能阻止其他会话看到这些更新,导致虚假错误和/或数据损坏。对于 pg_authid 等共享目录,问题明显更严重,因为过期的缓存数据不仅存在于现有会话,还会持续到新会话中。

  • 修复刚提升的备库在完成第一个恢复后检查点之前崩溃的情况(Michael Paquier、Kyotaro Horiguchi、Pavan Deolasee、Álvaro Herrera)

    这导致服务器在后续 WAL 重放期间认为自己没有达到一致的数据库状态,无法重启。

  • 避免回收全零 btree 页时发出虚假 WAL 记录(Amit Kapila)

    这个错误曾被观察到导致断言失败,并且可能让热备服务器上发生不必要的查询取消。

  • 在 WAL 重放期间,防范损坏的记录长度超过 1GB(Michael Paquier)

    把这种情况当作损坏数据。此前代码会试图分配空间并得到硬错误,使恢复无法进行。

  • 结束恢复时,尽可能推迟写入时间线历史文件(Heikki Linnakangas)

    这避免了恢复清理期间的失败(如两阶段状态文件的问题)导致磁盘上时间线状态不一致的一些情况。

  • 改进删除许多关系的事务的 WAL 重放性能(Fujii Masao)

    这一更改减少了共享缓冲区被扫描的次数,因此在该设置较大时收益最大。

  • 改进备库服务器 WAL 重放中锁释放的性能(Thomas Munro)

  • 让逻辑 WAL 发送者正确报告流状态(Simon Riggs、Sawada Masahiko)

    代码此前错误判断是否已追上上游服务器。

  • 修复逻辑解码期间快照处理中的 bug,罕见情况下可能导致错误的解码结果(Arseny Sher、Álvaro Herrera)

  • 确保索引创建中途失败后正确重建表的缓存索引列表(Peter Geoghegan)

    此前失败索引的 OID 可能留在列表中,在同一会话中之后引起问题。

  • 修复 GIN 索引中空未压缩 posting 列表页的处理不当(Sivasubramanian Ramasubramanian、Alexander Korotkov)

    这可能导致 9.4 之前的 GIN 索引经 pg_upgrade 之后的断言失败(9.4 及之后不会创建这种页)。

  • 确保 VACUUM 在 btree 页删除循环中响应信号(Andres Freund)

    损坏的 btree 索引可能在这里导致无限循环,而此前不强制崩溃就无法中断。

  • 修复涉及复合类型列的等价类的错误优化(Tom Lane)

    这导致未能识别复合列上的索引可以为该列上的归并连接提供所需的排序顺序。

  • 修复 SQL 标准 FETCH FIRST 语法允许参数($n),正如标准所期望的(Andrew Gierth)

  • 修复 getObjectDescription 输出中某些对象名未做模式限定的问题(Kyotaro Horiguchi、Tom Lane)

    排序规则、转换和文本搜索对象的名称在应当模式限定时没有限定。

  • 把 COPY FROM 的当前行号计数器从 32 位加宽到 64 位(David Rowley)

    这避免了超过 4G 行输入的两个问题:COPY FROM WITH HEADER 会每 4G 行丢弃一行而不只是第一行;错误报告可能显示错误的行号。

  • 向 ecpg 的 pgtypes 库添加字符串释放函数,以避免 Windows 上的跨模块内存管理问题(Takayuki Tsunakawa)

    在 Windows 上,如果给定内存块的 free 调用不是来自 malloc 该内存的同一 DLL,就会发生崩溃。pgtypes 库有时返回期望调用者释放的字符串,使得无法遵循这一规则。添加了仅包装 free 的 PGTYPESchar_free() 函数,允许应用遵循规则。

  • 修复 ecpg 在 Windows 以及其他非标准声明 strtoll/strtoull 或根本不声明的平台上对 long long 变量的支持(Dang Minh Huong、Tom Lane)

  • 修复规则更改导致会话内语句语义改变时 PL/pgSQL 对 SQL 语句类型的错误识别(Tom Lane)

    这个错误导致断言失败,或者罕见情况下未能按预期执行 INTO STRICT 选项。

  • 修复客户端程序中的密码提示,使 Windows 上 stdin 不是终端时正确关闭回显(Matthew Stickney)

  • 进一步修复转储中列表值 GUC 变量值的错误引号(Tom Lane)

    此前对 pg_dump 输出中 search_path 及其他列表值变量加引号的修复,对空字符串列表元素行为不当,并且有截断长文件路径的风险。

  • 修复 pg_dump 未能转储约束索引的 REPLICA IDENTITY 属性(Tom Lane)

    手动创建的唯一索引被正确标记,但声明 UNIQUE 或 PRIMARY KEY 约束创建的没有。

  • 让 pg_upgrade 检查旧服务器是否被干净地关闭(Bruce Momjian)

    原来的检查可能被立即模式关闭欺骗。

  • 修复 contrib/hstore_plperl 透过 Perl 标量引用查看,以及在预期位置找不到哈希引用时不崩溃(Tom Lane)

  • 修复 contrib/ltree 的 lca() 函数在输入数组为空时崩溃的问题(Pierre Ducroquet)

  • 修复若干可能报告错误错误码的错误处理代码路径(Michael Paquier、Tom Lane、Magnus Hagander)

  • 重排 makefile,确保程序链接到新构建的库(如 libpq.so)而不是系统库目录中可能存在的(Tom Lane)

    这避免了在提供旧版 PostgreSQL 库副本的平台上构建时的问题。

  • 更新时区数据文件到 tzdata 版本 2018e,涉及朝鲜的夏令时法规变更,以及捷克斯洛伐克的历史修正。

    此更新包括对爱尔兰以及纳米比亚和捷克斯洛伐克某些过去年份“夏令时”的重新定义。在这些司法管辖区,法律上夏季实行标准时间、冬季实行夏令时,因此夏令时偏移比标准时间晚一小时而不是早一小时。这不影响实际 UTC 偏移或所用的时区缩写;唯一已知的效果是这些情况下 pg_timezone_names 视图的 is_dst 列现在冬季为真、夏季为假。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.