E.14. 版本 9.1.11 #
发行日期
2013-12-05
本次发布包含对 9.1.10 的多方面修复。有关 9.1 大版本中新特性的信息,请参见第 E.25 节。.
E.14.1. 迁移到版本 9.1.11
对于运行 9.1.X 的用户,不需要进行转储/恢复。
不过,本版本纠正了若干潜在的数据损坏问题。请参见下面前三条变更日志,以确认你的安装是否受影响以及可以采取什么措施。
不过,如果你是从早于 9.1.9 的版本升级,请参见第 E.16 节。
E.14.2. 变更
修复
VACUUM判断是否可以更新relfrozenxid的测试(Andres Freund)某些情况下,
VACUUM(手工或自动)可能错误地推进表的relfrozenxid值,使元组逃过冻结,导致这些行在经过 2^31 个事务后变得不可见。由于需要多次错误推进才会发生实际丢失,数据丢失的概率相当低,但并非为零。从 9.0.4、8.4.8 或更早版本升级的用户不受影响,但之后的所有版本都包含该缺陷。升级后,在把
vacuum_freeze_table_age设为零的情况下对所有数据库中的所有表执行清理,可以缓解此问题。这会修复任何潜伏的损坏,但无法修复所有既有的数据错误。不过,如果安装在其生命周期内执行的事务少于 2^31 个更新(可用SELECT txid_current() < 2^31检查),则在执行此清理之后即可认为该安装是安全的。修复热备启动期间
pg_clog和pg_subtrans的初始化(Andres Freund、Heikki Linnakangas)这一缺陷会把已提交事务标记为未提交,从而在备库开始接受热备查询的那一刻造成数据丢失。除非备库启动时主库自上次检查点以来执行了大量更新事务,否则这种损坏的可能性很小。症状包括行缺失、本应删除的行仍可见,以及已更新行的过时版本与新版本同时可见。
该缺陷是在 9.3.0、9.2.5、9.1.10 和 9.0.14 版本中引入的。只运行过更早版本的备库没有风险。建议曾运行过任何含缺陷版本的备库在升级后从主库重新克隆(例如用新的基础备份)。
在 WAL 重放期间截断
pg_multixact内容(Andres Freund)这避免了备库中磁盘空间消耗不断增加。
修复 GIN 索引 posting 树页面删除中的竞态条件(Heikki Linnakangas)
这可能导致瞬时的错误结果或查询失败。
避免展平
SELECT列表中包含包裹在子SELECT中的易变函数的子查询(Tom Lane)这避免了因易变函数被额外求值而导致的意外结果。
修复规划器对外连接中嵌套的非简单变量子查询输出的处理(Tom Lane)
这一错误可能为涉及
JOIN语法中多级子查询的查询生成错误的计划。修复继承树的优化 MIN()/MAX() 计划生成错误(Tom Lane)
当 MIN()/MAX() 的参数是表达式而不是简单变量时,规划器可能失败。
修复临时文件被过早删除的问题(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 以大小写敏感方式搜索带引号的游标名(Zoltán Böszörményi)
修复 ecpg 对声明为
varchar的变量列表的处理(Zoltán Böszörményi)让
contrib/lo防御不正确的触发器定义(Marc Cousin)把时区数据文件更新为 tzdata 版本 2013h for DST law changes in Argentina, Brazil, Jordan, Libya, Liechtenstein, Morocco, and Palestine。Also, new timezone abbreviations WIB, WIT, WITA for Indonesia.