🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# E.25\. 版本 9.0.9 > **发布日期:** 2012-08-17 这个版本包含各种自9.0.8以来的修复。想要获得关于9.0主版本的新特性信息, 请参阅[Section E.34](#calibre_link-163)。 ## 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/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规律改变。