选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

不受支持的版本: 9.3 / 9.2 / 9.1 / 9.0
历史版本PostgreSQL 9.0 已于 2015 年 10 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本手册首页

E.15. 版本 9.0.9 #

发行日期

2012-08-17

本次发布包含对 9.0.8 的多方面修复。有关 9.0 大版本中新特性的信息,请参见 第 E.24 节。.

E.15.1. 迁移到版本 9.0.9

对于运行 9.0.X 的用户,不需要进行转储/恢复。

不过,如果你是从早于 9.0.6 的版本升级, 请参见 第 E.18 节

E.15.2. 变更

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

    xml_parse() 会尝试按需获取外部文件或 URL 来解析 XML 值中的 DTD 和实体引用,从而使无特权数据库用户能够尝试以数据库服务器的权限获取数据。虽然外部数据不会直接返回给用户,但如果数据不能解析为有效 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 页在只读事务仍在访问它时就被回收的可能性。这会导致错误的索引搜索结果。由于时序要求,这种错误在实际中发生的概率似乎很低,但仍应修复。

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

    如果在新创建或重置的序列上执行了 ALTER SEQUENCE,然后恰好对它调用了一次 nextval(),随后服务器崩溃,WAL 重放会把序列恢复到看起来没有执行过 nextval() 的状态,从而使下一个 nextval() 调用再次返回第一个序列值。这种情况尤其可能出现在 serial 列上,因为创建 serial 列的序列包含一个 ALTER SEQUENCE OWNED BY 步骤。

  • 修复 txid_current(),使其在非热备下报告正确的纪元(epoch)(Heikki Linnakangas)

    这修复了上一个小版本引入的退化。

  • 修复主库事务有大量子事务时热备启动的缺陷(Andres Freund)

    这一失误导致报告为 out-of-order XID insertion in KnownAssignedXids 的失败。

  • 确保 pg_start_backup() 之后对 backup_label 文件执行 fsync(Dave Kerr)

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

    WAL 发送端后台进程疏于建立 SIGALRM 处理程序,这意味着在某些应发生超时的极端情况下它们会永远等待。

  • 回移植压缩 fsync 请求队列的 9.1 改进(Robert Haas)

    这改进了检查点期间的性能。9.1 的变更已经过足够的实际测试,看起来可以安全回移植。

  • 修复 LISTEN/NOTIFY,使其更好地应对 I/O 问题(例如磁盘空间耗尽)(Tom Lane)

    写入失败之后,所有后续发送更多 NOTIFY 消息的尝试都会失败,并显示诸如 Could not read from file "pg_notify/nnnn" at offset nnnnn: Success 的消息。

  • 只允许被直接阻塞的进程自动取消自动清理(Tom Lane)

    原始编码在某些情况下可能允许不一致的行为;特别是自动清理可能在不足 deadlock_timeout 宽限期之后就被取消。

  • 改进自动清理取消的日志记录(Robert Haas)

  • 修复日志收集器,使 log_truncate_on_rotation 在服务器启动后的第一次日志轮转期间就能工作(Tom Lane)

  • 修复附加到嵌套集合操作(UNION/INTERSECT/EXCEPT)上的 WITH(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:mmhh:mm:ss 字段的缺陷(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,以反映摩洛哥和托克劳的夏令时法规变更

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。