↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

文档版本比较

POSTGRESQL · VERSION COMPARE

PostgreSQL 9.0.5 发布变化

此版本的完整功能、修复与兼容性说明,以及其他版本的关联记录。

此版本的完整变化
此版本的完整变化

包括起始版本之后至目标版本的变化。大版本号表示该分支的首个版本。

完整发布变化

9.0.5

2011-09-26

导出 JSON ↓
64项变化功能、修复、改进
1个版本按版本分组
1CVE独立漏洞编号

9.0.5stable支持截止 2015-10-08

安全变化
CVE / 问题严重程度修复版本所选版本状态
CVE-2011-2483

应用上游对 blowfish 有符号字符缺陷的修复(CVE-2011-2483)

已记录修复

PostgreSQL 9.0.5

迁移与兼容性

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

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

问题修复修复对系统目录执行 VACUUM FULL 或 CLUSTER 之后的目录缓存失效

变更

修复对系统目录执行 VACUUM FULL 或 CLUSTER 之后的目录缓存失效(Tom Lane)

某些情况下,系统目录行被重定位到别处不会被并发服务器进程识别,如果它们随后尝试更新该行,就可能发生目录损坏。最坏的结果可能是一张表完全丢失。

问题修复修复 sinval 重置处理期间错误的操作顺序,并确保 TOAST OID 在系统目录中被保留

变更

修复 sinval 重置处理期间错误的操作顺序,并确保 TOAST OID 在系统目录中被保留(Tom Lane)

这些失误可能导致对系统目录执行 VACUUM FULL 或 CLUSTER 之后出现瞬时失败。

问题修复修复对不确定的 HOT 更新元组建立索引的缺陷

变更

修复对不确定的 HOT 更新元组建立索引的缺陷(Tom Lane)

这些缺陷可能导致重建系统目录索引之后索引损坏。据信它们不影响用户索引。

问题修复修复 GiST 索引页面分裂处理中的多个缺陷

变更

修复 GiST 索引页面分裂处理中的多个缺陷(Heikki Linnakangas)

发生概率很低,但它们可能导致索引损坏。

问题修复修复 tsvector_concat() 中可能的缓冲区越界

变更

修复 tsvector_concat() 中可能的缓冲区越界(Tom Lane)

该函数可能低估其结果所需的内存量,导致服务器崩溃。

问题修复修复 xml_recv 处理“standalone”参数时的崩溃

变更

修复 xml_recv 处理“standalone”参数时的崩溃(Tom Lane)

改进让 pg_options_to_table 对没有值的选项返回 NULL

变更

让 pg_options_to_table 对没有值的选项返回 NULL(Tom Lane)

此前这类情况会导致服务器崩溃。

关联记录 (1)
改进避免在 ANALYZE 和 SJIS-2004 编码转换中可能越过内存末尾的访问

变更

避免在 ANALYZE 和 SJIS-2004 编码转换中可能越过内存末尾的访问(Noah Misch)

这修复了一些概率极低的服务器崩溃场景。

改进保护 pg_stat_reset_shared() 免受 NULL 输入

变更

保护 pg_stat_reset_shared() 免受 NULL 输入(Magnus Hagander)

问题修复修复在子事务内检测到恢复冲突死锁时可能的失败

变更

修复在子事务内检测到恢复冲突死锁时可能的失败(Tom Lane)

改进避免热备期间回收 btree 索引页时的虚假冲突

变更

避免热备期间回收 btree 索引页时的虚假冲突(Noah Misch、Simon Riggs)

改进如果恢复结束时 WAL 接收端仍在运行则将其关闭

变更

如果恢复结束时 WAL 接收端仍在运行则将其关闭(Heikki Linnakangas)

postmaster 此前在这种情况下会 panic,但这实际上是合法的情况。

问题修复修复 relcache init 文件失效中的竞态条件

变更

修复 relcache init 文件失效中的竞态条件(Tom Lane)

存在一个时间窗口,新的后端进程可能读到过期的 init 文件,却错过本应告知它数据已过期的失效消息。结果是目录访问中的离奇失败,通常在启动稍后阶段报 “could not read block 0 in file ...”。

问题修复修复 GiST 索引扫描结束时的内存泄漏

变更

修复 GiST 索引扫描结束时的内存泄漏(Tom Lane)

执行许多独立 GiST 索引扫描的命令(例如对已包含许多行的表验证新的基于 GiST 的排他约束)会因此泄漏瞬时需要大量内存。

关联记录 (1)
问题修复修复当必须对传入的命令串做编码转换且 LISTEN 处于活动状态时的内存泄漏

变更

修复当必须对传入的命令串做编码转换且 LISTEN 处于活动状态时的内存泄漏(Tom Lane)

问题修复修复支持可持有游标和 plpgsql 的 RETURN NEXT 命令的 tuplestore 中不正确的内存核算(可能导致内存膨胀)

变更

修复支持可持有游标和 plpgsql 的 RETURN NEXT 命令的 tuplestore 中不正确的内存核算(可能导致内存膨胀)(Tom Lane)

问题修复修复同时存在 BEFORE 和 AFTER 触发器时的触发器 WHEN 条件

变更

修复同时存在 BEFORE 和 AFTER 触发器时的触发器 WHEN 条件(Tom Lane)

如果同一更新曾触发过 BEFORE ROW 触发器,AFTER ROW UPDATE 触发器的 WHEN 条件求值可能崩溃。

问题修复修复构造大型有损位图时的性能问题

变更

修复构造大型有损位图时的性能问题(Tom Lane)

问题修复修复唯一列的连接选择率估计

变更

修复唯一列的连接选择率估计(Tom Lane)

这修复了一个可能错误估计连接结果大小的规划器启发式规则。

问题修复修复只出现在子 SELECT 目标列表中的嵌套 PlaceHolderVar 表达式

变更

修复只出现在子 SELECT 目标列表中的嵌套 PlaceHolderVar 表达式(Tom Lane)

这一失误可能导致外连接的输出错误地显示为 NULL。

改进允许规划器假定空的父表真的是空的

变更

允许规划器假定空的父表真的是空的(Tom Lane)

通常为了规划目的,空表被假定具有某个最小大小;但对继承层次的父表而言,这一启发式规则似乎弊大于利,因为父表往往永久为空。

改进允许嵌套的 EXISTS 查询被正确优化

变更

允许嵌套的 EXISTS 查询被正确优化(Tom Lane)

问题修复修复数组和路径创建函数,确保填充字节为零

变更

修复数组和路径创建函数,确保填充字节为零(Tom Lane)

这避免了一些规划器认为语义相等的常量不相等的情况,这种情况会导致糟糕的优化。

问题修复修复 EXPLAIN,使其处理内层索引扫描子计划中的门控 Result 节点

变更

修复 EXPLAIN,使其处理内层索引扫描子计划中的门控 Result 节点(Tom Lane)

这一疏忽的常见症状是 “bogus varno” 错误。

问题修复修复 btree 对 indexedcol IS NULL 条件的预处理

变更

修复 btree 对 indexedcol IS NULL 条件的预处理(Dean Rasheed)

如果与同一索引列上任何其他类型的 btree 可索引条件组合,该条件是不可满足的。这种情况在 9.0.0 及更高版本中处理不正确,导致本应没有输出的查询产生输出。

改进规避破坏 WAL 重放的 gcc 4.6.0 缺陷

变更

规避破坏 WAL 重放的 gcc 4.6.0 缺陷(Tom Lane)

这可能导致服务器崩溃后已提交事务的丢失。

问题修复修复视图中 VALUES 的转储缺陷

变更

修复视图中 VALUES 的转储缺陷(Tom Lane)

改进禁止对序列执行 SELECT FOR UPDATE/SHARE

变更

禁止对序列执行 SELECT FOR UPDATE/SHARE(Tom Lane)

这种操作不像预期那样工作,可能导致失败。

问题修复修复 VACUUM,使其总是更新 pg_class.reltuples/relpages

变更

修复 VACUUM,使其总是更新 pg_class.reltuples/relpages(Tom Lane)

这修复了一些自动清理可能对何时清理表做出越来越差决策的场景。

改进防御计算哈希表大小时的整数溢出

变更

防御计算哈希表大小时的整数溢出(Tom Lane)

问题修复修复 CLUSTER 可能尝试访问已移除的 TOAST 数据的情况

变更

修复 CLUSTER 可能尝试访问已移除的 TOAST 数据的情况(Tom Lane)

问题修复修复初始认证事务期间的过早超时失败

变更

修复初始认证事务期间的过早超时失败(Tom Lane)

问题修复修复 “peer” 认证使用凭据控制消息时的可移植性缺陷

变更

修复 “peer” 认证使用凭据控制消息时的可移植性缺陷(Tom Lane)

问题修复修复需要多次往返时的 SSPI 登录

变更

修复需要多次往返时的 SSPI 登录(Ahmed Shinwari、Magnus Hagander)

该问题的典型症状是 SSPI 登录期间的 “The function requested is not supported” 错误。

问题修复修复向 postgresql.conf 添加自定义变量类的新变量时的失败

变更

修复向 postgresql.conf 添加自定义变量类的新变量时的失败(Tom Lane)

改进如果 pg_hba.conf 包含 hostssl 但 SSL 被禁用则抛出错误

变更

如果 pg_hba.conf 包含 hostssl 但 SSL 被禁用则抛出错误(Tom Lane)

这被认定比此前静默忽略这类行的行为更用户友好。

问题修复修复 DROP OWNED BY 试图移除序列上的默认权限时的失败

变更

修复 DROP OWNED BY 试图移除序列上的默认权限时的失败(Shigeru Hanada)

问题修复修复 pg_srand48 种子初始化中的笔误

变更

修复 pg_srand48 种子初始化中的笔误(Andres Freund)

这导致未能使用所提供种子的所有位。该函数在大多数平台上不使用(只在没有 srandom 的平台上使用),而且无论如何看待,随机性低于预期的种子带来的潜在安全暴露似乎都很小。

问题修复避免 LIMIT 与 OFFSET 值之和超过 2^63 时的整数溢出

变更

避免 LIMIT 与 OFFSET 值之和超过 2^63 时的整数溢出(Heikki Linnakangas)

改进为 generate_series() 的 int4 和 int8 版本添加溢出检查

变更

为 generate_series() 的 int4 和 int8 版本添加溢出检查(Robert Haas)

问题修复修复 to_char() 中移除尾随零的问题

变更

修复 to_char() 中移除尾随零的问题(Marti Raudsepp)

在使用 FM 且小数点后没有数字位的格式中,小数点左侧的零可能被错误移除。

问题修复修复 pg_size_pretty(),避免接近 2^63 的输入溢出

变更

修复 pg_size_pretty(),避免接近 2^63 的输入溢出(Tom Lane)

改进放宽 plpgsql 对记录值中 typmod 匹配的检查

变更

放宽 plpgsql 对记录值中 typmod 匹配的检查(Tom Lane)

过于严格的检查可能导致丢弃本应保留的长度修饰符。

改进在 initdb 期间正确处理区域名中的引号

变更

在 initdb 期间正确处理区域名中的引号(Heikki Linnakangas)

这种情况可能出现在某些 Windows 区域设置下,例如“People's Republic of China”。

改进在 pg_upgrade 中,避免转储孤儿临时表

变更

在 pg_upgrade 中,避免转储孤儿临时表(Bruce Momjian)

这防止了表 OID 分配在新旧安装之间失去同步的情况。

问题修复修复 pg_upgrade,使其在从 8.3 升级期间保留 toast 表的 relfrozenxid

变更

修复 pg_upgrade,使其在从 8.3 升级期间保留 toast 表的 relfrozenxid(Bruce Momjian)

不这样做可能导致升级后 pg_clog 文件被过早删除。

问题修复修复 pg_upgrade 的 -l(日志)选项在 Windows 上工作的问题

变更

修复 pg_upgrade 的 -l(日志)选项在 Windows 上工作的问题(Bruce Momjian)

改进在 pg_ctl 中,支持 Windows 上服务注册的静默模式

变更

在 pg_ctl 中,支持 Windows 上服务注册的静默模式(MauMau)

问题修复修复 psql 在从其他文件执行 COPY 期间脚本文件行号计数的问题

变更

修复 psql 在从其他文件执行 COPY 期间脚本文件行号计数的问题(Tom Lane)

问题修复修复 pg_restore 直接写数据库模式对 standard_conforming_strings 的处理

变更

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

当从以 standard_conforming_strings 设为 on 制作的归档文件直接恢复到数据库服务器时,pg_restore 可能发出不正确的命令。

改进对并行 pg_restore 不支持的情况更加用户友好

变更

对并行 pg_restore 不支持的情况更加用户友好(Tom Lane)

此变更确保这类情况在任何恢复动作发生之前就被检测并报告。

问题修复修复 libpq 的 LDAP 服务查找代码中的越界写入和内存泄漏

变更

修复 libpq 的 LDAP 服务查找代码中的越界写入和内存泄漏(Albe Laurenz)

改进在 libpq 中,避免使用非阻塞 I/O 和 SSL 连接时的失败

变更

在 libpq 中,避免使用非阻塞 I/O 和 SSL 连接时的失败(Martin Pihlak、Tom Lane)

改进改进 libpq 对连接启动期间失败的处理

变更

改进 libpq 对连接启动期间失败的处理(Tom Lane)

特别是,对 SSL 连接启动期间服务器报告 fork() 失败的响应现在更合理。

改进改进 libpq 对 SSL 失败的错误报告

变更

改进 libpq 对 SSL 失败的错误报告(Tom Lane)

问题修复修复 PQsetvalue(),避免向最初来自服务器查询的 PGresult 添加新元组时可能崩溃

变更

修复 PQsetvalue(),避免向最初来自服务器查询的 PGresult 添加新元组时可能崩溃(Andrew Chernow)

改进让 ecpglib 以 15 位精度写 double 值

变更

让 ecpglib 以 15 位精度写 double 值(Akira Kurosawa)

改进在 ecpglib 中,确保出错后恢复 LC_NUMERIC 设置

变更

在 ecpglib 中,确保出错后恢复 LC_NUMERIC 设置(Michael Meskes)

安全应用上游对 blowfish 有符号字符缺陷的修复(CVE-2011-2483)

变更

应用上游对 blowfish 有符号字符缺陷的修复(CVE-2011-2483)(Tom Lane)

contrib/pg_crypto 的 blowfish 加密代码在 char 为有符号的平台(大多数平台如此)上可能给出错误结果,导致加密口令比应有的强度更弱。

问题修复修复 contrib/seg 中的内存泄漏

变更

修复 contrib/seg 中的内存泄漏(Heikki Linnakangas)

问题修复修复 pgstatindex(),使其对空索引给出一致结果

变更

修复 pgstatindex(),使其对空索引给出一致结果(Tom Lane)

改进允许使用 perl 5.14 构建

变更

允许使用 perl 5.14 构建(Alex Hunsaker)

问题修复修复构建和安装文件路径包含空格的各种问题

变更

修复构建和安装文件路径包含空格的各种问题(Tom Lane)

改进把时区数据文件更新为 tzdata 版本 2011i for DST law changes in Canada, Egypt, Russia, Samoa, and South Sudan。

变更

把时区数据文件更新为 tzdata 版本 2011i for DST law changes in Canada, Egypt, Russia, Samoa, and South Sudan。

如何生成比较结果?

比较依据起始版本之后至目标版本的 PostgreSQL 发布说明。经核实的回补重复项会谨慎合并,保留每条原始说明;相关提交可能涉及独立变化,仍作为不同记录保留。

发布快照: 2026-09-26 · 安全快照: 2026-09-26

内容来自 PostgreSQL 发布说明。交互方式参考 pgversions.com 与 pgversionreport.