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

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

文档版本对比

POSTGRESQL · VERSION COMPARE

PostgreSQL 9.0.7 的版本变更

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

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

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

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

本次发布的全部变更

9.0.7

2012-02-27

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

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

本版提及的安全记录 3 个 CVE
本版发布说明提及的 CVE,可能包含已有漏洞的后续修复
CVE / 问题严重程度修复版本
CVE-2012-0868

把 pg_dump 注释中写入的名称里的换行符转换为空格

—9.0.7
CVE-2012-0867

移除 SSL 证书中通用名长度的任意限制

—9.0.7
CVE-2012-0866

让 CREATE TRIGGER 要求对触发器函数有执行权限

—9.0.7

PostgreSQL 9.0.7

升级与兼容性说明

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

不过,如果你是从早于 9.0.6 的版本升级,请参见第 E.18 节。

安全相关让 CREATE TRIGGER 要求对触发器函数有执行权限

变更

让 CREATE TRIGGER 要求对触发器函数有执行权限(Robert Haas)

这一缺失的检查可能允许另一用户通过把触发器函数安装到自己拥有的表上,以伪造的输入数据执行该触发器函数。这只对标记为 SECURITY DEFINER 的触发器函数有影响,因为其他情况下触发器函数本来就以表所有者身份运行。(CVE-2012-0866)

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

安全相关移除 SSL 证书中通用名长度的任意限制

变更

移除 SSL 证书中通用名长度的任意限制(Heikki Linnakangas)

libpq 和服务器此前都会把从 SSL 证书提取的通用名截断到 32 字节。通常这最坏只会造成意外的验证失败,但在一些相当难以置信的场景下,它可能允许一个证书持有者冒充另一个。受害者必须恰好有 32 字节长的通用名,而攻击者必须说服受信任的 CA 颁发一个通用名以该字符串为前缀的证书。冒充服务器还需要额外的攻击手段来重定向客户端连接。(CVE-2012-0867)

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

安全相关把 pg_dump 注释中写入的名称里的换行符转换为空格

变更

把 pg_dump 注释中写入的名称里的换行符转换为空格(Robert Haas)

pg_dump 此前对其输出脚本中 SQL 注释内写出的对象名清理不慎。包含换行符的名称至少会使脚本语法错误。恶意构造的对象名可能在脚本重载时构成 SQL 注入风险。(CVE-2012-0868)

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复插入与清理并发导致 btree 索引损坏的问题

变更

修复插入与清理并发导致 btree 索引损坏的问题(Tom Lane)

插入导致的索引页分裂有时会使并发运行的 VACUUM 漏删本应删除的索引项。在相应的表行被删除后,悬空的索引项会导致错误(例如 “could not read block N in file ...”),或者更糟:当不相关的行被重新插入到现已空闲的表位置后,查询会静默地得到错误结果。该缺陷自 8.2 起就存在,但发生频率极低,直到现在才被诊断出来。如果你有理由怀疑它曾在你的数据库中发生,对受影响的索引重建索引即可修复。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 WAL 重放期间共享缓冲区的瞬时清零

变更

修复 WAL 重放期间共享缓冲区的瞬时清零(Tom Lane)

重放逻辑有时会把一个共享缓冲区清零再重新填充,使其内容瞬时无效。在热备模式下,这可能导致并行执行的查询看到垃圾数据。这可能引发各种症状,但最常见的好像是 “invalid memory alloc request size”。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 postmaster,使其在热备崩溃后尝试重启

变更

修复 postmaster,使其在热备崩溃后尝试重启(Tom Lane)

一个逻辑错误导致:如果有后端进程在热备模式下运行时崩溃,postmaster 会终止而不是尝试重启集簇。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 CLUSTER/VACUUM FULL 对最近更新的行所拥有的 toast 值的处理

变更

修复 CLUSTER/VACUUM FULL 对最近更新的行所拥有的 toast 值的处理(Tom Lane)

这一疏忽可能导致在这些命令之一执行期间,toast 表的索引报 “duplicate key value violates unique constraint” 错误。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进更改表所有者时,不仅更新表级权限,也更新逐列权限

变更

更改表所有者时,不仅更新表级权限,也更新逐列权限(Tom Lane)

未做到这一点意味着,此前授予的所有列权限仍显示为由旧所有者授予。这导致新所有者和超级用户都无法撤销这些现在无法追溯到表所有者的权限。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 REASSIGN OWNED 中支持外部数据包装器和外部服务器

变更

在 REASSIGN OWNED 中支持外部数据包装器和外部服务器(Alvaro Herrera)

如果该命令需要更改任何这类对象的所有权,会报 “unexpected classid” 错误。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进允许 ALTER USER/DATABASE SET 中某些设置取不存在的值

变更

允许 ALTER USER/DATABASE SET 中某些设置取不存在的值(Heikki Linnakangas)

允许把 default_text_search_config、default_tablespace 和 temp_tablespaces 设为未知的名称。这是因为设置要在其中使用的另一个数据库中它们可能是已知的;对表空间的情况,则是因为表空间可能尚未创建。此前 search_path 已被认识到有同样的问题,这些设置现在的行为与它一致。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复避免在提交后删除表文件出现问题时崩溃

变更

避免在提交后删除表文件出现问题时崩溃(Tom Lane)

删除表应只在事务提交后才删除底层磁盘文件。如果那时失败(例如因为文件权限错误),代码本应只发出警告消息并继续,因为此时中止事务已为时过晚。这一逻辑从 8.4 起被破坏,导致这类情况引发 PANIC 和无法重启的数据库。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进从 DROP TABLESPACE 的 WAL 重放期间的错误中恢复

变更

从 DROP TABLESPACE 的 WAL 重放期间的错误中恢复(Tom Lane)

重放会尝试删除表空间的目录,但这可能因各种原因失败(例如这些目录的所有权或权限不正确)。此前重放代码会 panic,使数据库在没有人工干预的情况下无法重启。记录问题并继续似乎更好,因为删除目录失败唯一后果只是浪费一些磁盘空间。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复为热备记录 AccessExclusiveLock 时的竞态条件

变更

修复为热备记录 AccessExclusiveLock 时的竞态条件(Simon Riggs)

有时锁会被记录为由“事务零”持有。至少已知这会在从库服务器上产生断言失败,还可能是更严重问题的原因。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 WAL 重放期间正确跟踪 OID 计数器,即使它发生回卷

变更

在 WAL 重放期间正确跟踪 OID 计数器,即使它发生回卷(Tom Lane)

此前 OID 计数器会一直停留在高值,直到系统退出重放模式。其实际后果通常为零,但在某些场景下,已提升为主库的备库服务器在需要 OID 值时,可能要很长时间才能把 OID 计数器推进到合理的值。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复防止在崩溃恢复开始时发出误导性的 “consistent recovery state reached” 日志消息

变更

防止在崩溃恢复开始时发出误导性的 “consistent recovery state reached” 日志消息(Heikki Linnakangas)

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_stat_replication.replay_location 的初始值

变更

修复 pg_stat_replication.replay_location 的初始值(Fujii Masao)

此前,在至少重放一条 WAL 记录之前,显示的值是错误的。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复带 * 的正则表达式反向引用

变更

修复带 * 的正则表达式反向引用(Tom Lane)

代码实际上并不强制精确字符串匹配,而是接受任何满足反向引用符号所引用的模式子表达式的字符串。

类似问题仍困扰着嵌入在更大带量词表达式中(而非量词直接作用对象)的反向引用。这将在未来的 PostgreSQL 版本中解决。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复最近引入的 inet/cidr 值处理中的内存泄漏

变更

修复最近引入的 inet/cidr 值处理中的内存泄漏(Heikki Linnakangas)

PostgreSQL 2011 年 12 月版本中的一个补丁导致这些操作中的内存泄漏,在此类列上构建 btree 索引等场景中可能相当显著。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 SQL 语言函数中 CREATE TABLE AS/SELECT INTO 之后的悬空指针

变更

修复 SQL 语言函数中 CREATE TABLE AS/SELECT INTO 之后的悬空指针(Tom Lane)

大多数情况下这只会在启用断言的构建中导致断言失败,但似乎可能有更糟的后果。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进避免 Windows 上 syslogger 中文件句柄的双重关闭

变更

避免 Windows 上 syslogger 中文件句柄的双重关闭(MauMau)

通常这个错误不可见,但在调试版 Windows 上运行时会导致异常。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 plpgsql 中与 I/O 转换相关的内存泄漏

变更

修复 plpgsql 中与 I/O 转换相关的内存泄漏(Andres Freund、Jan Urbanski、Tom Lane)

某些操作会一直泄漏内存直到当前函数结束。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进改进 pg_dump 对继承表列的处理

变更

改进 pg_dump 对继承表列的处理(Tom Lane)

pg_dump 错误处理了子列与父列默认表达式不同的情况。如果默认值在文本上与父列相同但实际不同(例如因为模式搜索路径差异),它不会被识别为不同,因此转储和恢复后子列会被允许继承父列的默认值。子列为 NOT NULL 而父列不是的情况也可能被微妙地错误恢复。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 pg_restore 直接写数据库模式对 INSERT 式表数据的处理

变更

修复 pg_restore 直接写数据库模式对 INSERT 式表数据的处理(Tom Lane)

当使用 2011 年 9 月或 12 月版本的 pg_restore 时,对以 --inserts 或 --column-inserts 选项制作的归档文件直接恢复到数据库会失败,这是对另一个问题的修复中的一个疏忽所致。归档文件本身没有问题,文本模式输出也正常。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进允许 pg_upgrade 处理包含 regclass 列的表

变更

允许 pg_upgrade 处理包含 regclass 列的表(Bruce Momjian)

由于 pg_upgrade 现在注意保留 pg_class OID,这一限制不再有任何理由存在。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进让 libpq 在查找 SSL 客户端证书文件时忽略 ENOTDIR 错误

变更

让 libpq 在查找 SSL 客户端证书文件时忽略 ENOTDIR 错误(Magnus Hagander)

即使用户的主目录被设置为 /dev/null 之类,这也能建立 SSL 连接(虽然没有证书)。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 ecpg 的 SQLDA 区域中更多的字段对齐问题

变更

修复 ecpg 的 SQLDA 区域中更多的字段对齐问题(Zoltan Boszormenyi)

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进允许 ecpg 的 DEALLOCATE 语句中使用 AT 选项

变更

允许 ecpg 的 DEALLOCATE 语句中使用 AT 选项(Michael Meskes)

支持它的基础设施已存在一段时间,但由于疏忽仍有一个错误检查拒绝这种情况。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 ecpg 中定义 varchar 结构时不使用变量名

变更

在 ecpg 中定义 varchar 结构时不使用变量名(Michael Meskes)

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 contrib/auto_explain 的 JSON 输出模式,使其产生有效的 JSON

变更

修复 contrib/auto_explain 的 JSON 输出模式,使其产生有效的 JSON(Andrew Dunstan)

输出在顶层使用了方括号,而本应使用花括号。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 contrib/intarray 的 int[] & int[] 操作符中的错误

变更

修复 contrib/intarray 的 int[] & int[] 操作符中的错误(Guillaume Lelarge)

如果两个输入数组共有的最小整数是 1,且任一数组中有更小的值,那么 1 会被错误地从结果中遗漏。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 contrib/pgcrypto 的 encrypt_iv() 和 decrypt_iv() 中的错误检测

变更

修复 contrib/pgcrypto 的 encrypt_iv() 和 decrypt_iv() 中的错误检测(Marko Kreen)

这些函数未能报告某些类型的无效输入错误,而是对错误输入返回随机垃圾值。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

BUG 修复修复 contrib/test_parser 中的一字节缓冲区越界

变更

修复 contrib/test_parser 中的一字节缓冲区越界(Paul Guyot)

代码会尝试多读一个字节,这在极端情况下会崩溃。由于 contrib/test_parser 只是示例代码,这本身不是安全问题,但坏的示例代码仍然是坏的。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在 ARM 上如果可用则使用 __sync_lock_test_and_set() 实现自旋锁

变更

在 ARM 上如果可用则使用 __sync_lock_test_and_set() 实现自旋锁(Martin Pitt)

该函数取代了我们此前对 SWPB 指令的使用,该指令已被弃用且在 ARMv6 及更高版本上不可用。报告表明旧代码在较新的 ARM 板上不会以明显方式失败,而只是不对并发访问互锁,导致多进程操作中的离奇失败。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进在使用接受该选项的 gcc 版本构建时使用 -fexcess-precision=standard 选项

变更

在使用接受该选项的 gcc 版本构建时使用 -fexcess-precision=standard 选项(Andrew Dunstan)

这防止了较新版本 gcc 产生"创造性"结果的各种场景。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

其他改进允许在 FreeBSD 上使用线程化 Python

变更

允许在 FreeBSD 上使用线程化 Python(Chris Rees)

我们的 configure 脚本此前认为这种组合无法工作;但 FreeBSD 修复了问题,因此移除该错误检查。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

这份对比如何生成?

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

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

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

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

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