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

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

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

E.20. 版本 9.6.5 #

发布日期:. 2017-08-31

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

E.20.1. 迁移到版本 9.6.5

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

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

E.20.2. 变更

  • 在 information_schema.table_privileges 视图中显示外部表(Peter Eisentraut)

    所有其他相关的 information_schema 视图都包含外部表,只有这一个忽略了它们。

    由于这个视图定义是由 initdb 安装的,仅升级不会修复问题。如果需要在现有安装中修复,可以以超级用户身份在 psql 中执行以下操作:

    SET search_path TO information_schema;
    CREATE OR REPLACE VIEW table_privileges AS
    SELECT CAST(u_grantor.rolname AS sql_identifier) AS grantor,
           CAST(grantee.rolname AS sql_identifier) AS grantee,
           CAST(current_database() AS sql_identifier) AS table_catalog,
           CAST(nc.nspname AS sql_identifier) AS table_schema,
           CAST(c.relname AS sql_identifier) AS table_name,
           CAST(c.prtype AS character_data) AS privilege_type,
           CAST(
             CASE WHEN
              -- object owner always has grant options
              pg_has_role(grantee.oid, c.relowner, 'USAGE')
              OR c.grantable
              THEN 'YES' ELSE 'NO' END AS yes_or_no) AS is_grantable,
           CAST(CASE WHEN c.prtype = 'SELECT' THEN 'YES' ELSE 'NO' END AS yes_or_no) AS with_hierarchy
    FROM (
           SELECT oid, relname, relnamespace, relkind, relowner,
                  (aclexplode(coalesce(relacl, acldefault('r', relowner))).*
           FROM pg_class ) AS c (oid, relname, relnamespace, relkind, relowner, grantor, grantee, prtype, grantable),
         pg_namespace nc, pg_authid u_grantor,
         (
           SELECT oid, rolname FROM pg_authid
           UNION ALL
           SELECT 0::oid, 'PUBLIC'
         ) AS grantee (oid, rolname)
    WHERE c.relnamespace = nc.oid
          AND c.relkind IN ('r', 'v', 'f')
          AND c.grantee = grantee.oid
          AND c.grantor = u_grantor.oid
          AND c.prtype IN ('INSERT', 'SELECT', 'UPDATE', 'DELETE', 'TRUNCATE', 'REFERENCES', 'TRIGGER')
          AND (pg_has_role(u_grantor.oid, 'USAGE')
               OR pg_has_role(grantee.oid, 'USAGE')
               OR grantee.rolname = 'PUBLIC');

    这必须在每个要修复的数据库中重复,包括 template0。

  • 清理尝试对失败事务执行 ROLLBACK 时发生致命退出(例如因收到 SIGTERM)的处理(Tom Lane)

    这种情况可能导致断言失败。在生产构建中退出仍会发生,但会记录一条关于 “cannot drop active portal” 的意外消息。

  • 移除致命退出期间可能触发的断言(Tom Lane)

  • 正确识别范围类型或基于被搜索复合类型或域类型的域类型之上的列(Tom Lane)

    某些更改复合类型或域类型定义的 ALTER 命令本应在该类型有存储值时失败,因为它们缺少更新或检查这类值所需的基础设施。此前这些检查可能遗漏包裹在范围类型或子域中的相关值,可能允许数据度变得不一致。

  • 防止把定长按引用传递数据类型传给并行工作者进程时崩溃(Tom Lane)

  • 修复使用并行模式并使用列表文件选择要恢复条目子集时 pg_restore 的崩溃(Fabrízio de Royes Mello)

  • 更改 ecpg 的解析器允许不带 C 变量的 RETURNING 子句(Michael Meskes)

    这允许 ecpg 程序包含在内部使用 RETURNING(例如在 CTE 内)而不是用它定义返回给客户端的值的 SQL 构造。

  • 更改 ecpg 的解析器识别 C 预处理命令行的反斜线续行(Michael Meskes)

  • 改进 Windows 上 PL/Perl 编译器标志的选择(Tom Lane)

    此修复避免了因对 time_t 值宽度的假定不一致而可能的 PL/Perl 崩溃。扩展开发者可能看到的一个副作用是 _USE_32BIT_TIME_T 不再在 PostgreSQL Windows 构建中全局定义。这预计不会引起问题,因为 time_t 类型没有用于任何 PostgreSQL API 定义。

  • 修复通过非 GNU make 程序调用时 make check 的正确行为(Thomas Munro)

报告文档问题

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