E.41. 版本 8.4.6 #
发行日期
2010-12-16
本次发布包含对 8.4.5 的多方面修复。有关 8.4 大版本中新特性的信息,请参见第 E.47 节。.
E.41.1. 迁移到版本 8.4.6
对于运行 8.4.X 的用户,不需要进行转储/恢复。不过,如果你是从早于 8.4.2 的版本升级,请参阅第 E.45 节。
E.41.2. 变更
强制 Linux 上的默认
wal_sync_method为fdatasync(Tom Lane、Marti Raudsepp)Linux 上的默认值实际上多年来一直是
fdatasync,但最近的内核变更导致 PostgreSQL 改选open_datasync。这一选择没有带来任何性能改进,反而在某些文件系统(特别是使用data=journal挂载选项的ext4)上导致彻底失败。修复 GIN 索引 WAL 重放逻辑中的若干缺陷(Tom Lane)
这可能导致复制期间的 “bad buffer id: 0” 失败或索引内容损坏。
修复当起始检查点 WAL 记录与其重做点不在同一 WAL 段时从基础备份恢复的问题(Jeff Davis)
修复多个工作进程长期保持活动时自动清理工作进程的持续变慢(Tom Lane)
如果自动清理工作进程处理了足够多的表,其有效
vacuum_cost_limit可能降到接近零,导致其运行极慢。新增在
IA64上检测寄存器栈溢出的支持(Tom Lane)IA64架构有两个硬件栈。要完全防止栈溢出失败需要同时检查两者。在
copyObject()中添加栈溢出检查(Tom Lane)给定足够复杂的查询,某些代码路径可能因栈溢出而崩溃。
修复临时 GiST 索引中页面分裂的检测(Heikki Linnakangas)
在临时索引中可能出现“并发”页面分裂,例如当插入时有打开的游标正在扫描该索引。GiST 未能检测到这种情况,因此当游标继续执行时可能给出错误结果。
修复早期连接处理期间的错误检查(Tom Lane)
某些情况下对子进程过多的检查被跳过,可能在尝试把新子进程添加到固定大小数组时导致 postmaster 崩溃。
改进窗口函数的效率(Tom Lane)
某些需要提前读取大量元组、但
work_mem足够大可以全部保存在内存中的情况意外地慢。percent_rank()、cume_dist()和ntile()尤其受此问题影响。避免在
ANALYZE复杂索引表达式时内存泄漏(Tom Lane)确保使用整行 Var 的索引仍依赖于其表(Tom Lane)
像
create index i on t (foo(t.*))这样声明的索引在删除其表时不会自动被删除。不要“内联”带多个
OUT参数的 SQL 函数(Tom Lane)这避免了因丢失预期结果行类型信息而可能出现的崩溃。
修复当
ORDER BY、LIMIT、FOR UPDATE或WITH附加到INSERT ... VALUES的VALUES部分时的正确行为(Tom Lane)修复
COALESCE()表达式的常量折叠(Tom Lane)规划器有时会尝试求值实际上永远不可达的子表达式,可能导致意外错误。
修复当连接接受(
accept()或紧随其后的调用之一)失败且 postmaster 编译时带 GSSAPI 支持时的 postmaster 崩溃(Alexander Chernikov)修复
log_temp_files处于活动状态时临时文件漏删的问题(Tom Lane)如果尝试发出日志消息时出错,就不会执行删除,导致临时文件累积。
为
InhRelation节点添加打印功能(Tom Lane)这避免了启用
debug_print_parse且执行某些类型的查询时的失败。修复点到水平线段距离的错误计算(Tom Lane)
该缺陷影响多个不同的几何距离测量操作符。
修复 ecpg 中事务状态的错误计算(Itagaki Takahiro)
修复 PL/pgSQL 对“简单”表达式的处理,使其在递归或错误恢复情况下不失败(Tom Lane)
修复 PL/Python 对集合返回函数的处理(Jan Urbanski)
在生成集合结果的迭代器内尝试调用 SPI 函数会失败。
修复
contrib/cube的 GiST picksplit 算法中的缺陷(Alexander Korotkov)这可能导致
cube列上的 GiST 索引相当低效,尽管答案并非真正错误。如果你有这样的索引,考虑在安装此更新后对其执行REINDEX。contrib/dblink除了在创建新连接时外不再发出“identifier will be truncated”通知(Itagaki Takahiro)修复
contrib/pgcrypto在缺少公钥时可能的核心转储(Marti Raudsepp)修复
contrib/xml2的 XPath 查询函数中的内存泄漏(Tom Lane)把时区数据文件更新为 tzdata 版本 2010o for DST law changes in Fiji and Samoa; also historical corrections for Hong Kong。