企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# E.45\. 发布8.4.8 > **发布日期:** 2011-04-18 该发布包含来自8.4.7的各种修复, 关于8.4主要发布的新功能信息, 参阅[Section E.53](#calibre_link-49)。 ## E.45.1\. 迁移到版本8.4.8 运行8.4.X不需要备份/恢复。 然而,如果你的安装是通过运行pg_upgrade从 原先主要发布中更新,你应该采取措施避免 由于pg_upgrade中现在修复错误 可能的数据丢失。建议方法是在所有TOAST表上运行`VACUUM FREEZE`。 [http://wiki.postgresql.org/wiki/20110408pg_upgrade_fix](http://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进行历史修正。