版本 9.0.3

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

# E.63. 版本 9.0.3

> 发布日期: 2011-01-31

这个版本包含各种自9.0.2以来的修复。要想获得关于9.0主版本的新特性， 请参阅第 E.66 节。

## E.63.1. 迁移到版本 9.0.3

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

## E.63.2. 修改列表

- 在退出walreceiver之前，确保所有接收到的WAL同步到磁盘 (Heikki Linnakangas)

  否则备用服务器会重放一些未同步的WAL，想象的到，如果系统正好在此时崩溃，则会导致数据损坏。

- 避免walreceiver中过度的同步活动 (Heikki Linnakangas)

- 需要时使`ALTER TABLE`的唯一性和排除约束重新生效 (Noah Misch)

  这在9.0中，由于试图在`VACUUM FULL`和`CLUSTER`期间抑制重新生效而坏掉了， 但是无意间也影响到了`ALTER TABLE`。

- 为继承树的`UPDATE`修复EvalPlanQual，该继承树中的表并不都是相似的 (Tom Lane)

  表行类型（包括只在一些子表中出现的少量的字段）的任何变化都将使EvalPlanQual代码混乱， 导致错误行为甚至崩溃。因为EvalPlanQual只在并发更新到相同的行时执行， 该问题只能间歇的看到。

- 避免`EXPLAIN`试图显示一个简单形式的`CASE`表达式时的失败 (Tom Lane)

  如果`CASE`的测试表达式是一个常量，那么规划器将简化`CASE` 为一个困惑表达式显示代码的形式，导致"unexpected CASE WHEN clause"错误。

- 修复现有下标范围之前的数组切片的分配 (Tom Lane)

  如果新添加的下标和原先存在的下标之间存在一个缺口， 代码错误估算了需要多少条目从老数组的空位图中拷贝，可能导致数据损坏或崩溃。

- 避免为了非常远的日期值在规划器中意外的转换溢出 (Tom Lane)

  `date`类型比`timestamp`类型支持更大范围的日期， 但是规划器假设它可以总是不受惩罚的转换一个日期为时间戳。

- 修复一个数组包含空条目时的PL/Python损坏 (Alex Hunsaker)

- 为定义一个数组维度的常量删除ecpg的固定的长度限制 (Michael Meskes)

- 修复包含`... & !(subexpression) | ...` 的`tsquery`值的错误解析 (Tom Lane)

  包含这些操作符的组合的查询没有正确的执行。相同的错误存在于`contrib/intarray` 的`query_int`类型和`contrib/ltree`的`ltxtquery`类型。

- 修复`contrib/intarray`的`query_int`类型输入函数中的缓冲区溢出 (Apple)

  这个错误是一个安全风险，因为该函数的返回地址会被重写。 感谢Apple Inc的安全团队报告这个问题并提供了该修复。 (CVE-2010-4015)

- 修复`contrib/seg`的GiST picksplit算法中的错误 (Alexander Korotkov)

  这可能会导致大量的低效，尽管不是实际上错误的答案，在`seg`字段上的GiST索引中。 如果你有这样的一个索引，那么考虑在安装这个更新之后`REINDEX`它。 （这与之前更新的`contrib/cube`中修复的错误相同。）

上一页 | 起始页 | 下一页
版本 9.0.4 | 上一级 | 版本 9.0.2