E.65. 发布8.3.12

发布日期: 2010-10-04

该发布包含来自8.3.11的各种修复。 关于8.3主要发布的新特性信息,参阅Section E.77

E.65.1. 迁移到版本8.3.12

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

E.65.2. 变化

  • 为PL/Perl和PL/Tcl中每个调用SQL userid使用单独解析器 (Tom Lane)

    这种变化可以防止通过颠覆在同一会话下另一个SQL用户身份执行的 (例如,SECURITY DEFINER函数内)Perl或Tcl的代码引起的安全问题。 大多数的脚本语言提供可以执行的多种方式,比如重新定义通过目标函数调用的标准函数或操作符。 如果没有这些变化,使用Perl或Tcl语言使用权的任何SQL用户本质上可以执行 目标函数所有者的SQL权限。

    这种变化的成本是在Perl和Tcl函数之间有意通讯变得更加困难。 为了提供一个安全出口,PL/PerlU和PL/TclU函数继续使用每个会话中解析器。 没有考虑安全问题,因为所有这些函数在数据库超级用户的信任级别中执行。

    这很可能是第三方的程序语言,声称可以提供可信认执行程序也有类似的安全问题。 我们建议您联系依赖于安全关键目的的任何PL作者。

    我们非常感谢Tim Bunce指出这个问题(CVE-2010-3433)

  • 避免在pg_get_expr()中通过禁用它 打算用于不是系统目录列中的参数的可能崩溃(Heikki Linnakangas, Tom Lane)

  • 把退出代码128(ERROR_WAIT_NO_CHILDREN)作为Windows上非致命的(Magnus Hagander)

    在高负载下,Windows进程有时会在错误代码启动时失败。 之前postmaster将这个看作为恐慌条件,并且重新启动整个数据库, 但是这似乎是一种过度反应。

  • 修复附加索引扫描中非严格的OR 连接子句的不正确用法(Tom Lane)

    这是在8.3分支中丢失的8.4修复的一个补丁。 这纠正了8.3.8中引入的一个错误,它可能导致外连接不正确 结果,当内在关系是继承树或者UNION ALL子查询的时候。

  • 修复UNION ALL成员关系的可能重复扫描(Tom Lane)

  • 修复"不能处理非计划子查询"错误(Tom Lane)

    当子选择包含扩展到包含另一子选择的表达式中连接别名引用的时候发生。

  • 修复该错误以标记缓存计划为瞬时的(Tom Lane)

    如果已准备好规划,当CREATE INDEX CONCURRENTLY是所引用表中之一, 它被认为是重新规划,一旦索引准备使用。这没有发生。

  • 在一些偶然报告的btree错误情况中减少PANIC到ERROR,并且提供错误信息的更多细节(Tom Lane)

    这可能优化使用损坏索引系统鲁棒性。

  • 防止show_session_authorization()在autovacuum进程中崩溃(Tom Lane)

  • 防御函数返回setof记录,其中并非所有返回行都是同一行类型(Tom Lane)

  • 当散列按引用传递函数结果的时候,修复可能错误(Tao Ma, Tom Lane)

  • 优化join列中NULL的合并连接处理(Tom Lane)

    如果排序顺序是空排序高,那么合并连接完全达到第一个空时停止。

  • 当写它们的时候,注意fsync锁文件的内容(包含postmaster.pid和套接锁文件)(Tom Lane)

    如果postmaster启动后不久主机崩溃,这种忽略可能会导致损坏的锁文件内容。 这可能反过来防止后续试图随后启动postmaster, 直到锁文件被手动删除。

  • 当分配XID到大量嵌套子事务的时候,避免递归(Andres Freund, Robert Haas)

    如果有有限的堆栈空间,那么原代码可能导致崩溃。

  • 避免在walwriter进程中保持打开旧的WAL段(Magnus Hagander, Heikki Linnakangas)

    之前代码可能阻止删除不需要段。

  • 修复log_line_prefix%i逃逸, 这可能在后端启动初期产生垃圾(Tom Lane)

  • 当启动归档的时候,修复ALTER TABLE ... SET TABLESPACE中可能的数据损坏(Jeff Davis)

  • 允许CREATE DATABASEALTER DATABASE ... SET TABLESPACE通过查询取消被中断(Guillaume Lelarge)

  • 修复REASSIGN OWNED以处理操作符类和族(Asko Tiidumaa)

  • 当比较两个空tsquery值的时候,修复可能的核心转储(Tom Lane)

  • 修复包含%伴随_模式的LIKE的处理(Tom Lane)

    我们之前已经修复这个问题,但是仍然有一些不正确处理情况。

  • 在PL/Python中,防止来自PyCObject_AsVoidPtrPyCObject_FromVoidPtr空指针结果(Peter Eisentraut)

  • 使得psql认为DISCARD ALL作为不应该包含在autocommit-off模式事务块中的命令(Itagaki Takahiro)

  • 修复ecpg以处理正确来自RETURNING子句的数据(Michael Meskes)

  • 完善包含已删除列的表的contrib/dblink的处理(Tom Lane)

  • 修复contrib/dblink中"重复连接名"错误后的连接泄露(Itagaki Takahiro)

  • 修复contrib/dblink以正确处理超过62字节的连接名(Itagaki Takahiro)

  • 添加hstore(text, text)函数到contrib/hstore (Robert Haas)

    该函数代替已过时的=&gt;操作符。 它打补丁以便未来代码可用于旧的服务器版本。 请注意,该补丁在contrib/hstore被安装或重新安装在一个特定的数据库之后有效。 相反用户可能更愿意手动执行CREATE FUNCTION<命令>。

  • 更新编译基础设施和文档以反映从CVS到Git迁移的源代码库(Magnus Hagander and others)

  • 为了Egypt和Palestine中的DST变化更新时区数据文件到tzdata发布2010l; 同时为了Finland历史修正。

    这种变化还增加了两个Micronesian时区新的名称: Pacific/Chuuk现在优于Pacific/Truk(并且首选缩写CHUT而非TRUT) Pacific/Pohnpei优于Pacific/Ponape。

  • 采用Windows的"N. Central Asia标准时间"时区映射到Asia/Novosibirsk,而不是Asia/Almaty (Magnus Hagander)

    Microsoft改变了来自KB976098时区更新中该时区的DST操作。 Asia/Novosibirsk更好的匹配它的新操作。