选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

不受支持的版本: 9.3 / 9.2 / 9.1 / 9.0
历史版本PostgreSQL 9.1 已于 2016 年 10 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本手册首页

E.45. 版本 9.0.4 #

发行日期

2011-04-18

本次发布包含对 9.0.3 的多方面修复。有关 9.0 大版本中新特性的信息,请参见 第 E.49 节。.

E.45.1. 迁移到版本 9.0.4

对于运行 9.0.X 的用户,不需要进行转储/恢复。

不过,如果你的安装是通过运行 pg_upgrade 从前一个大版本升级的,应采取措施防止因 pg_upgrade 一个现已修复的缺陷导致可能的数据丢失。推荐的解决方案是对所有 TOAST 表执行 VACUUM FREEZE。更多信息见 http://wiki.postgresql.org/wiki/20110408pg_upgrade_fix

E.45.2. 变更

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

    pg_upgrade 期间,TOAST 表的 pg_class.relfrozenxid 值未被正确复制到新安装。这之后可能导致 pg_clog 文件在仍被需要用于验证 TOAST 表中的元组时被丢弃,导致 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、Simon Riggs)

    所有可重试的冲突错误现在都具有指示可以重试的错误码。此外,因主库上数据库被删除而关闭会话现在报告为 ERRCODE_DATABASE_DROPPED 而不是 ERRCODE_ADMIN_SHUTDOWN,使连接池能够正确处理这种情况。

  • 防止启动进程与 bgwriter 进程交互时的间歇性挂起(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 错误。

  • 允许 replication 作为 pg_hba.conf 中的用户名(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 预处理器对 float 常量的处理(Heikki Linnakangas)

  • 修复并行 pg_restore,使其正确处理 POST_DATA 项上的注释(Arnd Hannemann)

  • 修复 pg_restore,使其能处理 TOC 文件中的长行(超过 1KB)(Tom Lane)

  • 加入更多防护,防止因过于激进的编译器优化导致的除零崩溃(Aurelien Jarno)

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

    此前有一个硬编码的假设:该系统函数在这些系统的 MIPS 硬件上不可用。现在改用编译期测试,因为较新的版本已经有了它。

  • 修复 HP-UX 上的编译失败(Heikki Linnakangas)

  • 避免在进程启动极早期尝试写入 Windows 控制台时崩溃(Rushabh Lathia)

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

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

  • 修复 Windows 构建脚本中 xcopy 的用法,使其在 Windows 7 下正确工作(Andrew Dunstan)

    这只影响构建脚本,不影响安装或使用。

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

  • 把时区数据文件更新为 tzdata 版本 2011f for DST law changes in Chile, Cuba, Falkland Islands, Morocco, Samoa, and Turkey; also historical corrections for South Australia, Alaska, and Hawaii。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。