E.22. 版本 9.0.12
发布日期: 2013-02-07
这个版本包含各种自9.0.11以来的修复。想要获得关于9.0主版本的新特性信息, 请参阅Section E.34。
E.22.1. 迁移到版本 9.0.12
运行9.0.X的系统不需要转储/恢复。
另外,如果你是从一个早于9.0.6的版本升级而来,请参阅9.0.6的版本说明。
E.22.2. 修改列表
阻止SQL执行
enum_recv
(Tom Lane)该函数是错误声明的,允许一个简单的SQL命令使服务器崩溃。原则上, 攻击者可以使用它检验服务器内存的内容。感谢Sumit Soni (via Secunia SVCRP) 报告这个问题。 (CVE-2013-0255)
修复在WAL回放期间已经达到一个一致的数据库状态时检测的多重问题 (Fujii Masao, Heikki Linnakangas, Simon Riggs, Andres Freund)
截断一个关系文件时更新最小的恢复点 (Heikki Linnakangas)
一旦数据被丢弃,在时间线中的一个较早的点停止恢复已经不再安全。
修复热备份模式中丢失的取消 (Noah Misch, Simon Riggs)
有时会错过取消冲突的热备份查询的需要,此时允许这些查询看到不一致的数据。
修复SQL语法允许一个子SELECT结果加下标或字段选择 (Tom Lane)
修复繁忙的工作负载中自动清理截断的性能问题 (Jan Wieck)
在一个表的最后截断空白页需要排他锁,但是当有冲突的锁请求时autovacuum编码失败(并释放表锁)。 负载过轻,很有可能不会发生截断,导致表膨胀。通过执行一个部分的截断,释放该锁, 然后尝试再次请求这个锁并继续来修复这个问题。这个修复也大大的减少了autovacuum 释放该锁之前冲突的锁请求到达之后的平均时间。
扫描
pg_tablespace
时防止竞态条件 (Stephen Frost, Tom Lane)如果
CREATE DATABASE
和DROP DATABASE
并发的更新pg_tablespace
记录,那么它们可能行为错误。阻止
DROP OWNED
试图删除整个数据库或表空间 (Álvaro Herrera)为了安全,这些对象的所有权必须重新分配,而不是抛弃。
修复
vacuum_freeze_table_age
实现中的错误 (Andres Freund)在有多于
vacuum_freeze_min_age
个事务存在的安装中,这个错误阻止使用部分表扫描的autovacuum,所以全表扫描将总是发生。阻止
RowExpr
或XmlExpr
解析分析两次时的错误行为 (Andres Freund, Tom Lane)这个错误在内容中可能是用户可见的,如
CREATE TABLE LIKE INCLUDING INDEXES
。提高哈希表大小计算中的整数溢出防御 (Jeff Davis)
拒绝
to_date()
中超出范围的日期 (Hitoshi Harada)确保非ASCII提示字符串在Windows上转化为正确的代码页 (Alexander Law, Noah Misch)
这个错误影响psql和一些其他客户端程序。
修复没有连接到一个数据库时psql的
\?
命令中可能的崩溃 (Meng Qingzhong)修复pg_upgrade安全的处理无效的索引 (Bruce Momjian)
修复libpq的
PQprintTuples
中的一个字节缓冲区溢出 (Xi Wang)这个古老的函数PostgreSQL本身已经不用了,但是一些客户端代码可能仍然在使用。
使ecpglib适当的使用翻译了的信息 (Chen Huajun)
在MSVC上适当的安装ecpg_compat和pgtypes (Jiang Guiqing)
在libecpg中包括我们的
isinf()
版本, 如果系统没有提供它 (Jiang Guiqing)为提供的函数重新排列配置的测试,这样它不会被来自libedit/libreadline的虚假报告欺骗 (Christoph Berg)
确保Windows建立编号在时间上增加 (Magnus Hagander)
当在Windows上交叉编译时,使带有正确
.exe
后缀的 pgxs建立可执行 (Zoltan Boszormenyi)添加新的时间戳缩写
FET
(Tom Lane)这个现在用于一些东欧时区。