pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
2012-06-04
本次发布包含对 9.1.3 的多方面修复。有关 9.1 大版本中新特性的信息,请参见 第 E.25 节。.
对于运行 9.1.X 的用户,不需要进行转储/恢复。
不过,如果你使用 citext 数据类型,并且是通过运行 pg_upgrade 从前一个大版本升级的,应执行 CREATE EXTENSION citext FROM unpackaged,以避免 citext 操作中与排序规则相关的失败。如果恢复来自包含 citext 数据类型的 9.1 之前数据库的转储,也需要这样做。如果你在升级到 9.1.4 之前已经运行过 CREATE EXTENSION 命令,则需要按下面第三条变更日志条目的说明手工更新系统目录。
不过,如果你是从早于 9.1.2 的版本升级, 请参见 第 E.23 节。
修复 contrib/pgcrypto 的 DES crypt() 函数中不正确的口令变换(Solar Designer)
如果口令串包含字节值 0x80,口令的其余部分会被忽略,使口令比看起来弱得多。修复后,字符串的其余部分会被正确纳入 DES 哈希。因此,受此缺陷影响的任何已存储口令值将不再匹配,所以可能需要更新已存储的值。(CVE-2012-2143)
忽略过程语言调用处理程序的 SECURITY DEFINER 和 SET 属性(Tom Lane)
把这类属性应用于调用处理程序可能导致服务器崩溃。(CVE-2012-2655)
让 contrib/citext 的升级脚本修复 citext 数组以及 citext 之上的域的排序规则(Tom Lane)
9.1.2 提供了对从 9.1 之前安装升级或重载的数据库中 citext 列和索引排序规则的修复,但该修复不完整:它遗漏了对数组以及 citext 之上的域的处理。本版本扩展了该模块的升级脚本以处理这些情况。和以前一样,如果你已经运行过升级脚本,则需要改为手工运行排序规则更新命令。具体做法参见 9.1.2 发行说明。
允许 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 中,你会静默地得到可能错误的答案,因为传入子查询的值不会在该为空时变为空。
修复输出列不是简单变量的 UNION ALL 子查询的规划(Tom Lane)
由于对 “MergeAppend child's targetlist doesn't match MergeAppend” 错误的一次误导性修复,这类情况的规划在 9.1 中明显变差。现已撤销该修复并改用其他方法。
修复 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 中被破坏。
修复对包含 RETURNING 子句的可写 CTE 的 EXPLAIN VERBOSE(Tom Lane)
修复 PREPARE TRANSACTION,使其在存在咨询锁时正确工作(Tom Lane)
历史上,PREPARE TRANSACTION 只是忽略会话持有的任何会话级咨询锁,但这一情况在 9.1 中被意外破坏。
修复不记录日志的表的截断(Robert Haas)
在 search_path 的非交互式赋值期间忽略缺失的模式(Tom Lane)
这使 9.1 的行为与较旧的分支重新一致。此前,9.1 会对来自 ALTER DATABASE SET 等处的 search_path 设置中提到的不存在模式抛出错误。
修复扩展脚本中所用临时表或瞬态表的缺陷(Tom Lane)
这包括扩展更新脚本中的重写型 ALTER TABLE 等情况,因为它在后台使用了瞬态表。
确保自动清理工作进程正确执行栈深度检查(Heikki Linnakangas)
此前,由自动 ANALYZE 调用的函数中的无限递归可能导致工作进程崩溃。
修复日志收集器,使其在高负载下不丢失日志连贯性(Andrew Dunstan)
此前,如果收集器过于忙碌,可能无法重新组装大消息。
修复日志收集器,确保它在收到 SIGHUP 后会重新开始文件轮转(Tom Lane)
修复 GiST 索引中的 “too many LWLocks taken” 失败(Heikki Linnakangas)
修复 GIN 索引的 WAL 重放逻辑,使其在索引随后被删除时不失败(Tom Lane)
在崩溃后正确检测预备事务的 SSI 冲突(Dan Ports)
提交只修改了临时表的事务时避免同步复制延迟(Heikki Linnakangas)
在这种情况下,事务的提交记录不需要刷到备库服务器,但部分代码不知道这一点,仍然等待它发生。
修复 pg_basebackup 中的错误处理(Thomas Ogrisegg、Fujii Masao)
修复 walsender,使其在连接终止时不进入忙循环(Fujii Masao)
修复 PL/pgSQL 的 RETURN NEXT 命令中的内存泄漏(Joe Conway)
修复 PL/pgSQL 的 GET DIAGNOSTICS 命令在目标是函数第一个变量时的问题(Tom Lane)
确保 PL/Perl 为 _TD 变量加上包限定(Alex Hunsaker)
该缺陷导致触发器调用在嵌套于更改当前包的函数调用中时失败。
修复返回组合类型的 PL/Python 函数,使其接受字符串作为结果值(Jan Urbanski)
这一情况被 9.1 中允许以其他格式(如字典)提供组合结果值的新增内容意外破坏。
修复 psql 扩展显示(\x)模式中可能越过内存末尾的访问(Peter Eisentraut)
修复数据库包含大量对象时 pg_dump 的若干性能问题(Jeff Janes、Tom Lane)
如果数据库包含许多模式、许多对象处于依赖循环中、或有许多被拥有的序列,pg_dump 可能变得非常慢。
修复 pg_restore 读取目录格式归档时的内存和文件描述符泄漏(Peter Eisentraut)
修复 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。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。