版本 9.0.4

PostgreSQL 9.4.4 中文手册
上一页 | 上一级 | 附录 E. 版本说明 | 下一页

# E.62. 版本 9.0.4

> 发布日期: 2011-04-18

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

## E.62.1. 迁移到版本 9.0.4

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

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

## E.62.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的历史修正。

上一页 | 起始页 | 下一页
版本 9.0.5 | 上一级 | 版本 9.0.3