E.92. 版本 9.0.8 #
发行日期:. 2012-06-04
本次发布包含对 9.0.7 的多方面修复。有关 9.0 大版本中新特性的信息,请参见第 E.100 节。.
E.92.2. 变更
修复
contrib/pgcrypto的 DEScrypt()函数中不正确的口令变换(Solar Designer)如果口令串包含字节值
0x80,口令的其余部分会被忽略,使口令比看起来弱得多。修复后,字符串的其余部分会被正确纳入 DES 哈希。因此,受此缺陷影响的任何已存储口令值将不再匹配,所以可能需要更新已存储的值。(CVE-2012-2143)忽略过程语言调用处理程序的
SECURITY DEFINER和SET属性(Tom Lane)把这类属性应用于调用处理程序可能导致服务器崩溃。(CVE-2012-2655)
允许
timestamp输入中的数字时区偏移距 UTC 最多 16 小时(Tom Lane)一些历史时区的偏移超过此前 15 小时的限制。这可能导致转储的数据值在重载期间被拒绝。
修复时间戳转换,使其在给定时间恰好是当前时区最后一次夏令时转换时间时能正确处理(Tom Lane)
这一疏忽已存在很长时间,但此前未被注意到,因为大多数使用夏令时的时区被假定有无限的未来夏令时转换序列。
修复
text到name以及char到name的转换,使其在多字节编码下正确执行字符串截断(Karl Schnaitter)修复
to_tsquery()中的内存复制缺陷(Heikki Linnakangas)确保
txid_current()在热备中执行时报告正确的纪元(epoch)(Simon Riggs)修复规划器对子查询内外层 PlaceHolderVar 的处理(Tom Lane)
该缺陷涉及引用来自外层查询外连接可空侧变量的子 SELECT。在 9.1 中,受此缺陷影响的查询会报 “ERROR: Upper-level PlaceHolderVar found where not expected” 失败。但在 9.0 和 8.4 中,你会静默地得到可能错误的答案,因为传入子查询的值不会在该为空时变为空。
修复
pg_attribute非常大会话启动缓慢的问题(Tom Lane)如果
pg_attribute超过shared_buffers的四分之一,会话启动期间有时需要的缓存重建代码就会触发同步扫描逻辑,使其耗时比正常情况多数倍。如果许多新会话同时启动,问题尤为严重。确保顺序扫描以合理的频率检查查询取消(Merlin Moncure)
遇到许多不含存活元组的连续页面的扫描在此期间不会响应中断。
确保
PGSemaphoreLock()的 Windows 实现在返回前清除ImmediateInterruptOK(Tom Lane)这一疏忽意味着同一查询稍后收到的查询取消中断可能在不安全的时刻被接受,后果不可预测且不好。
在打印视图或规则时安全地显示整行变量(Abbas Butt、Tom Lane)
涉及有歧义名称(即该名称既可能是查询的表名也可能是列名)的极端情况此前以有歧义的方式打印,存在视图或规则在转储和重载后被不同解释的风险。现通过附加无操作转换来避免歧义情况。
修复
COPY FROM,使其正确处理对应无效编码的空值标记串(Tom Lane)诸如
E'\\0'这样的空值标记串本应有效,过去也确实有效,但该情况在 8.4 中被破坏。确保自动清理工作进程正确执行栈深度检查(Heikki Linnakangas)
此前,由自动
ANALYZE调用的函数中的无限递归可能导致工作进程崩溃。修复日志收集器,使其在高负载下不丢失日志连贯性(Andrew Dunstan)
此前,如果收集器过于忙碌,可能无法重新组装大消息。
修复日志收集器,确保它在收到 SIGHUP 后会重新开始文件轮转(Tom Lane)
修复 GIN 索引的 WAL 重放逻辑,使其在索引随后被删除时不失败(Tom Lane)
修复 PL/pgSQL 的
RETURN NEXT命令中的内存泄漏(Joe Conway)修复 PL/pgSQL 的
GET DIAGNOSTICS命令在目标是函数第一个变量时的问题(Tom Lane)修复 psql 扩展显示(
\x)模式中可能越过内存末尾的访问(Peter Eisentraut)修复数据库包含大量对象时 pg_dump 的若干性能问题(Jeff Janes、Tom Lane)
如果数据库包含许多模式、许多对象处于依赖循环中、或有许多被拥有的序列,pg_dump 可能变得非常慢。
修复 pg_upgrade 处理存储在非默认表空间的数据库包含集簇默认表空间中的表的情况(Bruce Momjian)
在 ecpg 中,修复罕见的内存泄漏以及
sqlca_t结构之后一个字节可能被覆写的问题(Peter Eisentraut)修复
contrib/dblink的dblink_exec(),使其在出错时不泄漏临时数据库连接(Tom Lane)修复
contrib/dblink,使其在错误消息中报告正确的连接名(Kyotaro Horiguchi)修复
contrib/vacuumlo,使其在删除许多大对象时使用多个事务(Tim Lewis、Robert Haas、Tom Lane)此变更避免了需要删除许多对象时超出
max_locks_per_transaction。该行为可以通过新的-l(limit)选项调整。把时区数据文件更新为 tzdata 版本 2012c for DST law changes in Antarctica, Armenia, Chile, Cuba, Falkland Islands, Gaza, Haiti, Hebron, Morocco, Syria, and Tokelau Islands; also historical corrections for Canada。