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

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

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

E.5. 版本 9.4.22 #

发布日期:. 2019-05-09

本发行版包含对 9.4.21 的多项修复。有关 9.4 主版本中新功能的信息,请参见第 E.27 节

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

E.5.1. 迁移到版本 9.4.22

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

但是,如果你是从早于 9.4.18 的版本升级,请参见第 E.9 节

E.5.2. 变更

  • 修复对每个表都可被排除的继承树或分区表执行 UPDATEDELETE 时的行为(Amit Langote、Tom Lane)

    这类情况下,当存在 RETURNING 子句时,查询没有报告 正确的输出列集合;如果有应当触发的语句级触发器,它也没有触发。

  • 修复目标关系是可更新视图时带多行 VALUESINSERT ... VALUES 命令中显式 DEFAULT 项的处理(Amit Langote、Dean Rasheed)

    当可更新视图对该列没有默认值而其底层表有时,单行 INSERT ... VALUES 会使用底层表的默认值。然而在 多行情况下,总是使用 NULL。已纠正为与单行情况一致。

  • 修复 CREATE VIEW 允许零列视图(Ashutosh Sharma)

    为了与允许零列表保持一致,我们应当允许这一点。由于表可以被转换为 视图,即使有此限制也能创建零列视图,从而导致转储/恢复失败。

  • xmloption 设为 content 时按 SQL:2006 及后续标准的要求接受 XML 文档作为 xml 类型的 有效值(Chapman Flack)

    此前 PostgreSQL 遵循不允许这么做的 SQL:2003 定义。但这给转储/恢复带来了严重问题:没有哪个 xmloption 设置能接受所有有效 XML 数据。因此切换 到 2006 定义。

    还修改了 pg_dump,使其在恢复数据期间发出 SET xmloption = content,确保即使当前设置是 document 转储/恢复也能工作。

  • 改进服务器启动时对既有共享内存段是否仍在使用的检查(Noah Misch)

    即使 postmaster.pid 文件已被移除,postmaster 现在 也更可能检测到上一个 postmaster 实例仍有活动进程。

  • 修复 GIN 索引 WAL 记录的不兼容(Alexander Korotkov)

    二月份小版本中应用的一个修复对向后兼容性不够谨慎,导致那个年代的备库 服务器读取前一个小版本的主库生成的 GIN 页删除 WAL 记录时出问题。

  • 在适当的情况下容忍 fsyncsync_file_range 调用的 EINVALENOSYS 错误结果(Thomas Munro、James Sewell)

    此前对文件同步失败就 panic 的更改对于某些失败可预见且基本上意味着 操作不受支持的情况显得过于偏执。

  • 修复 FULL 外连接中通向外部横向引用导致的 failed to build any N-way joins 规划器失败(Tom Lane)

  • 在执行关于让泄漏型操作符看到 pg_statistic 数据的规则时,检查正确用户的权限(Dean Rasheed)

    当底层表通过视图被访问时,在决定是否可以把泄漏型操作符应用于该表的 统计数据时,考虑视图所有者的权限而不是发起查询的用户的权限。这使 规划器关于哪些数据可见的规则与执行器的规则一致,避免了不必要的 低劣计划。

  • 避免回滚创建了许多表的事务时的 O(N^2) 性能问题(Tomas Vondra)

  • 修复动态共享内存管理中的竞态条件(Thomas Munro)

    这些可能导致 dsa_area could not attach to segmentcannot unpin a segment that is not pinned 错误。

  • 修复热备 postmaster 收到 smart 关闭请求后可能不关闭的竞态条件 (Tom Lane)

  • 收紧对编码后的 SCRAM-SHA-256 和 MD5 口令的验证(Jonathan Katz)

    开头字符正确的口令字符串可能被误认为是已正确哈希为 SCRAM-SHA-256 或 MD5 格式的口令。这种口令会被接受但之后无法使用。

  • 修复对隐含与数据库编码不同的编码的 lc_time 设置的 处理(Juan José Santamaría Flecha、Tom Lane)

    包含非 ASCII 字符的本地化月份或日期名此前在此类区域中导致意外错误或 错误输出。

  • 禁止把 NaN 用作浮点服务器参数的值(Tom Lane)

  • 重排 REINDEX 处理,避免对 pg_class 的单个索引重建时断言失败 (Andres Freund、Tom Lane)

  • 修复参数化虚拟路径的规划器断言失败(Tom Lane)

  • SnapBuildInitialSnapshot() 的结果中插入正确的 测试函数(Antonin Houska)

    没有核心代码关心这一点,但一些扩展关心。

  • 修复 Windows 上间歇性的 could not reattach to shared memory 会话启动失败(Noah Misch)

    这些失败的一个此前未被识别的来源是为进程默认线程池创建线程栈。安排把 这种栈分配在不同的内存区域。

  • 修复 Windows 上目录扫描中的错误检测(Konstantin Knizhnik)

    诸如缺少读取目录权限之类的错误没有被正确检测或报告;代码而是静默地 表现为目录为空。

  • 修复 ecpg 中的语法问题(Tom Lane)

    一个缺失的分号导致 ecpg 程序中的 SET variable = DEFAULT (但不是 SET variable TO DEFAULT)被错误翻译,产生服务器会拒绝的语法无效输出。 此外,在列出多个类型名的 DROP TYPEDROP DOMAIN 命令中,实际上只处理了第一个类型名。

  • 修复 ecpg 处理 include 文件名时可能的缓冲 区越界(Liu Huailing、Fei Wu)

  • 避免contrib/vacuumlolo_unlink()调用失败时崩溃(Tom Lane)

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

    这更正了 zic 的一个小 bug——它在 Africa/Casablanca 时区输出错误的 2440 年转换, 并增加了对 zic-r 选项的支持。

  • 更新时区数据文件到 tzdata 版本 2019a,涉及 巴勒斯坦和梅特拉卡特拉的夏令时法规变更,以及以色列的历史修正。

    Etc/UCT 现在是指向 Etc/UTC 的 向后兼容链接,而不再是生成缩写 UCT 的独立时区 ——如今 UCT 通常是笔误。PostgreSQL 仍然 接受 UCT 作为输入时区缩写,但不会输出它。

提交更正

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