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

# E.38. 版本9.1.5

> 发布日期: 2012-08-17

这个版本包含9.1.4的各种修复。关于9.1主要版本的新功能的信息， 参阅第 E.43 节。

## E.38.1. 迁移到版本9.1.5

为运行9.1.X不需要转储/恢复。

然而，如果你从9.1.4的更早版本更新， 参阅第 E.39 节。

## E.38.2. 变化

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

  `xml_parse()`可以尝试读取外部文件夹或者URL作为需要解决DTD 以及XML值中的实体引用，从而允许未授权数据库用户尝试读取与数据库服务器权限的数据。 当外部数据还没直接返回给用户时，如果数据没有解析为有效XML，那么它的一部分可能会暴露 在错误消息中；并且无论如何检查文件是否存在的能力可能对攻击者有用。

- 阻止通过`contrib/xml2`的 `xslt_process()`访问外部文件夹/URL(Peter Eisentraut)

  libxslt提供通过样式表命令读写文件夹和URL的能力， 从而允许未授权数据库用户以读写带有数据库服务器权限的数据。 禁止通过libxslt的安全选项的正确使用。(CVE-2012-3488)

  同时，删除`xslt_process()`的能力从外部文件夹/URL中读取文件和样式表。 当这是已证明"特性"时，那么它被长期视为坏主意。 为了CVE-2012-3489修复打破该能力，而不是付出努力尝试修复它， 我们只是打算简单地删除它。

- 防止btree索引页过早回收利用(Noah Misch)

  当我们允许只读事务略过已分配XID时， 当只读事务仍然运行到它时， 那么我们介绍已删除btree页可以被重新利用的可能性。 这会导致不正确索引搜索结果。 在该字段产生错误的可能性很低，因为时间要求， 但尽管如此它应该被修复。

- 修复带有新创造或者重新设置序列的碰撞安全漏洞(Tom Lane)

  如果在新创造或者重新设置序列上执行`ALTER SEQUENCE`， 然后在它上精确执行一个`nextval()`调用， 然后服务器崩溃了，WAL回放可以恢复序列到似乎没有执行`nextval()`的状态下， 然而允许通过下一个`nextval()`调用再次返回第一个序列值。 特别是这可以表现为`serial`列，因为串行列的序列的创建包含 `ALTER SEQUENCE OWNED BY`步骤。

- 修复`enum`类型值比较的竞争条件 (Robert Haas, Tom Lane)

  当遇到一个被添加的枚举值时， 比较可能失败， 因为当前查询开始。

- 当不再热备份时， 修复`txid_current()`以报告正确时代(Heikki Linnakangas)

  这修复了上一个次要版本介绍的回归。

- 防止不当的复制连接选择作为同步备用(Fujii Masao)

  主库可能不恰当选择虚假服务器 比如pg_receivexlog或者pg_basebackup 作为同步备用，然后无限期等待它们。

- 当主事务有很多子事务时， 修复热备启用错误(Andres Freund)

  这个错误导致故障报告 为"无效XID插入到KnownAssignedXids中"。

- 在`pg_start_backup()`之后确保 `backup_label`文件是fsync (Dave Kerr)

- 在walsender进程中修复超时处理(Tom Lane)

  WAL发送后端进程以建立SIGALRM处理程序， 意味着它们会永远等待超时发生的一些情况。

- 在每个后端通过walwriter冲洗后意识到walsender (Andres Freund, Simon Riggs)

  当工作负载只包含异步提交事务时， 这大大减少了复制延迟。

- 修复`LISTEN`/`NOTIFY`更好地处理I/O问题， 比如磁盘空间不足(Tom Lane)

  在写入失败后，尝试发送更多`NOTIFY`消息的所有子序列可能 带有信息如"不能从文件"pg_notify/`nnnn`" 偏移量`nnnnn`: 成功读取"而失败。

- 仅仅允许autovacuum通过直接的封锁进程被自动取消(Tom Lane)

  原代码可能允许某些情况下的不一致操作； 特别是，在少于`deadlock_timeout`宽限期后可以取消autovacuum。

- 改善autovacuum取消记录(Robert Haas)

- 修复日志收集器以致于在服务器启动后 第一个日志循环期间运行`log_truncate_on_rotation` (Tom Lane)

- 修复`WITH`附属于嵌套设置操作 (`UNION`/`INTERSECT`/`EXCEPT`) (Tom Lane)

- 确保参照子查询的整行不包含任何额外的 `GROUP BY`或者`ORDER BY`列(Tom Lane)

- 在`ALTER TABLE ... ADD CONSTRAINT USING INDEX`期间修复产生的依赖(Tom Lane)

  这个命令为索引留下了多余的`pg_depend`项， 这可能混淆后期操作， 尤其是索引列之一上的`ALTER TABLE ... ALTER COLUMN TYPE`。

- 修复`REASSIGN OWNED`以影响扩展(Alvaro Herrera)

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

  这种情况可以产生带有 `LIKE`或者`INHERITS`的`CREATE TABLE`。 复制整列变量被错误地标记带有不是一个新的原来表的行类型。 为`LIKE`拒绝理由似乎是合理的， 因为行类型可能后面会分散。 为`INHERITS`我们理论上应该接受它， 伴随对父表的行类型的隐含 胁迫；但比起后端补丁似乎是安全的需要更多的工作。

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

- 修复规划器传递正确规则排序到操作符选择性估计者(Tom Lane)

  任何核心选择性估计函数先前不需要这个， 但是第三方代码可能需要它。

- 从正则表达式修复常见前缀提取(Tom Lane)

  该代码被量化的括号子表达式搞糊涂了，比如`^(foo)?bar`。 这将导致这种模式不正确的搜索索引优化。

- 修复`interval`常量中带有分析符号 `hh``:``mm`和 `hh``:``mm``:``ss` 字段的错误(Amit Kapila, Tom Lane)

- 修复pg_dump以 更好处理包含部分`GROUP BY`列表 的视图(Tom Lane)

  视图在`GROUP BY`中只列出一个主键列， 但如果他们使用其他表列进行分组，那么根据主键进行标记。 pg_dump中这样的主键依赖的恰当处理导致差的有序转储， 这充其量是效率很低的恢复而且 在最坏的情况 可能会导致一个平行的pg_restore运行的彻底失败。

- 在PL/Perl中，当使用SQL_ASCII编码时， 避免设置UTF8标记(Alex Hunsaker, Kyotaro Horiguchi, Alvaro Herrera)

- 当转换Python Unicode字符串到PL/Python中的服务器编码时， 使用Postgres的编码转换函数，而不是Python的。

  这避免了一些拐角情况问题， 值得注意的是Python不支持所有Postgres编码。 一个显著功能变化是如果服务器编码是SQL_ASCII， 你会 得到字符串UTF-8表示形式；以前， 字符串中任何非ASCII字符可以导致错误。

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

- 适当报告`contrib/xml2`的 `xslt_process()`中的错误(Tom Lane)

- 为Morocco和Tokelau中DST变化规律更新时区 数据文件到tzdata发布2012e

上一页 | 起始页 | 下一页
版本9.1.6 | 上一级 | 版本9.1.4