E.14. 版本 9.5.6

E.14.1. 迁移到版本 9.5.6
E.14.2. 修改列表

发布日期: 2017-02-09

此版本包含9.5.5的各种修复程序。有关9.5主要版本中的新功能的信息,请查看 第 E.20 节.

E.14.1. 迁移到版本 9.5.6

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

但是,如果您的安装受到以下修改列表第一项中描述的错误的影响, 那么在更新之后,您可能需要采取措施修复损坏的索引。

另外,如果您是从9.5.5之前的版本升级,请查阅 第 E.15 节

E.14.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记录是不正确的。 重放会使索引的相关部分无用,迫使它重新计算。

  • 无条件的WAL记录unlog表的init fork创建 (Michael Paquier)

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

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

    此更改避免了重播此类操作时发生的大量复制延迟。

  • 如果状态收集器在热备用期间死亡,请重新启动它 (Takayuki Tsunakawa)

  • 在备用服务器启动时启用热备用反馈时,确保它能正常工作 (Ants Aasma, Craig Ringer)

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

  • 避免在极端的情况下不断重新启动自动清理加载进程 (Amit Khandekar)

    该修复避免了在名义关闭autovacuum并且有一些表需要冻结, 但所有此类表已由autovacuum工作进程处理的情况下出现问题。

  • 修复对何时可以删除扩展成员对象的检查 (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

  • 当通过ALTER TABLE ... INHERIT将具有OID的表关联到具有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构造准确确定了列typmods (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参数值传输给并行工作进程的错误 (Michael Paquier, Tom Lane)

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

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

  • 如果归档包含无法识别的DROP命令, 修复使用--create --if-existspg_restore 使其表现得更加理智 (Tom Lane)

    这不会修复任何活动错误,但如果将pg_restore 用于由稍后的pg_dump版本生成的归档,它可能会改善此行为。

  • 修复pg_basebackup在存在缓慢I/O时的速率限制 (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 环境变量的空白或全空白设置视为no pager (Tom Lane)

    以前,这样的设置导致用于分页的输出完全消失。

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

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

    以前,如果外部服务器对象的选项不是libpq连接选项,

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

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

  • 将我们的时区库副本与IANA发行版tzcode2016j同步 (Tom Lane)

    这解决了各种问题,尤其是如果目标目录不支持硬链接,时区数据安装失败。

  • 将时区数据文件更新为tzdata release 2016j。 用于北塞浦路斯(增加一个新区域Asia/Famagusta)、俄罗斯 (增加一个新区域Europe/Saratov)、汤加和南极洲/凯西的DST法律变更。 对意大利、哈萨克斯坦、马耳他和巴勒斯坦的历史性更正。 为汤加切换至更受欢迎的数字区域缩写。