↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

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

文档版本对比

POSTGRESQL · VERSION COMPARE

PostgreSQL 9.0.4 的版本变更

本次发布的完整功能、修复与兼容性说明,以及它们在其他版本中的关联记录。

查看该版本全部变更
查看该版本全部变更

从起始版本之后,看到目标版本为止。大版本名称代表该系列首个正式版本。

收录 PostgreSQL 9.0 起的 17 个大版本、352 份发布说明;数据更新于 2026-09-26。

本次发布的全部变更

9.0.4

2011-04-18

导出 JSON
29项变更功能、修复与改进
1次版本发布按发行版本归档
0个 CVE本版说明中提及的漏洞编号

9.0.4 历史版本维护截止 2015-10-08

PostgreSQL 9.0.4

升级与兼容性说明

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

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

BUG 修复修复 pg_upgrade 对 TOAST 表的处理

变更

修复 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” 警告

变更

抑制错误的 “PD_ALL_VISIBLE flag was incorrectly set” 警告(Heikki Linnakangas)

VACUUM 有时会在实际有效的情况下发出此警告。

其他改进为热备冲突情况使用更好的 SQLSTATE 错误码

变更

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

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

BUG 修复防止启动进程与 bgwriter 进程交互时的间歇性挂起

变更

防止启动进程与 bgwriter 进程交互时的间歇性挂起(Simon Riggs)

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

其他改进禁止在组合类型中包含其自身

变更

禁止在组合类型中包含其自身(Tom Lane)

这防止了服务器在处理该组合类型时无限递归的场景。虽然这种结构有一些可能的用途,但它们似乎不足以抵消确保其始终安全工作所需的努力。

BUG 修复避免目录缓存初始化期间的潜在死锁

变更

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

某些情况下,缓存加载代码会在锁定索引的目录之前获取系统索引上的共享锁。这可能与尝试以另一种更标准的顺序获取排他锁的进程死锁。

BUG 修复修复当目标元组存在并发更新时 BEFORE ROW UPDATE 触发器处理中的悬空指针问题

变更

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

已观察到该缺陷在尝试执行 UPDATE RETURNING ctid 时导致间歇性的 “cannot extract system attribute from virtual tuple” 失败。发生更严重错误(例如为更新后的元组生成错误索引项)的概率非常小。

其他改进当表存在未决的延迟触发器事件时禁止 DROP TABLE

变更

当表存在未决的延迟触发器事件时禁止 DROP TABLE(Tom Lane)

此前 DROP 会照常执行,导致触发器最终触发时报 “could not open relation with OID nnn” 错误。

其他改进允许 “replication” 作为 pg_hba.conf 中的用户名

变更

允许 “replication” 作为 pg_hba.conf 中的用户名(Andrew Dunstan)

“replication” 在数据库名列中是特殊的,但它被误认为在用户名列中也是特殊的。

BUG 修复防止 GEQO 优化期间由恒假 WHERE 条件触发的崩溃

变更

防止 GEQO 优化期间由恒假 WHERE 条件触发的崩溃(Tom Lane)

其他改进改进规划器对半连接和反连接情况的处理

变更

改进规划器对半连接和反连接情况的处理(Tom Lane)

BUG 修复修复子 SELECT 中 SELECT FOR UPDATE 的处理

变更

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

该缺陷通常导致 “cannot extract system attribute from virtual tuple” 错误。

BUG 修复修复文本搜索的选择率估计,使其考虑 NULL

变更

修复文本搜索的选择率估计,使其考虑 NULL(Jesper Krogh)

BUG 修复修复 get_actual_variable_range(),使其支持由索引顾问插件注入的假设索引

变更

修复 get_actual_variable_range(),使其支持由索引顾问插件注入的假设索引(Gurjeet Singh)

BUG 修复修复涉及数组切片的 PL/Python 内存泄漏

变更

修复涉及数组切片的 PL/Python 内存泄漏(Daniel Popowich)

其他改进允许 libpq 的 SSL 初始化在用户主目录不可用时成功

变更

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

如果 SSL 模式不要求根证书文件,就没有必要失败。此变更将行为恢复为 9.0 之前的样子。

BUG 修复修复 libpq,使其对 conninfo_array_parse 中检测到的错误返回有用的错误消息

变更

修复 libpq,使其对 conninfo_array_parse 中检测到的错误返回有用的错误消息(Joseph Adams)

一个笔误导致库向应用返回 NULL 而不是包含错误消息的 PGconn 结构。

BUG 修复修复 ecpg 预处理器对 float 常量的处理

变更

修复 ecpg 预处理器对 float 常量的处理(Heikki Linnakangas)

BUG 修复修复并行 pg_restore,使其正确处理 POST_DATA 项上的注释

变更

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

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

变更

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

其他改进加入更多防护,防止因过于激进的编译器优化导致的除零崩溃

变更

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

其他改进支持在 FreeBSD 和 OpenBSD 的 MIPS 上使用 dlopen()

变更

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

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

BUG 修复修复 HP-UX 上的编译失败

变更

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

BUG 修复避免在进程启动极早期尝试写入 Windows 控制台时崩溃

变更

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

其他改进支持使用 MinGW 64 位编译器为 Windows 构建

变更

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

BUG 修复修复 Windows 上 libintl 的版本不兼容问题

变更

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

BUG 修复修复 Windows 构建脚本中 xcopy 的用法,使其在 Windows 7 下正确工作

变更

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

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

BUG 修复修复 pg_regress 在 Cygwin 上使用的路径分隔符

变更

修复 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。

变更

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

这份对比如何生成?

对比以 PostgreSQL 发行说明为依据,汇总起始版本之后、目标版本及之前的变更,支持同一大版本内的小版本更新,以及跨大版本升级。跨大版本时,旧分支的维护记录只纳入到下一大版本首次发布之日,所有记录均不晚于目标版本的发布日期。大版本名称(如 18)指首个正式版本(18.0);测试版与开发快照会单独标注。

条目正文来自本站中文手册,版本清单、条目覆盖与提交依据逐一核对上游英文原文。每条变更保留完整说明与原文链接;分类用于辅助浏览,具体影响、适用条件与升级操作请阅读条目正文和各版本的升级说明。

同一修复可能回补到多个版本分支。对比会保守合并可确认相同的条目,并保留各分支完整说明;已知由起始版本包含的修复会排除。一条说明包含多个独立修复时,只有全部已包含才排除。大版本新功能不因与旧版补丁存在提交关联而合并,不能确认相同的条目继续保留。这是发行说明的累计差异,不能覆盖二进制程序之间的每一处代码变化。

CVE 独立依据 PostgreSQL 官方安全公告与漏洞记录计算:起始版本受影响、目标版本已修复或不受影响的漏洞才计入,按编号去重。目标版本仍受影响的漏洞另行提示;安全变更条数与 CVE 数量分别统计。

交互参考 pgversions.com 与 pgversionreport,内容来自 PostgreSQL 发行说明。更多历史资料见发行说明归档。