PostgreSQL 9.4.4 中文手册
上一页 | 上一级 | 附录 E. 版本说明 | 下一页

# E.18. 版本 9.2.6

> 发布日期: 2013-12-05

这个版本包含各种自9.2.5以来的修复。关于9.2主版本的新特性信息， 请查看第 E.24 节。

## E.18.1. 迁移到版本9.2.6

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

不过，这个版本纠正了一些潜在的数据损坏问题。查看下面的前两条修改日志项， 找出你的安装是否受到了影响，和受到影响后要采取的步骤。

另外，如果你是从一个早于9.2.4的版本升级而来，请查看第 E.20 节。

## E.18.2. 修改列表

- 修复`VACUUM`的测试，查看它是否可以更新`relfrozenxid` (Andres Freund)

  在某些情况下，`VACUUM`（手动或者自动）会不正确的增加一个表的 `relfrozenxid`值，允许元组逃过冻结， 导致一旦执行了2^31个事务，这些行就变得不可见。数据丢失的概率比较低， 因为在实际丢失数据发生之前需要发生多次错误增加。 在9.2.0及更高版本中，数据丢失的可能性要稍高些， 并且由于这个bug可能会得到"could not access status of transaction"错误。 从版本9.0.4或8.4.8或更早版本升级而来的用户没有受到影响， 但是所有后来的版本都包含该bug。

  这个问题可以通过在升级之后，将`vacuum_freeze_table_age` 设置为0，在所有数据库中清理所有表来改善。这将修复任何潜在的损坏， 但是不能修复所有已经存在的数据错误。不过， 一个在它的生命期中执行了少于2^31个更新（使用`SELECT txid_current() < 2^31` 检查）事务的安装，在执行这个清理之后，可以假设是安全的。

- 修复热备启动期间`pg_clog`和`pg_subtrans`的初始化 (Andres Freund, Heikki Linnakangas)

  这个bug会导致备用服务器开始接受热备份查询时它们上面的数据丢失， 通过标记已提交事务为未提交。这种损坏的可能性比较小， 除非是在备用服务器启动的时候，主服务器自最后一个检查点以来已经执行了许多的更新事务。 表现包括丢失行、应该已经删除了的行仍然可见和更新了的行的老版本仍然可见。

  这个bug是在版本9.3.0、9.2.5、9.1.10和9.0.14中引入的。 运行较早版本的备用服务器没有风险。 建议曾经运行过有错误版本的备用服务器在升级后重新克隆主服务器 （例如，使用一个新的基础备份）。

- 修复快速路径锁定中的悬挂指针问题 (Tom Lane)

  这会导致共享内存中锁定数据结构的损坏，引起"lock already held" 和其他奇怪的错误。

- 在WAL重放期间截断`pg_multixact`内容 (Andres Freund)

  这避免了备用服务器上不断增长的磁盘空间消耗。

- 确保反概括`VACUUM`将一个页面看做已经扫描了的， 当它只是验证了没有元组需要冻结时 (Sergey Burladyan, Jeff Janes)

  这个bug会导致未能增加`relfrozenxid`， 所以将仍然认为该表需要另一个反概括清理。在最坏的情况下， 数据库甚至会关闭以阻止概括。

- 修复GIN索引发布树页面删除中的竞态条件 (Heikki Linnakangas)

  这会导致瞬间的错误回复或查询失败。

- 修复SP-GiST索引创建期间的"unexpected spgdoinsert() failure"错误 (Teodor Sigaev)

- 避免压缩一个`SELECT`列表中包含一个包含在子`SELECT` 中的不稳定函数的子查询 (Tom Lane)

  这避免了由于额外评估该不稳定函数引起的意外结果。

- 修复规划器对非简单变量子查询输出嵌套在外连接中的处理 (Tom Lane)

  这个错误会导致在`JOIN`语法中包含多级别子查询的查询的错误规划。

- 修复相同的非严格表达式在多个`WHERE`和外`JOIN` 相等子句中出现时不正确的规划 (Tom Lane)

- 修复整行引用子查询的规划器崩溃 (Tom Lane)

- 修复为继承树不正确的生成优化的MIN()/MAX()规划 (Tom Lane)

  在MIN()/MAX()参数是表达式而不是简单的变量的情况下，该规划会失败。

- 修复临时文件的过早删除 (Andres Freund)

- 阻止打印范围值时事务内部的内存泄露 (Tom Lane)

  该修复实际上改正任何数据类型输出函数中的瞬间内存泄露， 但是唯一知道的有重要问题的是范围类型。

- 阻止在NOT NULL和CHECK约束违反消息中不正确的显示删除了的字段 (Michael Paquier and Tom Lane)

- 允许窗口函数有缺省的参数和命名参数注释 (Tom Lane)

  以前这些情况有可能崩溃。

- 修复规则打印中可能读取过去的内存 (Peter Eisentraut)

- 修复`int2vector`和`oidvector`值的数组切片 (Tom Lane)

  这种类型的表达式现在隐式的转换成普通的`int2`或`oid`数组。

- 修复使用SQL标准、简单GMT偏移时区时的错误行为 (Tom Lane)

  在某些情况下，系统会在它应该使用在简单偏移被选择之前盛行的常规时区设置时， 使用了简单GMT偏移值。这个修改也使`timeofday` 函数遵守简单GMT偏移时区。

- 在记录Windows错误代码的翻译时阻止可能的错误行为 (Tom Lane)

- 在pg_ctl中正确的引用生成的命令行 (Naoya Anzai and Tom Lane)

  这个修复仅适用于Windows。

- 修复pg_dumpall，使其在源数据库通过`ALTER DATABASE SET` 设置`default_transaction_read_only` 时工作 (Kevin Grittner)

  以前，生成的脚本在恢复期间会失败。

- 让ecpg对引用的游标名搜索大小写敏感 (Zoltán Böszörményi)

- 修复ecpg对`varchar`声明的变量列表的处理 (Zoltán Böszörményi)

- 让`contrib/lo`防卫不正确的触发器定义 (Marc Cousin)

- 更新时区数据文件到tzdata版本2013h， 因为DST规律在Argentina、Brazil、Jordan、Libya、Liechtenstein、 Morocco和Palestine发生了改变。另外，Indonesia 的新时区缩写WIB、WIT、WITA。

上一页 | 起始页 | 下一页
版本 9.2.7 | 上一级 | 版本9.2.5