E.44. 版本 8.4.3 #
发行日期
2010-03-15
本次发布包含对 8.4.2 的多方面修复。有关 8.4 大版本中新特性的信息,请参见第 E.47 节。.
E.44.1. 迁移到版本 8.4.3
对于运行 8.4.X 的用户,不需要进行转储/恢复。不过,如果你是从早于 8.4.2 的版本升级,请参阅第 E.45 节。
E.44.2. 变更
新增配置参数
ssl_renegotiation_limit,控制对 SSL 连接进行会话密钥重协商的频率(Magnus)可以把它设为零以完全禁用重协商,这在使用有缺陷的 SSL 库时可能是必需的。特别是,某些厂商发布的 CVE-2009-3555 临时补丁会导致重协商尝试失败。
修复后端启动期间可能的死锁(Tom)
修复因未干净地处理 relcache 重载期间的错误而可能的崩溃(Tom)
修复因使用指向缓存计划的悬空指针而可能的崩溃(Tatsuo)
修复因过于激进地使
ROLLBACK的缓存计划失效而可能的崩溃(Tom)修复试图从子事务启动失败中恢复时可能的崩溃(Tom)
修复与使用保存点以及客户端编码不同于服务器编码相关的服务器内存泄漏(Tom)
修复 GIST 索引页分裂的恢复结束清理期间发出的不正确 WAL 数据(Yoichi Hirai)
如果在完成未完成的 GIST 插入之后、在恢复结束清理期间崩溃,这会导致索引损坏,或者更可能在 WAL 重放期间出错。
修复 GIN 索引 WAL 重做清理方法中的缺陷(Heikki)
修复 GIN 索引搜索中扫描键的不正确比较(Teodor)
让
bit类型的substring()把任何负长度都视为“字符串的其余全部”(Tom)以前的编码只对 -1 这样处理,对其他负值会产生无效的结果值,可能导致崩溃(CVE-2010-0442)。
修复整数到位串的转换:当输出位宽比给定整数宽出非 8 位倍数时,正确处理第一个小数字节(Tom Lane)
修复若干病态缓慢的正则表达式匹配情形(Tom)
修复试图内联返回包含已删除列的组合类型集合的 SQL 函数时出现的缺陷(Tom)
修复试图更新组合类型数组列中某元素的字段时的缺陷(Tom)
避免
EXPLAIN需要打印 FieldStore 或赋值 ArrayRef 表达式时的失败(Tom)既然
EXPLAIN VERBOSE试图打印计划节点目标列表,这些情形现在可能出现。避免某些情况下未加修饰的字面字符串出现在
UNION/INTERSECT/EXCEPT内的子查询中时不必要的强制转换失败(Tom)这修复了某些在 8.4 之前可用的情形的回归。
避免某些情况下整行 Var 的行类型包含已删除列时不希望出现的行类型兼容性检查失败(Tom)
修复备份历史文件中的
STOP WAL LOCATION条目:当结束位置恰好位于段边界时报告下一个 WAL 段的名称(Itagaki Takahiro)总是把目录 ID 传递给
CREATE FOREIGN DATA WRAPPER中指定的选项验证器函数(Martin Pihlak)修复更多临时文件泄漏的情形(Heikki)
这纠正了上一个小版本中引入的问题。失败的一种情形是返回集合的 plpgsql 函数在另一个函数的异常处理器中被调用。
新增对
FULL JOIN ON FALSE的支持(Tom)这防止了某些现在可被简化为常量假连接条件的查询相对 8.4 之前版本的回归。
改进布尔变量情形的约束排除处理,特别是使排除带有 “bool_column = false” 约束的分区成为可能(Tom)
防止把
INOUT转换当作表示二进制兼容(Heikki)在警告无法授予或撤销列级权限时在消息中包含列名(Stephen Frost)
这比以前更有用,并有助于防止
REVOKE产生多条消息时的困惑,那些消息此前看起来像是重复的。读取
pg_hba.conf及相关文件时,如果@出现在引号内,不要把@something当作文件包含请求;另外,永远不要把单独的@当作文件包含请求(Tom)这防止了角色名或数据库名以
@开头时的古怪行为。如果需要包含路径名包含空格的文件,仍然可以做到,但必须写@"/path to/file"而不是把引号放在整个构造之外。防止在某些平台上把目录命名为
pg_hba.conf及相关文件中的包含目标时出现无限循环(Tom)修复
SSL_read或SSL_write失败而未设置errno时可能的无限循环(Tom)据报道这在某些 Windows 版本的 openssl 上可能发生。
不允许在本地连接上使用 GSSAPI 认证,因为它需要主机名才能正确工作(Magnus)
保护 ecpg 免遭应用程序意外释放字符串(Michael)
让 ecpg 在连接消失时报告正确的 SQLSTATE(Michael)
修复 psql
\d输出中单元格内容的翻译(Heikki)修复 psql 的
numericlocale选项,使其不在 latex 和 troff 输出格式中格式化不应格式化的字符串(Heikki)修复 psql 中每查询的小内存泄漏(Tom)
当同时指定
ON_ERROR_STOP和--single-transaction且隐含的COMMIT期间发生错误时,让 psql 返回正确的退出状态(3)(Bruce)修复 pg_dump 对外部服务器权限的输出(Heikki)
修复并行 pg_restore 中因依赖 ID 超出范围而可能的崩溃(Tom)
修复组合列被设为 NULL 的一种情形下 plpgsql 的失败(Tom)
修复从 PL/PerlU 调用 PL/Perl 函数或相反时可能的失败(Tim Bunce)
在 PL/Python 中添加
volatile标记,以避免可能的编译器特定错误行为(Zdenek Kotala)确保 PL/Tcl 完全初始化 Tcl 解释器(Tom)
此疏漏唯一已知的症状是使用 Tcl 8.5 或更高版本时 Tcl 的
clock命令行为异常。防止对在失败的事务或子事务内创建的门户运行
ExecutorEnd(Tom)已知这会在使用
contrib/auto_explain时引起问题。防止在向
dblink_build_sql_*函数指定过多键列时contrib/dblink崩溃(Rushabh Lathia、Joe Conway)允许
contrib/ltree操作中使用零维数组(Tom)这种情形此前被作为错误拒绝,但把它与零元素数组同样处理更方便。特别是,这避免了当
ltree操作应用于ARRAY(SELECT ...)的结果而子查询不返回行时不必要的失败。修复
contrib/xml2中因草率内存管理导致的若干崩溃(Tom)让
contrib/xml2在 Windows 上的构建更健壮(Andrew)修复 Windows 信号处理中的竞态条件(Radu Ilie)
此缺陷的一个已知症状是
pg_listener中的行可能在重负载下被丢弃。让 configure 脚本在 C 编译器不提供可用的 64 位整数数据类型时报告失败(Tom)
这种情形已经损坏了一段时间,似乎不再值得支持,因此改为在 configure 时拒绝它。
把时区数据文件更新为 tzdata 版本 2010e for DST law changes in Bangladesh, Chile, Fiji, Mexico, Paraguay, Samoa。