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

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

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

E.13. 版本 9.5.13 #

发布日期:. 2018-05-10

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

E.13.1. 迁移到版本 9.5.13

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

不过,如果下面第一条变更日志条目中提到的函数标记错误影响到你,你可能需要采取措施更正数据库系统目录。

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

E.13.2. 变更

  • 修复少数内建函数上不正确的易变性标记(Thomas Munro、Tom Lane)

    函数 query_to_xmlcursor_to_xmlcursor_to_xmlschemaquery_to_xmlschemaquery_to_xml_and_xmlschema 应标记为 volatile, 因为它们执行可能包含易变操作的用户提供的查询。它们没有被这样 标记,导致错误查询优化的风险。新安装已通过更正初始目录数据修复, 但现有安装将继续包含错误标记。实际使用这些函数似乎危害不大,但如 遇到麻烦,可以手动更新这些函数的 pg_proc 条目来修复,例如 ALTER FUNCTION pg_catalog.query_to_xml(text, boolean, boolean, text) VOLATILE。 (注意安装中的每个数据库都需要这样做。)另一个选择是把数据库 pg_upgrade 到包含更正后初始数据的版本。

  • 避免重用与已死但尚未清理的 TOAST 条目匹配的 TOAST 值 OID (Pavan Deolasee)

    一旦 OID 计数器回卷,就可能分配一个 OID 与同一 TOAST 表中先前删除的 条目匹配的 TOAST 值。如果该条目尚未被清理,就会导致 unexpected chunk number 0 (expected 1) for toast value nnnnn 错误,并持续到 VACUUM 移除死条目为止。修复方法是创建新 TOAST 条目时不选择这种 OID。

  • 更改 ANALYZE 更新 pg_class.reltuples 的算法(David Gould)

    此前,ANALYZE 未实际扫描的页被假定保留其旧的元组 密度。在 ANALYZE 只采样很少一部分页的大表中,这 意味着总体元组密度估计不会有太大变化,因此无论表中实际发生什么, reltuples 都几乎与表物理大小 (relpages)的变化成比例地变化。据观察, 这会导致 reltuples 远大于实际值,以致 实际上关闭了自动清理。为修复,假定 ANALYZE 的 样本是表的无偏统计样本(本应如此),直接把这些页中观察到的密度 外推到整表。

  • 避免在 SERIALIZABLEREPEATABLE READ 事务隔离下运行的并发 CREATE INDEX CONCURRENTLY 命令中的死锁(Tom Lane)

  • 修复 REFRESH MATERIALIZED VIEW CONCURRENTLY 可能 缓慢的执行(Thomas Munro)

  • 修复 UPDATE/DELETE ... WHERE CURRENT OF 在所引用 游标使用仅索引扫描计划时不失败(Yugo Nagata、Tom Lane)

  • 修复下推到参数化路径的连接子句的错误规划(Andrew Gierth、Tom Lane)

    这个错误可能把本应是普通过滤条件的条件错误分类为外连接 的连接过滤,导致错误的连接输出。

  • 修复同一表列出现在多个索引列中,且只有部分索引列使用能返回该列值的 操作符类时,仅索引扫描计划可能不正确的生成 (Kyotaro Horiguchi)

  • 修复对顶层 AND/OR 条件带有可证明 为 NULL 子子句的 CHECK 约束的错误优化 (Tom Lane、Dean Rasheed)

    这可能导致例如约束排除错误地排除不应从查询中排除的子表。

  • 修复某些 GROUPING SET 用法中因双重释放导致的执行器 崩溃(Peter Geoghegan)

  • 避免可能与能调用此类触发器的命令并发添加表重写事件触发器时崩溃 (Álvaro Herrera、Andrew Gierth、Tom Lane)

  • 避免提交预备事务时发生查询取消或会话终止中断时失败(Stas Kelvich)

  • 修复重复执行的哈希连接中的查询生命周期内存泄漏(Tom Lane)

  • 修复 heap_prepare_freeze_tuple 中过于严格的健全 性检查(Álvaro Herrera)

    在从 9.2 或更早版本 pg_upgrade 过来的数据库 中,这可能导致错误的 cannot freeze committed xmax 失败。

  • 防止 C 编写的 before-update 行触发器返回元组时的悬空 指针解引用(Rushabh Lathia)

  • 减少自动清理工作者调度期间的锁定(Jeff Janes)

    原来的行为导致有许多表的数据库中潜在工作者并发性的急剧丧失。

  • 确保把 pg_stat_activity 数据复制到本地内存时 复制客户端主机名(Edmund Horner)

    此前,这个本应本地的快照包含指向共享内存的指针,使客户端主机名列可能 因任何现有会话断开而意外改变。

  • 修复 ispell 词典中多个复合词缀的错误处理 (Arthur Zakirov)

  • 修复 text 列上 SP-GiST 索引中的排序规则感知搜索(即使用不等操作符的 索引扫描)(Tom Lane)

    在大多数非 C 区域中,这种搜索会返回错误的行集合。

  • 在 SP-GiST 索引初始构建期间正确计数索引元组数(Tomas Vondra)

    此前,元组数被报告为与底层表相同,如果索引是部分索引就错了。

  • 在 GiST 索引清理期间正确计数索引元组数(Andrey Borodin)

    此前它报告的是估计的堆元组数,可能不准确,而且如果索引是部分索引则 肯定错误。

  • 修复流式备库在 WAL 延续记录处卡住的一个边界情况 (Kyotaro Horiguchi)

  • 在逻辑解码中,避免 walsender 重启时 WAL 数据可能被双重处理 (Craig Ringer)

  • 允许 scalarltselscalargtsel 用于非核心数据类型(Tomas Vondra)

  • 减少收集了大量查询输出之后服务器报告错误时 libpq 的内存消耗(Tom Lane)

    在处理错误消息之前而不是之后丢弃先前的输出。在某些平台(特别是 Linux)上,这可以改变应用之后的内存占用。

  • 修复 ecpg 中的双重释放崩溃 (Patrick Krecker、Jeevan Ladhe)

  • 修复 ecpg 在 MSVC 构建中正确处理 long long int 变量(Michael Meskes、Andrew Gierth)

  • 修复转储中列表值 GUC 变量值的错误引号 (Michael Paquier、Tom Lane)

    local_preload_librariessession_preload_librariesshared_preload_librariestemp_tablespaces 变量在 pg_dump 输出中没有正确加引号。如果这些 变量的设置出现在 CREATE FUNCTION ... SETALTER DATABASE/ROLE ... SET 子句中,这会导致 问题。

  • 修复 pg_recvlogical 对 v10 之前的 PostgreSQL 服务器不失败的问题 (Michael Paquier)

    此前的一次修复使 pg_recvlogical 不论服务器 版本都发出一条命令,但它只应对 v10 及之后的服务器发出。

  • 确保 pg_rewind 删除目标服务器上在运行期间 从源服务器上删除的文件(Takayuki Tsunakawa)

    不这样做可能导致目标上的数据不一致,特别是当相关文件是 WAL 段时。

  • 修复 pg_rewind 正确处理非默认表空间中的表 (Takayuki Tsunakawa)

  • 修复 PL/pgSQL 整数 FOR 循环中的溢出处理(Tom Lane)

    原来的编码在一些非 gcc 编译器上未能检测到循环变量的溢出,导致无限 循环。

  • 调整 PL/Python 回归测试在 Python 3.7 下通过 (Peter Eisentraut)

  • 支持用 Python 3 和 MSVC 构建时测试 PL/Python 及相关模块(Andrew Dunstan)

  • 支持使用 Microsoft Visual Studio 2015 构建(Michael Paquier)

    为了兼容 VS2015 所需的各种修复此前已回移植到 9.5 分支,但遗漏了 这一处。

  • 重命名内部 b64_encodeb64_decode 函数,避免与 Solaris 11.4 内置 函数冲突(Rainer Orth)

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

    这修复了 zic 时区数据编译器应对负夏令时 偏移的能力。虽然 PostgreSQL 项目不会 立即发布这种时区数据,但 zic 可能被 用于直接从 IANA 获得的时区数据,因此现在更新 zic 是审慎的。

  • 更新时区数据文件到 tzdata 版本 2018d,涉及 巴勒斯坦和南极洲(凯西站)的夏令时法规变更,以及葡萄牙及其殖民 地、恩德伯里、牙买加、特克斯和凯科斯群岛及乌拉圭的历史修正。

提交更正

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