E.33. 版本 9.0.1

发布日期: 2010-10-04

这个版本包含各种自9.0.0以来的修复。要想获得关于9.0主版本的新特性信息, 请参阅Section E.34

E.33.1. 迁移到版本 9.0.1

运行9.0.X版本的用户不需要转储/恢复。

E.33.2. 修改列表

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

    这个改变阻止由破坏稍后在相同的会话中不同的SQL用户身份执行的Perl或Tcl代码引起的安全问题 (例如,在SECURITY DEFINER函数中)。大多数脚本语言提供多种可能做的方式, 如重新定义被目标函数调用的标准函数或操作符。没有这个改变, 任何拥有Perl或Tcl语言使用权限的SQL用户都可以用目标函数所有者的SQL特权从本质上做任何事情。

    这个改变的成本是Prel和Tcl函数之间有意的沟通变得更加困难。为了提供一个逃逸出口, PL/PerlU和PL/TclU函数继续每个会话只使用过一个解释器。

    有可能要求提供可信任的执行的第三方程序语言有相同的安全问题。 我们建议为了安全性关键目的,联系你依赖的PL的作者。

    我们感谢Tim Bunce提出这个问题 (CVE-2010-3433)。

  • 改善pg_get_expr()安全修复,以便该函数仍然可以用作子查询的输出 (Tom Lane)

  • 修复占位符的位置不正确的评价 (Tom Lane)

    这个错误会导致查询输出应该为空时为非空, 如果外连接的内侧是一个在它的输出列表中带有非严格表达式的子查询。

  • 修复连接除去占位符表达式的处理 (Tom Lane)

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

  • 阻止未监听之后ProcessIncomingNotify()中的无限循环 (Jeff Davis)

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

  • 重新允许儒略日期的输入在0001-01-01 AD之前 (Tom Lane)

    'J100000'::date这样的输入在8.4之前是可以工作的, 但是添加错误检查后无意的打破了。

  • 使psql识别DISCARD ALL为一个命令, 该命令不应该在自动提交关闭模式下包含在事务块中 (Itagaki Takahiro)

  • 更新建立基础结构和文档以体现源代码仓库从CVS搬至Git (Itagaki Takahiro)