企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# E.31\. 版本 9.0.3 > **发布日期:** 2011-01-31 这个版本包含各种自9.0.2以来的修复。要想获得关于9.0主版本的新特性, 请参阅[Section E.34](#calibre_link-163)。 ## E.31.1\. 迁移到版本 9.0.3 运行9.0.X版本的用户不需要转储/恢复。 ## E.31.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`中修复的错误相同。)