E.45. 发布8.4.8

发布日期: 2011-04-18

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

E.45.1. 迁移到版本8.4.8

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

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

另外,如果你从8.4.2更早版本更新,参阅8.4.2的发布说明。

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