E.25. 版本 9.0.9

发布日期: 2012-08-17

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

E.25.1. 迁移到版本 9.0.9

运行9.0.X的系统不需要转储/恢复。

另外,如果你是从一个早于9.0.6的版本升级而来,请参阅9.0.6的版本说明。

E.25.2. 修改列表

  • 阻止通过XML实体引用访问外部文件/URL (Noah Misch, Tom Lane)

    xml_parse()将尝试获取解决在XM值中引用的DTD和实体所需要的外部文件或URL, 因此允许非特权数据库用户使用数据库服务器的权限尝试获取数据。 但是外部数据不会直接返回给用户,如果该数据不可以解析为合法的XML, 则它的一部分会以错误消息的方式外露;并且在任何情况下, 仅仅能够检查文件的存在可能对一个攻击者有用。(CVE-2012-3489)

  • 阻止通过contrib/xml2xslt_process()访问外部文件/URL (Peter Eisentraut)

    libxslt提供通过样式表命令读写文件和URL的能力, 因此允许非特权的数据库用户使用数据库服务器的权限读写数据。 通过适当的使用libxslt的安全选项禁用该功能。 (CVE-2012-3488)

    另外,删除xslt_process()从外部文件/URL获取文档和样式表的能力。 虽然这是记录中的"特性",但是它长期被认为是一个坏的想法。 CVE-2012-3489修复打破了这个能力,并且与其花费时间尝试修复它, 不如立刻删除它。

  • 阻止btree索引页过早的回收 (Noah Misch)

    当我们允许只读事务跳过设定XID时,我们引入了已删除的btree索引页可以被回收的可能性, 而一个只读事务仍然在该索引页中运行。这可能会导致不正确的索引搜索结果。 这样一个错误发生在字段中的可能性因为计时要求看起来非常低,但是,尽管如此也应该修复它。

  • 用新创建的或重新设置的序列修复崩溃安全bug (Tom Lane)

    如果ALTER SEQUENCE在一个新创建的或重置的序列上执行, 并且正好在它上面有一个nextval()调用,那么然后服务器崩溃了, WAL重放将恢复该序列到nextval()还没有做的那个状态, 因此允许第一个序列值再次被下一个nextval()调用返回。 特别的,这会为serial列显示,因为串行列序列的创建包括一个 ALTER SEQUENCE OWNED BY步骤。

  • 修复txid_current(),当不是在热备时报告正确的纪元 (Heikki Linnakangas)

    这个修复了前一个小版本中引入的回归。

  • 修复热备启动里的bug,当一个主要事务有许多子事务时 (Andres Freund)

    这个错误导致和"out-of-order XID insertion in KnownAssignedXids"一样的失败报告。

  • 确保backup_label文件在pg_start_backup()之后是同步的 (Dave Kerr)

  • 修复walsender进程中的超时处理 (Tom Lane)

    WAL发送后端进程忽略了建立一个SIGALRM处理器, 意味着它们在一些极端情况下将一直等待,而这种情况应该发生的是超时。

  • 改善Back-patch 9.1以压缩同步请求队列 (Robert Haas)

    这提高了检查点期间的性能。该9.1改变现在看起来对于back-patch字段测试足够安全。

  • 修复LISTEN/NOTIFY以更好的处理I/O问题, 例如超出磁盘空间 (Tom Lane)

    在写入失败之后,所有随后发送更多NOTIFY信息的尝试都将失败, 带有像这样的信息:"Could not read from file "pgnotify/`_nnnn" at offsetnnnnn`: Success"。

  • 只允许autovacuum通过直接阻塞进程被自动取消 (Tom Lane)

    原始编码允许在某些情况下不一致的行为;特别的,autovacuum在少于deadlock_timeout 宽限期后被取消。

  • 改善autovacuum取消的登陆 (Robert Haas)

  • 修复日志收集器,以便log_truncate_on_rotation在 服务器启动后的第一个日志旋转期间工作 (Tom Lane)

  • 修复WITH附属于一个嵌套的集合运算 (UNION/INTERSECT/EXCEPT) (Tom Lane)

  • 确保整个行引用子查询不会包括任何额外的GROUP BYORDER BY列 (Tom Lane)

  • 不允许在CREATE TABLE期间在CHECK 约束和索引定义中拷贝整个行引用 (Tom Lane)

    这种情况会出现在带有LIKEINHERITSCREATE TABLE中。 拷贝的整个行变量用原始表而不是新表的行类型错误的标记。拒绝LIKE 看起来合理的情况,因为行类型可能稍后会有分歧。对于INHERITS, 我们应该允许它,隐式转换为当前表的行类型;但是这样将请求更多的工作。

  • 修复ARRAY(SELECT ...)子查询中的内存泄露(Heikki Linnakangas, Tom Lane)

  • 修复正则表达式中公共前缀的提取 (Tom Lane)

    该代码会对量化的加上括号的子表达式感到困惑,如^(foo)?bar。 这会导致对这种模式的搜索的不正确的索引优化。

  • 修复interval常量中有符号的_hh_``:``_mm__hh_``:``_mm_``:``_ss_ 字段分析的bug (Amit Kapila, Tom Lane)

  • 当在PL/Python中转换一个Python Unicode字符串为服务器编码时, 使用Postgres的编码转换函数,而不是Python的 (Jan Urbanski)

    这避免了一些极端情况问题,尤其是Python不支持所有的Postgres编码。 一个值得注意的功能性改变是,如果服务器编码是SQL_ASCII, 你将得到该字符串的UTF-8表示;以前,字符串中的任何非ASCII字符都将导致一个错误。

  • 修复PL/Python中PostgreSQL编码的映射为Python编码 (Jan Urbanski)

  • 适当的报告contrib/xml2xslt_process() 中的错误 (Tom Lane)

  • 更新时区数据文件为tzdata版本2012e,因为Morocco和Tokelau中的DST规律改变。