E.146. 版本8.4.8

E.146.1. 迁移到版本8.4.8
E.146.2. 变化

发布日期:. 2011-04-18

该发布包含来自8.4.7的各种修复, 关于8.4主要发布的新功能信息, 参阅第 E.154 节

E.146.1. 迁移到版本8.4.8

运行8.4.X不需要备份/恢复。

然而,如果你的安装是通过运行pg_upgrade从 原先主要发布中更新,你应该采取措施避免 由于pg_upgrade中现在修复错误 可能的数据丢失。建议方法是在所有TOAST表上运行VACUUM FREEZEhttp://wiki.postgresql.org/wiki/20110408pg_upgrade_fix中更多信息可用。

另外,如果你从8.4.2更早版本更新,参阅第 E.152 节

E.146.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进行历史修正。