E.113. 版本8.4.8
发布日期: 2011-04-18
该发布包含来自8.4.7的各种修复, 关于8.4主要发布的新功能信息, 参阅第 E.121 节。
E.113.1. 迁移到版本8.4.8
运行8.4.X不需要备份/恢复。
然而,如果你的安装是通过运行pg_upgrade从 原先主要发布中更新,你应该采取措施避免 由于pg_upgrade中现在修复错误 可能的数据丢失。建议方法是在所有TOAST表上运行VACUUM FREEZE。 Http://wiki.postgresql.org/wiki/20110408pg_upgrade_fix中更多信息可用。
另外,如果你从8.4.2更早版本更新,参阅第 E.119 节。
E.113.2. 变化
-
修复pg_upgrade的TOAST表处理(Bruce Momjian)
TOAST表的pg_class.relfrozenxid值 不能被正确拷贝到pg_upgrade中的新安装中。 当它们仍然需要验证TOAST表中的元组时,这可能会导致丢弃pg_clog, 导致"无法访问事务状态"错误。
这个错误引起使用pg_upgrade更新的安装中数据丢失的显著风险。 该补丁校对pg_upgrade未来使用中的错误, 但是自身并不能解决已被pg_upgrade旧版本处理的安装中的问题。
-
抑制不正确的"PD_ALL_VISIBLE标记被不正确地设置"警告(Heikki Linnakangas)
VACUUM有时在实际有效的情况下发出警告。
-
不允许完全包含复合类型(Tom Lane)
当处理复合类型的时候,这可以避免服务器无限地重现的情况。虽然有些可能 用这种结构,它们似乎不足以证明可以确保安全工作。
-
避免目录缓存初始化期间潜在死锁(Nikhil Sontakke)
在某些情况下,缓存加载代码会在锁定索引的目录之前的系统索引上获取共享锁。 这可能停顿过程以试图获取排他锁,采用更多的标准顺序。
-
当有一个并发更新到目标元组时,修复BEFORE ROW UPDATE触发器处理中的 悬挂指针问题(Tom Lane)
当尝试执行UPDATE RETURNING ctid的时候, 已被观察到的这个错误导致间歇性"无法从虚拟元组提取系统属性"错误。 对于更严重的错误有一个非常小的概率,如为更新的元组产生不正确的索引项。
-
当有表的等待延迟触发器事件时,不允许DROP TABLE(Tom Lane)
以前DROP可以通过,当触发器最终被唤起时, 导致"无法打开OID nnn关系"的错误。
在GEQO优化期间,避免通过常量错误WHERE条件触发崩溃(Tom Lane)
提高半连接和反连接情况中规划器的处理(Tom Lane)
修复解释空的原因的文本搜索的选择性估计(Jesper Krogh)
-
提高处理已删除列行类型的PL/pgSQL的能力(Pavel Stehule)
这是在9.0之前修复后补丁。
修复涉及到数组片段的PL/Python内存泄露(Daniel Popowich)
修复pg_restore处理TOC文件中长线(超过1KB) (Tom Lane)
采取更多防御措施阻止崩溃,由于使用过度热情的编译器优化除以零(Aurelien Jarno)
-
支持MIPS上FreeBSD和OpenBSD中dlopen()的使用(Tom Lane)
有一个硬连线假设,即该系统函数 在这些系统上的MIPS硬件上不可用。代替使用编译测试, 因为最新版本中存在。
修复HP-UX上编译失败(Heikki Linnakangas)
解决Windows上与libintl版本不兼容问题(Hiroshi Inoue)
-
修复Windows编译脚本中xcopy的使用 以便在Windows 7中正常工作(Andrew Dunstan)
这只影响到编译脚本,没有安装或者使用。
修复Cygwin上的pg_regress使用的路径分隔符(Andrew Dunstan)
为了Chile, Cuba, Falkland Islands, Morocco, Samoa, 和Turkey中DST变化规律更新时区数据文件到tzdata发布2011f; 同时为South Australia, Alaska和Hawaii进行历史修正。