E.23. 版本 9.0.11

发布日期: 2012-12-06

这个版本包含各种自9.0.10以来的修复。想要获得关于9.0主版本的新特性信息, 请参阅Section E.34

E.23.1. 迁移到版本 9.0.11

运行9.0.X的系统不需要转储/恢复。

另外,如果你是从一个早于9.0.6的版本升级而来,请参阅9.0.6的版本说明。

E.23.2. 修改列表

  • 修复了多个与CREATE INDEX CONCURRENTLY相关的错误 (Andres Freund, Tom Lane)

    修复CREATE INDEX CONCURRENTLY以在改变一个索引的pg_index 行的状态时使用按照地点的更新。这阻止了会导致并发会话错过更新目标索引的竞态条件, 因此导致损坏并发创建的索引。

    另外,修复了各种其他操作,以保证它们忽略失败的CREATE INDEX CONCURRENTLY 命令产生的无效的索引。最重要的是VACUUM, 因为在采取正确的动作修复或删除无效的索引之前,一个auto-vacuum可以很容易的在一个表上发起。

  • 修复WAL重放期间的缓冲区锁定 (Tom Lane)

    当重放WAL记录影响多于一页时,WAL重放代码关于锁定缓冲区不够小心。 这会导致热备份查询短暂的看到不一致的状态,导致错误响应或意外的失败。

  • 修复在GIN索引的WAL生产逻辑中的一个错误 (Tom Lane)

    如果发生页撕裂错误,这会导致索引损坏。

  • 当推进热备份服务器正常运行时,适当的删除启动进程的虚拟XID锁 (Simon Riggs)

    这个监管可以阻止特定操作(如CREATE INDEX CONCURRENTLY)的连续执行。

  • 避免备用模式中虚假的"out-of-sequence timeline ID"错误 (Heikki Linnakangas)

  • 阻止postmaster在收到关闭信号后发起新的子进程 (Tom Lane)

    这个错误能引起关闭的时间更长,甚至在没有额外的用户动作下永不完成。

  • 避免内存溢出时内部哈希表的损坏 (Hitoshi Harada)

  • 修复外连接上非绝对相等子句的规划 (Tom Lane)

    该规划会导致不正确的约束:一个子句等于一个其他非绝对构造,例如 WHERE COALESCE(foo, 0) = 0,当foo 来自一个外连接的可为null方时。

  • 改善规划的能力,检验来自相等子句的排他约束 (Tom Lane)

  • 修复散列的子规划中的部分行匹配,正确的处理交叉类型情况 (Tom Lane)

    这个影响多字段NOT IN子规划,如WHERE (a, b) NOT IN (SELECT x, y FROM ...)by分别是int4int8的情况。 这个错误导致错误响应或崩溃依赖于特定包含的数据类型。

  • 当为一个AFTER ROW UPDATE/DELETE触发器重新抓取老的元组时获得缓冲区锁 (Andres Freund)

    在不寻常的情况下,这个疏忽会导致外键强制触发器传送不正确的数据到预先检查逻辑。 这样会导致一个崩溃,或一个关于是否触发该触发器的不正确的决定。

  • 修复ALTER COLUMN TYPE正确的处理非继承的检查约束 (Pavan Deolasee)

    这在8.4之前的版本中运行正确,现在在8.4和之后的版本中也正确运行了。

  • 修复REASSIGN OWNED处理表空间上的授权 (Álvaro Herrera)

  • 为视图系统字段忽略不正确的pg_attribute条目 (Tom Lane)

    视图没有任何系统字段。不过,我们在转换一个表到一个视图时忘记删除这样的条目。 这在9.3和之后的版本中适当的修复了,但是,在之前的分支中我们需要防卫现存的错误转换的视图。

  • 修复规则打印以正确的转储INSERT INTO _table_ DEFAULT VALUES (Tom Lane)

  • 当在一个查询中有太多UNION/INTERSECT/EXCEPT 子句时,防止堆栈溢出 (Tom Lane)

  • 当用-1除最小可能的整数时,阻止依赖于平台的失败 (Xi Wang, Tom Lane)

  • 修复日期解析中可能的以字符串结束的存取经过 (Hitoshi Harada)

  • 修复在检查点和wal_levelhot_standby期间, 如果发生XID打包未能提前XID纪元的错误 (Tom Lane, Andres Freund)

    这个错误对PostgreSQL本身没有特别的影响, 不利于依赖于txid_current()和相关函数的应用: TXID值将会看起来向后退了。

  • 如果一个Unix域套接字的路径名长度超出平台特定的限制,则产生一个可以理解的错误信息 (Tom Lane, Andrew Dunstan)

    以前,这会产生相当没有帮助的事物,如"Non-recoverable failure in name resolution"。

  • 修复发送复合字段值到客户端时的内存泄露 (Tom Lane)

  • 使pg_ctl读取postmaster.pid文件更强健 (Heikki Linnakangas)

    修复竞态条件和可能的文件描述符泄露。

  • 修复psql中可能的崩溃,如果提出了不正确编码的数据和 client_encoding设置是一个客户端唯一编码(如 SJIS) (Jiang Guiqing)

  • 修复restore.sql脚本中的错误,该脚本由pg_dump 以tar输出格式发出 (Tom Lane)

    该脚本在名字包含大写字母的表上将会完全的失败。另外, 使得该脚本可以在--inserts模式和定期的COPY模式中存储数据。

  • 修复pg_restore接受符合POSIX的tar文件 (Brian Weaver, Tom Lane)

    pg_dump的tar输出模式的原始编码产生的文件并不完全符合POSIX标准。 这在版本9.3中已经纠正了。这个补丁更新之前的分支,所以它们将接受正确和不正确的格式, 希望9.3出来时避免兼容性问题。

  • 修复pg_resetxlog以正确的定位postmaster.pid, 当给出一个相关的路径到数据目录时 (Tom Lane)

    这个错误会导致pg_resetxlog不注意这里有一个活动的postmaster使用该数据目录。

  • 修复libpq的lo_import()lo_export() 函数以适当的报告文件I/O错误 (Tom Lane)

  • 修复ecpg嵌套结构指针变量的流程 (Muhammad Usama)

  • 修复ecpg的ecpg_get_data函数正确的处理数组 (Michael Meskes)

  • 使contrib/pageinspect的btree页面检查函数在检查页面时获得缓冲区锁 (Tom Lane)

  • 修复pgxs支持以在AIX上建立可加载的模块 (Tom Lane)

    在不在AIX上运行的原始源代码树之外建立模块。

  • 更新时区数据文件到tzdata版本2012j,因为DST规律在下列地区改变了: Cuba, Israel, Jordan, Libya, Palestine, Western Samoa, 还有部分 Brazil。