E.8. 版本 9.6.1

E.8.1. 迁移到版本 9.6.1
E.8.2. 修改列表

发布日期: 2016-10-27

此版本包含9.6.0的各种修补程序。有关9.6主要版本中的新功能的信息,请查看 第 E.9 节

E.8.1. 迁移到版本 9.6.1

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

但是,如果您的安装受到以下修改列表中前面两条描述的错误的影响, 那么在更新之后,您可能需要采取措施修复损坏的可用空间映射或可见性映射。。

E.8.2. 修改列表

  • 修复关系自由空间映射和可见性映射截断的WAL日志记录 (Pavan Deolasee, Heikki Linnakangas)

    在故障恢复期间可能无法正确恢复这些文件,或者在备用服务器上写入不正确。 自由空间映射中的伪造条目可能导致尝试访问已从关系本身截断的页面, 通常会产生像could not read block XXX: read only 0 of 8192 bytes这样的错误。如果启用校验和, 则可见性映射中的校验和失败也是可能的。

    https://wiki.postgresql.org/wiki/Free_Space_Map_Problems 中讨论确定这是否存在问题和修复它的步骤。

  • pg_upgrade 将关系可见性映射重写为9.6格式时,修复可能的数据损坏 (Tom Lane)

    在big-endian机器上,新的可见性映射的字节以错误的顺序写入,导致完全不正确的映射。 在Windows中,旧映射是使用文本模式读取的,如果映射碰巧包含匹配回车/换行序列的连续字节, 则会导致错误的结果。后一个错误几乎总是会导致pg_upgrade失败, 因为映射文件看起来是错误的长度。

    如果您使用的是big-endian机器(许多非英特尔体系结构是big-endian),并且使用 pg_upgrade从9.6之前版本升级, 则应该假定所有可见性映射都不正确,需要重新生成。 用contrib/pg_visibilitypg_truncate_visibility_map() 函数截断每个关系的可见性映射就足够了。有关更多信息,请参阅 https://wiki.postgresql.org/wiki/Visibility_Map_Problems

  • 不要在INSERT ... ON CONFLICT中为自冲突插入抛出序列化错误 (Thomas Munro, Peter Geoghegan)

  • 修复使用DISTINCT的集合函数执行中的免费后使用危害 (Peter Geoghegan)

    这可能会导致崩溃或不正确的查询结果。

  • 修复用作窗口函数的多态聚合的错误处理 (Tom Lane)

    聚合的转换函数被告知它的第一个参数和结果是聚合的输出类型,而不是状态类型。 这导致了多态转换函数的错误或崩溃。

  • 修复COPY启用了行级安全性的表中的列名列表 (Adam Brightwell)

  • track_io_timing打开时,修复 EXPLAIN发出有效的XML (Markus Winand)

    以前,XML输出格式选项会产生语法上无效的标签,例如<I/O-Read-Time>。 现在这呈现为<I-O-Read-Time>

  • 修复准备好的事务中的TRUNCATE的统计信息更新 (Stas Kelvich)

  • 修复在创建或更改表时合并继承的CHECK约束中的错误 (Tom Lane, Amit Langote)

    允许按照任意顺序将相同的CHECK约束添加到父表和子表中。 阻止合并父表中的有效约束与子节点上的NOT VALID约束。 同样,阻止将NOT INHERIT子约束与继承约束合并。

  • pg_settings.unit 中为min_wal_sizemax_wal_size 显示一个合理的值 (Tom Lane)

  • 修复jsonb_set()中数组元素的替换 (Tom Lane)

    如果目标是现有的JSON数组元素,则它将被删除而不是被新值替换。

  • 避免由于在不保留缓冲区锁定的情况下测试元组可见性而造成非常低概率的数据损坏 (Thomas Munro, Peter Geoghegan, Tom Lane)

  • 跨服务器重启保留提交时间戳 (Julien Rouhaud, Craig Ringer)

    在打开track_commit_timestamp时, 旧的提交时间戳在干净的服务器重新启动后变得不可访问。

  • 当一个子事务的WAL输出足够大以至于溢出到磁盘时,修复逻辑WAL解码以正常工作 (Andres Freund)

  • 修正逻辑WAL解码中的悬挂指针问题 (Stas Kelvich)

  • 当试图在Linux上使用大页面时,将共享内存分配请求四舍五入为实际巨大页面大小的倍数 (Tom Lane)

    这避免了在具有非典型默认巨大页面大小的系统上的munmap()期间可能的失败。 除了在故障恢复情况下,除了日志消息外,没有任何不良影响。

  • 不要尝试在libpq中的多个连接之间共享SSL上下文 (Heikki Linnakangas)

    这导致了各种各样的极端情况错误,尤其是在尝试为不同的连接使用不同的SSL参数时。

  • 避免libpq中极端情况内存泄露 (Tom Lane)

    所报告的问题涉及在PQreset()期间泄漏错误报告,但可能存在相关情况。

  • pg_upgrade中,按名称顺序检查库的可载入性 (Tom Lane)

    这是一种解决方法,用于处理从语言转换模块到其基本语言和数据类型模块的跨扩展依赖关系。

  • 修复pg_upgrade以正确处理包含索引访问方法的扩展 (Tom Lane)

    为了做到这一点,服务器已经扩展为支持ALTER EXTENSION ADD/DROP ACCESS METHOD。 该功能应该包含在原始修补程序中以支持访问方法的动态创建,但它被忽略了。

  • 改进pg_upgrade的文件复制/链接/重写步骤中的错误报告 (Tom Lane, Álvaro Herrera)

  • 修复pg_dump以针对7.4之前的服务器运行 (Amit Langote, Tom Lane)

  • 不允许同时为pg_rewind指定--source-server--source-target (Michael Banck)

  • pg_rewind关闭源服务器会话中的 synchronous_commit (Michael Banck, Michael Paquier)

    这允许pg_rewind 在源服务器使用的同步复制由于某种原因不起作用时也能工作。

  • pg_xlogdump中,使用 --follow选项时重试打开新的WAL段 (Magnus Hagander)

    这可以使服务器创建下一个段时可能出现延迟。

  • 修复contrib/pg_visibility 来报告已经成为回滚更新主题的损坏元组的正确TID (Tom Lane)

  • 修复makefile的依赖关系,以便自己并行构建 PL/Python将可靠地成功 (Pavel Raiskup)

  • 将时区数据文件更新为tzdata release 2016h, 用于巴勒斯坦和土耳其的DST法律变更,以及对土耳其和俄罗斯一些地区的历史更正。 切换到南极洲、前苏联和斯里兰卡的一些时区的数字缩写。

    IANA时区数据库以前为所有时区提供了文本缩写, 有时会提供当地人口中流通很少或没有流通的缩写。他们正在推翻该政策, 赞成在没有现实世界中使用英文缩写的地区使用数字UTC偏移量。至少目前来说, PostgreSQL将继续接受此类删除的时间戳输入缩写。 但它们不会显示在pg_timezone_names视图中,也不会用于输出。

    在此更新中,AMT不再显示为用于表示亚美尼亚时间。因此, 我们已将Default缩写集更改为将其解释为Amazon Time, 因此是UTC-4而不是UTC+4。