企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# E.30\. 版本 9.0.4 > **发布日期:** 2011-04-18 这个版本包含各种自9.0.3以来的修复。要想获取9.0主版本的新特性信息, 请参阅[Section E.34](#calibre_link-163)。 ## 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](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的历史修正。