E.50. 发布8.4.3

发布日期: 2010-03-15

该发布包含了来自8.4.2的各种修复。关于8.4主要版本的新功能信息,参阅 Section E.53

E.50.1. 迁移到版本8.4.3

运行8.4.X不需要备份/恢复。然而,如果你从8.4.2更早版本更新,参阅8.4.2发布说明。

E.50.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)

  • 修复病理上阻碍正则表达式匹配的一些情况(Tom)

  • 当尝试内联返回一组包含已删除列的复合类型的SQL函数的时候,修复产生的错误(Tom)

  • 修复试图更新复合类型数组列元素字段中的错误(Tom)

  • EXPLAIN必须打印FieldStore或者分配ArrayRef表达式的时候, 避免错误(Tom)

    这种情况已经出现EXPLAIN VERBOSE试图输出计划节点目标列。

  • 在未修饰字符串出现在UNION/INTERSECT/EXCEPT子查询中的情况中, 避免不必要强制错误(Tom)

    修复8.4之前执行情况中的回归分析。

  • 在整行Var中有包含已删除列的rowtype的地方,避免不符合要求的rowtype兼容检查错误(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)

  • 如果没有设置errnoSSL_read或者SSL_write失败, 修复可能无限循环(Tom)

    据说这个可能使用openssl的一些Windows版本。

  • 不允许本地连接中GSSAPI认证,因为它需要hostname以正常工作(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)

  • 由于溢出依赖性ID,在平行pg_restore中修复可能崩溃(Tom)

  • 在复合列设置为空的情况下,修复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中的行可以在重负载下被删除。

  • 如果C编译器不提供64位整数数据类型,使得配置脚本报告错误(Tom)

    这种情况一段时间已经被打断,不再值得支持,因此在配置时间拒绝它。

  • 为了Bangladesh,Chile,Fiji, Mexico,Paraguay,Samoa中DST变化规律更新 时区数据文件到tzdata发布2010e。