发布日期:. 2012-08-17
这个版本包含各种自9.0.8以来的修复。想要获得关于9.0主版本的新特性信息, 请参阅第 E.131 节。
阻止通过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规律改变。