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

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

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

E.18. 版本 9.6.7 #

发布日期:. 2018-02-08

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

E.18.1. 迁移到版本 9.6.7

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

不过,如果你使用 contrib/cube~> 操作符,请参见下面相关条目。

另外,如果你是从 9.6.6 之前的版本升级,参见 第 E.19 节

E.18.2. 变更

  • 确保 pg_upgrade 创建的所有临时文件对其他用户 不可读(Tom Lane、Noah Misch)

    pg_upgrade 通常将其临时文件限制为只有调用 用户可读写。但如果用户的 umask 设置允许,包含 pg_dumpall -g 输出的临时文件会是组可读或全局可 读,甚至可写。在多用户机器的典型用法中,umask 和/或工作目录的权限会足够严格以防止问题;但可能有人在 pg_upgrade 的这一疏漏允许向不友好者泄露 数据库密码的场景下使用它。(CVE-2018-1053)

  • 修复对在键共享锁定下被更新的元组的清理(Andres Freund、 Álvaro Herrera)

    某些情况下,VACUUM 即使这些元组现在已经死亡也不会 移除它们,导致各种数据损坏场景。

  • 确保 vacuum 总是清理 GIN 索引的未决插入列表(Masahiko Sawada)

    这对确保死索引条目被移除是必要的。原来的代码弄反了,允许 vacuum 在 某个其他进程并发运行清理时跳过清理,从而使索引中留下无效条目。

  • 修复某些 LSN 获取中不充分的缓冲区锁定 (Jacob Champion、Asim Praveen、Ashwin Agrawal)

    这些错误可能导致并发负载下的行为异常。潜在后果尚未完全弄清。

  • 修复子查询输出用于 GROUPING SETS 时子查询展平相关 情况的错误查询结果(Heikki Linnakangas)

  • 避免与 ALTER TABLE NO INHERIT 并发地从树中移除某个 子表时对继承树的查询不必要的失败(Tom Lane)

  • 修复多个会话运行 CREATE INDEX CONCURRENTLY 时的 虚假死锁失败(Jeff Janes)

  • 修复继承树包含外部子表时的失败(Etsuro Fujita)

    继承树中普通表和外部表的混合导致为 UPDATEDELETE 查询创建错误计划。这在某些情况下导致 可见的失败,特别是当外部子表上有行级触发器时。

  • 修复 LATERAL 子查询内 VALUES 内 相关子 SELECT 的失败(Tom Lane)

  • 修复横向子查询内嵌套 UNION ALL 的某些情况下 could not devise a query plan for the given query 规划器失败(Tom Lane)

  • 修复逻辑解码正确清理崩溃事务的磁盘文件(Atsushi Torikoshi)

    逻辑解码可能为生成许多 WAL 记录的事务把 WAL 记录溢出到磁盘。通常这些 文件在事务的提交或中止记录到达后清理;但如果从未看到这样的记录, 移除代码就会行为不当。

  • 修复处理大事务时的 walsender 超时失败和中断响应失败(Petr Jelinek)

  • 修复 has_sequence_privilege() 像其他权限测试函数 一样支持 WITH GRANT OPTION 测试(Joe Conway)

  • 在使用 UTF8 编码的数据库中,忽略断言不同编码的 XML 声明 (Pavel Stehule、Noah Misch)

    我们总是以数据库编码存储 XML 字符串,因此允许 libxml 对另一种编码的 声明采取行动会给出错误结果。在 UTF8 之外的编码中,我们本来就不 承诺支持非 ASCII XML 数据,因此为错误兼容保留以前的行为。这一 更改只影响 xpath() 及相关函数;其他 XML 代码 路径已经这样做了。

  • 为与未来次版本协议的前向兼容做准备(Robert Haas、Badrul Chowdhury)

    到目前为止,PostgreSQL 服务器只是拒绝使用 比 3.0 更新的协议版本的请求,因此协议版本号的主部分和次部分之间 没有功能差别。允许客户端请求 3.x 版本而不失败,发回一条表明服务器 只理解 3.0 的消息。这目前没有区别,但向后移植此更改应能更快引入 未来的次协议升级。

  • 应对并行工作者进程启动失败(Amit Kapila、Robert Haas)

    此前如果工作者无法启动(因 fork() 失败或其他低概率 问题),并行查询往往无限挂起。

  • 修复从并行工作者收集 EXPLAIN 统计信息 (Amit Kapila、Thomas Munro)

  • 避免使用 __int128 时做出不安全的对齐假定(Tom Lane)

    通常编译器假定 __int128 变量按 16 字节边界对齐,但我们的 内存分配基础设施不能保证这一点,而且出于多种原因增大 MAXALIGN 的 设置似乎不可行。调整代码,只在能让编译器假定较低对齐时才允许使用 __int128。到目前为止此问题的唯一已知症状是某些并行 聚合查询中的崩溃。

  • 防止规划极深层嵌套集合操作 (UNION/INTERSECT/EXCEPT) 时的栈溢出崩溃(Tom Lane)

  • 修复 pg_hba.conf 中出现的某些类型 LDAP URL 的 空指针崩溃(Thomas Munro)

  • 修复 PL/pgSQL 文档中的 INSTR() 示例函数 (Yugo Nagata、Tom Lane)

    这些函数声称与 Oracle® 兼容,但并不 完全如此。特别是对负第三参数的解释有分歧:Oracle 认为负值表示目标 子串可以开始出现的最后一个位置,而我们的函数把它当作目标可以结束 的最后一个位置。此外,Oracle 对零或负第四参数抛出错误,而我们的 函数返回零。

    示例代码已被调整以更精确地匹配 Oracle 的行为。把这段代码复制到其应用 中的用户可能希望更新其副本。

  • 修复 pg_dump 使 ACL(权限)、注释和安全标签 条目在归档输出格式中可靠可识别(Tom Lane)

    ACL 归档条目的标记部分通常只是相关对象的名称。使它以 对象类型开头,使 ACL 与注释和安全标签归档条目已使用的约定一致。 同时修复整个数据库的注释和安全标签条目(如果存在),使其标记以 DATABASE 开头,从而也遵循这一约定。这防止试图 通过查看标记是否以 LARGE OBJECT 开头来识别大对 象相关条目的代码发生假匹配。那可能导致条目被错误分类为数据而非 模式,在仅模式或仅数据转储中产生不希望的结果。

    注意,这一更改在 pg_restore --list 的输出中有用户 可见的结果。

  • 重命名 pg_rewindcopy_file_range 函数,避免与该名称的新 Linux 系统调用冲突(Andres Freund)

    这一更改防止了更新 glibc 版本下的构建失败。

  • ecpg 中,检测长度不正确的指示符数组并 报错(David Rader)

  • 更改 contrib/cubecube ~> int 操作符的行为使其与 KNN 搜索兼容(Alexander Korotkov)

    更改了第二个参数(维度选择器)的含义,即使在处理维度数不同的 cube 时 也能预测选择哪个值。

    这是一个不兼容的更改,但由于该操作符的意义正是在 KNN 搜索中使用, 原样似乎相当无用。安装此更新后,使用该操作符的任何表达式索引或 物化视图都需要重建/刷新。

  • 避免 contrib/hstore 中因对相同源和目标指针使用 memcpy() 而触发 libc 断言(Tomas Vondra)

  • 修复 contrib/pageinspect 中元组空位图的错误显示 (Maksim Milyutin)

  • contrib/postgres_fdw 中,构造涉及远程连接的 计划时避免 outer pathkeys do not match mergeclauses 规划器错误(Robert Haas)

  • 提供在 macOS 上自动启动 Postgres 的现代示例(Tom Lane)

    contrib/start-scripts/osx 中的脚本使用已被弃用十 多年的基础设施,并且在过去几年的 macOS 版本中已完全不能工作。 添加了包含使用较新 launchd 基础设施的 脚本的新子目录 contrib/start-scripts/macos

  • 修复 Windows 上为 OpenSSL 错误选择配置特定的库(Andrew Dunstan)

  • 支持链接到 MinGW 构建的 libperl 版本(Noah Misch)

    这允许用一些常见的 Windows Perl 发行版构建 PL/Perl。

  • 修复 MSVC 构建测试 32 位 libperl 是否需要 -D_USE_32BIT_TIME_T(Noah Misch)

    可用的 Perl 发行版在这点上不一致,且没有报告它的可靠手段,因此求助于 对所使用的库实际行为的构建时测试。

  • 在 Windows 上,在 postmaster 启动更早阶段安装崩溃转储处理器 (Takayuki Tsunakawa)

    这可以允许为一些以前不产生转储的早期启动失败收集核心转储。

  • 在 Windows 上,避免 postmaster 启动极早期发出消息时与编码转换相关的 崩溃(Takayuki Tsunakawa)

  • 把我们现有的 Motorola 68K 自旋锁代码也用于 OpenBSD 而不只是 NetBSD (David Carlier)

  • 为 Motorola 88K 添加自旋锁支持(David Carlier)

  • 更新时区数据文件到 tzdata 版本 2018c,涉及 巴西以及圣多美和普林西比的夏令时法规变更,加上玻利维亚、日本和 南苏丹的历史修正。US/Pacific-New 时区已被移除 (它本来只是 America/Los_Angeles 的别名)。

提交更正

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