E.97. 版本 9.0.3 #
发行日期:. 2011-01-31
本次发布包含对 9.0.2 的多方面修复。有关 9.0 大版本中新特性的信息,请参见第 E.100 节。.
E.97.1. 迁移到版本 9.0.3
对于运行 9.0.X 的用户,不需要进行转储/恢复。
E.97.2. 变更
在退出 walreceiver 之前,确保所有已接收的 WAL 都已 fsync 到磁盘(Heikki Linnakangas)
否则备库服务器可能重放一些未同步的 WAL,如果系统恰好在那时崩溃,可想而知会导致数据损坏。
避免 walreceiver 中过多的 fsync 活动(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类型能表示的更宽,但规划器假定它总是可以不受惩罚地把 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中修复的缺陷相同。)