发布日期:. 2012-08-17
这个版本包含9.1.4的各种修复。关于9.1主要版本的新功能的信息, 参阅第 E.107 节。
防止通过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