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

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

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

E.20. 版本 9.5.6 #

发布日期:. 2017-02-09

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

E.20.1. 迁移到版本 9.5.6

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

不过,如果你的安装受到下面第一条变更日志条目所述 bug 的影响,更新之后 你可能需要采取行动修复损坏的索引。

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

E.20.2. 变更

  • 修复可能导致用 CREATE INDEX CONCURRENTLY 构建的索引 损坏的竞态条件(Pavan Deolasee、Tom Lane)

    如果 CREATE INDEX CONCURRENTLY 被用于构建一个依赖 于先前未被索引的列的索引,那么与 CREATE INDEX 命令并发运行的事务所更新的行可能收到错误的索引条目。如果怀疑这 可能已发生,最可靠的解决方案是在安装此更新后重建受影响的索引。

  • 确保用于目录扫描的特殊快照不被过早的数据修剪失效(Tom Lane)

    后端在通告其最旧 xmin 时没有考虑这个快照,可能允许并发清理操作移除 仍需要的数据。这导致 cache lookup failed for relation 1255 之类的瞬态失败。

  • 修复 BRIN 索引不正确的 WAL 记录(Kuntal Ghosh)

    把索引元组移动到不同页时为 BRIN revmap 页发出的 WAL 记录不正确。重放会使索引的相关部分失效,迫使它重新计算。

  • 无条件地为未记录表的 init fork 写 WAL 日志 (Michael Paquier)

    此前当 wal_level = minimum 时跳过这一步,但实际上即使在这种情况下也需要它,以确保未记录表 在崩溃后被正确重置为空。

  • 减少备库服务器重放 btree 索引清理操作期间的互锁 (Simon Riggs)

    此更改避免了重放这种操作期间有时发生的显著复制延迟。

  • 如果统计收集器在热备期间死亡,重启它(Takayuki Tsunakawa)

  • 确保热备反馈在备库服务器启动时启用的情况下正确工作 (Ants Aasma、Craig Ringer)

  • 热备等待冲突查询时检查中断(Simon Riggs)

  • 避免边界情况下自动清理启动器的不断重启(Amit Khandekar)

    此修复避免了自动清理名义上关闭且有一些需要冻结的表,但所有这种表都已 被自动清理工作者处理时的问题。

  • 修复扩展成员对象何时可被删除的检查(Tom Lane)

    扩展升级脚本应当能删除成员对象,但对序列列的序列(可能还有其他情况) 这不被允许。

  • 确保 ALTER TABLE 重建索引时保留索引表空间分配 (Tom Lane、Michael Paquier)

    此前,default_tablespace 的非默认设置可能导致 索引损坏。

  • 修复用 ALTER TABLE ... ALTER CONSTRAINT 更改外键 约束可延迟性属性时触发器函数属性的错误更新(Tom Lane)

    这导致之后执行外键时的奇怪失败,因为触发器在错误的时间触发。

  • 如果被引用关系有未决的触发器事件,防止删除外键约束(Tom Lane)

    这避免了 could not find trigger NNNrelation NNN has no triggers 错误。

  • 修复子表列顺序与父表不同时的 ALTER TABLE ... SET DATA TYPE ... USING (Álvaro Herrera)

    未能调整 USING 表达式中的列编号导致错误,典型的是 attribute N has wrong type

  • 修复带 OID 的表通过 ALTER TABLE ... INHERIT 关联到 带 OID 的父表时 OID 列的处理(Amit Langote)

    这种情况下 OID 列应当与普通用户列同等对待,但没有,导致之后继承更改中 的奇怪行为。

  • 修复 CREATE OR REPLACE VIEW 在尝试应用新视图选项 之前先更新视图查询(Dean Rasheed)

    此前如果新选项与旧视图定义不一致,命令就会失败。

  • 修复 ALTER TEXT SEARCH CONFIGURATION 期间报告正确 的对象身份(Artur Zakirov)

    向逻辑解码等扩展报告了错误的目录 OID。

  • 修复提交时间戳机制在被询问特殊 XID FrozenTransactionIdBootstrapTransactionId 时不失败 (Craig Ringer)

  • 在报告约束违反失败之前检查可序列化冲突(Thomas Munro)

    使用可序列化事务隔离时,希望任何因并发事务导致的错误都表现为序列化 失败,从而提示应用重试可能成功。不幸的是,对并发插入导致的重复 键失败这不能可靠发生。此更改确保如果应用在事务中早些时候显式检 查过冲突键的存在(且未找到),这种错误将被报告为序列化错误。

  • 修复视图重选项被错误地当作普通表重选项使用的问题(Tom Lane)

    症状是当 INSERT ... ON CONFLICT 的目标是带级联选项 的视图时,出现虚假的 ON CONFLICT is not supported on table ... used as a catalog table 错误。

  • 修复对宽表使用 ON CONFLICT 时错误的 target lists can have at most N entries 报怨(Tom Lane)

  • 防止 UPDATE 源表达式中 foo.* 的多列展开 (Tom Lane)

    这导致 UPDATE target count mismatch --- internal error。 现在该语法被理解为整行变量,与其他上下文中一样。

  • 确保多行 VALUES 构造的列 typmod 被准确确定 (Tom Lane)

    这修复了列的第一个值有可确定的 typmod(如 varchar 值的 长度)但后面的值不共享同一限制时发生的问题。

  • 对 Unicode 字符串末尾未完成的 Unicode 代理项对抛出错误(Tom Lane)

    通常 Unicode 代理项前导字符后面必须跟 Unicode 代理项后随字符,但当 前导字符是 Unicode 字符串字面量(U&'...') 或 Unicode 标识符(U&"...")的最后一个字符 时漏掉了这一检查。

  • 确保纯否定的文本搜索查询(如 !foo)匹配空的 tsvector(Tom Dunstan)

    GIN 索引搜索能找到这种匹配,但顺序扫描或 GiST 索引搜索不能。

  • 防止 ts_rewrite() 用空查询替换非顶层子树时崩溃 (Artur Zakirov)

  • 修复 ts_rewrite() 的性能问题(Tom Lane)

  • 修复 ts_rewrite() 对嵌套 NOT 操作符的处理 (Tom Lane)

  • 提高使用 array_append() 作为转换函数的用户定义 聚合的速度(Tom Lane)

  • 修复 array_fill() 正确处理空数组(Tom Lane)

  • 修复 array_position()array_positions() 处理记录数组时可能的崩溃 (Junseok Yang)

  • 修复 quote_literal_cstr() 中的一字节缓冲区越界 (Heikki Linnakangas)

    只有当输入完全由单引号和/或反斜线组成时才会发生越界。

  • 防止 pg_start_backup()pg_stop_backup() 的多次调用并发运行 (Michael Paquier)

    这避免了有人试图并行运行这些函数时的断言失败以及可能更糟的事情。

  • 禁用试图移除无操作 AT TIME ZONE 转换的变换 (Tom Lane)

    当简化后的表达式用于索引条件时,这导致错误答案。

  • 避免丢弃并非真正无操作的 intervalinterval 强制转换 (Tom Lane)

    某些情况下,本应导致清零低阶 interval 字段的强制转换被 错误地当作无操作而丢弃。例如从 INTERVAL MONTH 转换 到 INTERVAL YEAR 未能清除月份字段。

  • 修复向并行工作者传输 GUC 参数值的 bug(Michael Paquier、Tom Lane)

  • 确保缓存计划因外部表选项的更改而失效 (Amit Langote、Etsuro Fujita、Ashutosh Bapat)

  • 修复 pg_dump 转储使用内建函数的用户定义 强制转换和转换(Stephen Frost)

  • 修复 pg_restore 使用 --create --if-exists 时对包含无法识别的 DROP 命令的归档表现得更理智(Tom Lane)

    这不修复任何现存 bug,但如果 pg_restore 与 更晚的 pg_dump 版本生成的归档一起使用, 将来可能改进行为。

  • 修复慢 I/O 情况下 pg_basebackup 的速率限制 (Antonin Houska)

    如果磁盘 I/O 暂时比指定的速率限制慢得多,计算就会溢出,实际上禁用了 运行剩余部分的速率限制。

  • 修复 pg_basebackup 对符号链接的 pg_stat_tmppg_replslot 子目录的处理 (Magnus Hagander、Michael Paquier)

  • 修复包含 WAL 文件时备库服务器上可能的 pg_basebackup 失败 (Amit Kapila、Robert Haas)

  • 修复域检查约束和 CASE 执行中展开数组的可能处理不当 (Tom Lane)

    在这些上下文中调用的 PL/pgSQL 函数有可能修改甚至删除需要为额外操作 保留的数组值。

  • 修复 PL/pgSQL 函数在诸如对 PL/pgSQL 变量赋值期间求值的域检查约束等 上下文中的嵌套使用(Tom Lane)

  • 确保我们为 PL/Python 创建的 Python 异常对象被正确引用计数 (Rafa de la Torre、Tom Lane)

    这避免了对象在 Python 垃圾回收周期发生之后被使用时的失败。

  • 修复 PL/Tcl 支持以 .tupno 为列名的表上的触发器 (Tom Lane)

    这与 PL/Tcl 的 spi_execspi_execp 命令(以前未写入文档)的行为一致, 即只在不存在该名字的真实列时才插入幻 .tupno 列。

  • 允许 ~/.pgpass 文件中的 DOS 风格行尾,即使在 Unix 上也一样(Vik Fearing)

    这一更改简化了在 Unix 和 Windows 机器之间使用同一密码文件。

  • 修复 ecpg 被给定以点结尾的文件名时的一 字节缓冲区越界(Takayuki Tsunakawa)

  • 修复 psqlALTER DEFAULT PRIVILEGES 的 Tab 补全 (Gilles Darold、Stephen Frost)

  • psql 中,把 PAGER 环境 变量的空或全空白设置当作不使用分页器(Tom Lane)

    此前这种设置导致本应发给分页器的输出完全消失。

  • 改进 contrib/dblink 对低层 libpq 错误(如内存不足)的报告 (Joe Conway)

  • contrib/dblink 在使用 contrib/postgres_fdw 外部服务器作为连接选项 来源时忽略无关的服务器选项(Corey Huinker)

    此前如果外部服务器对象的选项不是 libpq 连接选项,就会出错。

  • 修复 contrib/pageinspect 的 GIN 索引函数中的 可移植性问题(Peter Eisentraut、Tom Lane)

  • 在 Windows 上,确保环境变量更改被传播到以调试选项构建的 DLL (Christian Ullrich)

  • 把我们的时区库副本与 IANA tzcode2016j 同步(Tom Lane)

    这修复了若干问题,最显著的是当目标目录不支持硬链接时区数据安装失败。

  • 更新时区数据文件到 tzdata 版本 2016j,涉及 北塞浦路斯(新增时区 Asia/Famagusta)、俄罗斯(新增时区 Europe/Saratov)、汤加和 Antarctica/Casey 的夏令时法规变更。还有 意大利、哈萨克斯坦、马耳他和巴勒斯坦的历史修正。汤加改用首选 数字时区缩写。

提交更正

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