E.30. 版本 9.0.4

发布日期: 2011-04-18

这个版本包含各种自9.0.3以来的修复。要想获取9.0主版本的新特性信息, 请参阅Section E.34

E.30.1. 迁移到版本 9.0.4

运行9.0.X版本的用户不需要转储/恢复。

不过,如果您的安装是通过运行pg_upgrade从一个先前的主版本升级而来, 您应该采取措施防止由于pg_upgrade中一个现在修复的bug引起可能的数据丢失。 建议的解决方案是在所有的TOAST表上运行VACUUM FREEZE。 更多信息可以参考 http://wiki.postgresql.org/wiki/20110408pg_upgrade_fix

E.30.2. 修改刘表

  • 修复pg_upgrade对TOAST表的处理 (Bruce Momjian)

    在pg_upgrade期间,TOAST表的pg_class.relfrozenxid 值没有正确的拷贝到新的安装中。这可能稍后导致他们仍然需要在TOAST表中验证元组时, pg_clog文件被丢弃,导致"could not access status of transaction"失败。

    这个错误造成了用pg_upgrade升级的安装的数据丢失的重大风险。 这个补丁纠正了将来使用pg_upgrade的问题, 但是没有本质上解决已经用错误版本的pg_upgrade处理过的安装中的问题。

  • 废止错误的"PD_ALL_VISIBLE flag was incorrectly set"警告 (Heikki Linnakangas)

    VACUUM有时会发出这个警告,实际上是有效的。

  • 为热备份冲突情况使用更好的SQLSTATE错误代码 (Tatsuo Ishii and Simon Riggs)

    所有可重试的冲突错误现在有一段错误代码表明重试是可能的。另外, 由于数据库在master上删除引起的会话关闭现在报告为ERRCODE_DATABASE_DROPPED, 而不是ERRCODE_ADMIN_SHUTDOWN,所以连接池能正确的处理该情形。

  • 防止间歇性挂在启动进程和后端写进程的交互中 (Simon Riggs)

    这影响在非热备份情况下的恢复。

  • 不允许包括复合类型本身 (Tom Lane)

    这阻止了在服务器中处理复合类型时会无限递归的情形。当可能有一些这样的机构的使用时, 它们似乎不能足够令人信服的证明所需要的努力,以确保它总是安全的工作。

  • 在目录缓存初始化期间避免潜在的死锁 (Nikhil Sontakke)

    在某些情况下,缓存加载代码在锁住索引的目录之前会在系统索引上请求共享锁。 这可能会死锁对进程试图请求其他独占锁,更标准的顺序。

  • 修复当有并发更新到目标元组时BEFORE ROW UPDATE触发器处理中的悬空指针问题 (Tom Lane)

    观察到这个错误在试图做UPDATE RETURNING ctid时, 会导致间歇性的 "cannot extract system attribute from virtual tuple"失败。 有一个非常小的概率会发生更严重的错误,如为更新的元组生成不正确的索引条目。

  • 当等待一个表的延迟触发的事件时,不允许DROP TABLE (Tom Lane)

    以前的DROP会通过,导致触发器最终触发时的 "could not open relation with OID nnn"错误。

  • pg_hba.conf中允许"replication"作为一个用户名 (Andrew Dunstan)

    "replication"在数据库名字字段中是特殊的,但是它在用户名字段中被错误的认为也是特殊的。

  • 阻止GEQO最优化期间由WHERE条件常量错误触发的崩溃 (Tom Lane)

  • 改善规划者处理半连接和反连接的情况 (Tom Lane)

  • 修复子SELECT中SELECT FOR UPDATE的处理 (Tom Lane)

    这个错误通常导致"cannot extract system attribute from virtual tuple"错误。

  • 修复文本搜索的选择性估计以计算NULL (Jesper Krogh)

  • 修复get_actual_variable_range()以支持通过索引指导插件假设的索引注入 (Gurjeet Singh)

  • 修复包含数组分片的PL/Python内存泄露 (Daniel Popowich)

  • 当用户的根目录不可用时允许libpq的SSL成功初始化 (Tom Lane)

    如果是SSL模式,那么根证书文件不是必须的,也就不需要失败。 这个改变恢复到9.0之前版本的行为。

  • 修复libpq为在conninfo_array_parse 中检测到的错误返回有用的错误信息 (Joseph Adams)

    打字错误导致库返回NULL给应用,而不是包含错误信息的PGconn构成。

  • 修复ecpg预处理器对浮点数常量的处理 (Heikki Linnakangas)

  • 修复并发的pg_restore以正确的处理POST_DATA条目上的注释 (Arnd Hannemann)

  • 修复pg_restore以处理TOC文件中较长的行(超过 1KB) (Tom Lane)

  • 针对由过度热情的编译器优化和被零除引起的崩溃投入更多的保障 (Aurelien Jarno)

  • 支持在MIPS上的FreeBSD和OpenBSD中使用dlopen() (Tom Lane)

    有一个硬链接假设这个系统功能在这些系统的MIPS硬件上不可用。 那么使用一个编译时测试,因为最近的版本有这个功能。

  • 修复HP-UX上的编译错误 (Heikki Linnakangas)

  • 避免在启动过程中非常早的尝试写入Windows控制台时的崩溃 (Rushabh Lathia)

  • 支持为Windows用MinGW 64位编译器建立 (Andrew Dunstan)

  • 修复Windows上libintl的版本不兼容问题 (Hiroshi Inoue)

  • 修复xcopy在Windows生成脚本中的使用,以在Windows 7下正确的运转 (Andrew Dunstan)

    这只影响生成脚本,不影响安装或使用。

  • 修复在Cygwin上被pg_regress使用的路径分隔符 (Andrew Dunstan)

  • 更新时区数据文件到tzdata版本2011f,因为DST规律在以下地区发生了改变: Chile, Cuba, Falkland Islands, Morocco, Samoa, 和 Turkey;还有South Australia, Alaska, 和 Hawaii的历史修正。