E.4. 版本 8.4.19 #
发行日期
2013-12-05
本次发布包含对 8.4.18 的多方面修复。有关 8.4 大版本中新特性的信息,请参见第 E.23 节。
E.4.1. 迁移到版本 8.4.19
对于运行 8.4.X 的用户,不需要进行转储/恢复。
不过,此发行版纠正了一个潜在的数据损坏问题。请参阅下面第一条变更记录,以确定你的安装是否受到影响以及如果受到影响可以采取什么措施。
不过,如果你是从早于 8.4.17 的版本升级,请参见第 E.6 节。
E.4.2. 变更
修复
VACUUM判断是否可以更新relfrozenxid的测试(Andres Freund)某些情况下,
VACUUM(手工或自动)可能错误地推进表的relfrozenxid值,使元组逃过冻结,导致这些行在经过 2^31 个事务后变得不可见。由于需要多次错误推进才会发生实际丢失,数据丢失的概率相当低,但并非为零。从 8.4.8 或更早版本升级的用户不受影响,但之后的所有版本都包含该缺陷。升级后,在把
vacuum_freeze_table_age设为零的情况下对所有数据库中的所有表执行清理,可以缓解此问题。这会修复任何潜伏的损坏,但无法修复所有既有的数据错误。不过,如果安装在其生命周期内执行的事务少于 2^31 个更新(可用SELECT txid_current() < 2^31检查),则在执行此清理之后即可认为该安装是安全的。修复 GIN 索引 posting 树页面删除中的竞态条件(Heikki Linnakangas)
这可能导致瞬时的错误结果或查询失败。
避免展平
SELECT列表中包含包裹在子SELECT中的易变函数的子查询(Tom Lane)这避免了因易变函数被额外求值而导致的意外结果。
修复规划器对外连接中嵌套的非简单变量子查询输出的处理(Tom Lane)
这一错误可能为涉及
JOIN语法中多级子查询的查询生成错误的计划。修复临时文件被过早删除的问题(Andres Freund)
修复规则打印中可能读取越过内存末尾的问题(Peter Eisentraut)
修复
int2vector和oidvector值的数组切片(Tom Lane)这类表达式现在会被隐式提升为常规的
int2或oid数组。修复使用 SQL 标准的简单 GMT 偏移时区时的错误行为(Tom Lane)
某些情况下,系统会使用简单 GMT 偏移值,而本应使用选择简单偏移之前一直生效的常规时区设置。此变更还使
timeofday函数遵循简单 GMT 偏移时区。防止记录 Windows 错误码翻译时可能出现的不当行为(Tom Lane)
正确地为 pg_ctl 生成的命令行加引号(Naoya Anzai、Tom Lane)
此修复仅适用于 Windows。
修复当源数据库通过
ALTER DATABASE SET设置default_transaction_read_only时 pg_dumpall 无法工作的问题(Kevin Grittner)此前,生成的脚本在恢复期间会失败。
修复 ecpg 对声明为
varchar的变量列表的处理(Zoltán Böszörményi)让
contrib/lo防御不正确的触发器定义(Marc Cousin)把时区数据文件更新为 tzdata 版本 2013h(阿根廷、巴西、约旦、利比亚、列支敦士登、摩洛哥和巴勒斯坦的夏令时法规变更)。另外,新增印度尼西亚的时区缩写 WIB、WIT、WITA。