版本 9.0.9

PostgreSQL 9.4.4 中文手册
上一页 | 上一级 | 附录 E. 版本说明 | 下一页

# E.57. 版本 9.0.9

> 发布日期: 2012-08-17

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

## E.57.1. 迁移到版本 9.0.9

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

另外，如果你是从一个早于9.0.6的版本升级而来，请参阅第 E.60 节。

## E.57.2. 修改列表

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

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

- 阻止通过`contrib/xml2`的`xslt_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 "pg_notify/`nnnn`" at offset `nnnnn`: Success"。

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

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

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

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

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

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

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

  这种情况会出现在带有`LIKE`或`INHERITS`的`CREATE 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/xml2`的`xslt_process()` 中的错误 (Tom Lane)

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

上一页 | 起始页 | 下一页
版本 9.0.10 | 上一级 | 版本 9.0.8