🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# E.23\. 版本 9.0.11 > **发布日期:** 2012-12-06 这个版本包含各种自9.0.10以来的修复。想要获得关于9.0主版本的新特性信息, 请参阅[Section E.34](#calibre_link-163)。 ## 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 ...)` 中`b`和`y`分别是`int4`和`int8`的情况。 这个错误导致错误响应或崩溃依赖于特定包含的数据类型。 * 当为一个`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_level`是`hot_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。