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 DATABASEDROP DATABASE并发的更新 pg_tablespace记录,那么它们可能行为错误。

  • 阻止DROP OWNED试图删除整个数据库或表空间 (Álvaro Herrera)

    为了安全,这些对象的所有权必须重新分配,而不是抛弃。

  • 修复vacuum_freeze_table_age 实现中的错误 (Andres Freund)

    在有多于vacuum_freeze_min_age 个事务存在的安装中,这个错误阻止使用部分表扫描的autovacuum,所以全表扫描将总是发生。

  • 阻止RowExprXmlExpr解析分析两次时的错误行为 (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)

    这个现在用于一些东欧时区。