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

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

文档版本比较

POSTGRESQL · VERSION COMPARE

PostgreSQL 9.3.5 发布变化

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

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

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

完整发布变化

9.3.5

2014-07-24

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

9.3.5stable支持截止 2018-11-08

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

保护 make check 期间启动的临时 postmaster 的 Unix 域套接字

9.3.6已记录修复

PostgreSQL 9.3.5

迁移与兼容性

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

不过,本版本纠正了 pg_upgrade 中的一个逻辑错误,以及某些 GiST 索引的索引损坏问题。请参见下面前两条变更日志,以确认你的安装是否受影响以及应采取的步骤。

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

改进在 pg_upgrade 中,删除 initdb 遗留的 pg_multixact 文件

变更

在 pg_upgrade 中,删除 initdb 遗留的 pg_multixact 文件(Bruce Momjian)

如果你使用了 9.3.5 之前版本的 pg_upgrade 把数据库集簇升级到 9.3,它可能遗留了一个本不应存在的文件 $PGDATA/pg_multixact/offsets/0000,该文件最终会在 VACUUM 中引发问题。然而,在常见情况下这个文件实际上是有效的,绝不能删除。要判断你的安装是否存在此问题,请以超级用户身份在集簇的任意数据库中运行以下查询:

WITH list(file) AS (SELECT * FROM pg_ls_dir('pg_multixact/offsets'))
SELECT EXISTS (SELECT * FROM list WHERE file = '0000')
 AND NOT EXISTS (SELECT * FROM list WHERE file = '0001')
 AND NOT EXISTS (SELECT * FROM list WHERE file = 'FFFF')
 AND EXISTS (SELECT * FROM list WHERE file != '0000')
AS file_0000_removal_required;

如果该查询返回 t,请手工删除文件 $PGDATA/pg_multixact/offsets/0000。如果查询返回 f,则无需任何操作。

改进正确初始化 contrib/btree_gist 在 bit 列上索引的填充字节

变更

正确初始化 contrib/btree_gist 在 bit 列上索引的填充字节(Heikki Linnakangas)

这一错误可能导致本应比较相等的值不被视为相等,从而产生错误的查询结果。在 bit 或 bit varying 列上建有 GiST 索引的用户,在安装此更新后应对这些索引执行 REINDEX。

关联记录 (3)
改进在删除 GIN 列表页时防止残缺页(torn page)

变更

在删除 GIN 列表页时防止残缺页(torn page)(Heikki Linnakangas)

此修复可防止在页面更新写入磁盘期间发生系统崩溃时可能出现的索引损坏。

关联记录 (3)
改进在从 WAL 重放更新时不清除 GiST 索引页的右链接

变更

在从 WAL 重放更新时不清除 GiST 索引页的右链接(Heikki Linnakangas)

这一错误可能导致热备中执行的 GiST 索引扫描出现瞬时错误的结果。

关联记录 (3)
问题修复修复向 SP-GiST 文本索引插入时极端情况下的无限循环

变更

修复向 SP-GiST 文本索引插入时极端情况下的无限循环(Tom Lane)

关联记录 (1)
问题修复修复 SP-GiST 索引搜索在使用 -|-(范围相邻)操作符时结果错误的问题

变更

修复 SP-GiST 索引搜索在使用 -|-(范围相邻)操作符时结果错误的问题(Heikki Linnakangas)

问题修复修复 pg_multixact/members 的回卷处理

变更

修复 pg_multixact/members 的回卷处理(Álvaro Herrera)

改进在检查点期间而不是 VACUUM 期间截断 pg_multixact

变更

在检查点期间而不是 VACUUM 期间截断 pg_multixact(Álvaro Herrera)

此变更确保 pg_multixact 段不会在崩溃后 WAL 重放期间仍被需要时就被删除。

问题修复修复 WAL 恢复后全可见标志可能不一致的问题

变更

修复 WAL 恢复后全可见标志可能不一致的问题(Heikki Linnakangas)

问题修复修复嵌套调用 ReceiveSharedInvalidMessages 期间缓存失效可能不正确的问题

变更

修复嵌套调用 ReceiveSharedInvalidMessages 期间缓存失效可能不正确的问题(Andres Freund)

关联记录 (3)
问题修复修复更新被其他进程并发锁定的元组时的竞态条件

变更

修复更新被其他进程并发锁定的元组时的竞态条件(Andres Freund、Álvaro Herrera)

问题修复修复对从带继承子表的表读取的子查询执行 UNION ALL 时规划器报 “could not find pathkey item to sort” 失败的问题

变更

修复对从带继承子表的表读取的子查询执行 UNION ALL 时规划器报 “could not find pathkey item to sort” 失败的问题(Tom Lane)

关联记录 (2)
改进当子查询的目标列表中存在集合返回函数时,不再假定其输出是唯一的

变更

当子查询的目标列表中存在集合返回函数时,不再假定其输出是唯一的(David Rowley)

这一疏忽可能导致诸如 WHERE x IN (SELECT y, generate_series(1,10) FROM t GROUP BY y) 之类的构造被错误优化。

关联记录 (3)
改进改进规划器,使其在可能时丢弃 AND/OR 的常量 NULL 输入

变更

改进规划器,使其在可能时丢弃 AND/OR 的常量 NULL 输入(Tom Lane)

此变更修复了一些 9.2 及之后版本更激进的参数替换导致比旧版本生成的计划更差的情况。

关联记录 (1)
改进确保规划器把等价的 VARIADIC 与非 VARIADIC 函数调用视为相同

变更

确保规划器把等价的 VARIADIC 与非 VARIADIC 函数调用视为相同(Tom Lane)

例如,这一缺陷可能导致无法使用涉及可变参数函数的表达式索引。要让此修复对现有 9.3 安装生效,可能需要重建这类索引,和/或重建包含应与索引匹配的可变参数函数调用的视图。

问题修复修复 json_populate_recordset() 及相关函数对嵌套 JSON 对象的处理

变更

修复 json_populate_recordset() 及相关函数对嵌套 JSON 对象的处理(Michael Paquier、Tom Lane)

嵌套的 JSON 对象可能导致父对象先前的字段未出现在输出中。

问题修复修复 to_json() 及相关函数对输入类型类别的识别

变更

修复 to_json() 及相关函数对输入类型类别的识别(Tom Lane)

已知这曾导致 JSON 结果中 money 字段加引号不当,其他数据类型也可能出现错误结果。

关联记录 (1)
问题修复修复未能对结构化类型的组合元素中的字段执行解 TOAST 的错误

变更

修复未能对结构化类型的组合元素中的字段执行解 TOAST 的错误(Tom Lane)

这纠正了 TOAST 指针可能未经解引用就被复制到其他表的情况。如果原始数据随后被删除,当这个已悬空的指针被使用时,会导致诸如 “missing chunk number 0 for toast value ...” 之类的错误。

关联记录 (3)
问题修复修复对 Append 计划节点输出的整行引用导致 “record type has not been registered” 失败的问题

变更

修复对 Append 计划节点输出的整行引用导致 “record type has not been registered” 失败的问题(Tom Lane)

关联记录 (3)
问题修复修复在回卷游标时调用用户定义函数可能崩溃的问题

变更

修复在回卷游标时调用用户定义函数可能崩溃的问题(Tom Lane)

关联记录 (3)
问题修复修复为 FROM 中的函数求值参数时查询级内存泄漏的问题

变更

修复为 FROM 中的函数求值参数时查询级内存泄漏的问题(Tom Lane)

关联记录 (3)
问题修复修复正则表达式处理中的会话级内存泄漏

变更

修复正则表达式处理中的会话级内存泄漏(Tom Lane、Arthur O'Dwyer、Greg Stark)

关联记录 (3)
问题修复修复 hungarian.stop 中的数据编码错误

变更

修复 hungarian.stop 中的数据编码错误(Tom Lane)

关联记录 (3)
改进防止在default_with_oids为真时创建带 OIDS 的外部表

变更

防止在default_with_oids为真时创建带 OIDS 的外部表(Etsuro Fujita)

关联记录 (2)
问题修复修复对在当前事务中插入、随后被一个现已回滚的子事务删除的行的活跃性检查

变更

修复对在当前事务中插入、随后被一个现已回滚的子事务删除的行的活跃性检查(Andres Freund)

如果同一事务中稍后执行了 CREATE INDEX 或 CLUSTER,这可能导致问题(至少是虚假警告,最坏是无限循环)。

关联记录 (3)
改进在 PREPARE TRANSACTION 期间清除 pg_stat_activity.xact_start

变更

在 PREPARE TRANSACTION 期间清除 pg_stat_activity.xact_start(Andres Freund)

在 PREPARE 之后,发起会话已不在事务中,因此不应继续显示事务开始时间。

关联记录 (3)
问题修复修复 REASSIGN OWNED 对文本搜索对象失败的问题

变更

修复 REASSIGN OWNED 对文本搜索对象失败的问题(Álvaro Herrera)

关联记录 (3)
改进防止 pg_class.relminmxid 的值在 VACUUM FULL 期间倒退

变更

防止 pg_class.relminmxid 的值在 VACUUM FULL 期间倒退(Álvaro Herrera)

改进减少规则/视图转储中的缩进,以提高可读性并避免过多空白

变更

减少规则/视图转储中的缩进,以提高可读性并避免过多空白(Greg Stark、Tom Lane)

此变更减少了对嵌套构造所施加的缩进量,包括一些用户可能并不认为是嵌套的情况,例如 UNION 列表。此前,深度嵌套的构造会以 O(N^2) 增长的空白打印,造成性能问题甚至有内存不足失败的风险。现在缩进以 40 为模缩减,乍看有些古怪,但相比简单限制缩进,似乎更好地保留了可读性。UNION 列表的冗余括号化也已减少。

问题修复修复当后续添加的列导致多个输入列与 USING 说明匹配时规则/视图的转储问题

变更

修复当后续添加的列导致多个输入列与 USING 说明匹配时规则/视图的转储问题(Tom Lane)

问题修复修复某些涉及 FROM 中返回包含已删除列的组合类型的函数的情况下的视图打印

变更

修复某些涉及 FROM 中返回包含已删除列的组合类型的函数的情况下的视图打印(Tom Lane)

改进在 postmaster 启动期间阻塞信号

变更

在 postmaster 启动期间阻塞信号(Tom Lane)

这确保了 postmaster 在例如启动过程中收到 SIGINT 时能够正确清理自身。

关联记录 (3)
问题修复修复处理 pg_hba.conf 中指定主机名而非 IP 地址的条目时的客户端主机名查找

变更

修复处理 pg_hba.conf 中指定主机名而非 IP 地址的条目时的客户端主机名查找(Tom Lane)

确保反向 DNS 查找失败会被报告,而不是只是静默地不匹配这些条目。同时确保每个连接只做一次反向 DNS 查找尝试,而不是每个主机名条目一次——如果查找尝试失败,此前发生的就是后者。

关联记录 (2)
改进允许 root 用户使用 postgres -C variable 和 postgres --describe-config

变更

允许 root 用户使用 postgres -C variable 和 postgres --describe-config(MauMau)

对以 root 身份启动服务器的禁止并不需要延伸到这些操作,放宽它可以避免 pg_ctl 在某些场景下的失败。

关联记录 (1)
安全保护 make check 期间启动的临时 postmaster 的 Unix 域套接字

变更

保护 make check 期间启动的临时 postmaster 的 Unix 域套接字(Noah Misch)

正如我们此前在 CVE-2014-0067 中指出的,任何能够访问套接字文件的本地用户都可以以服务器的引导超级用户身份连接,进而以运行测试的操作系统用户身份执行任意代码。此变更通过把服务器的套接字放到 /tmp 下一个临时的、模式为 0700 的子目录中来防御这一风险。但在不支持 Unix 套接字的平台(尤其是 Windows)上风险仍然存在,因为那时临时 postmaster 必须接受本地 TCP 连接。

此变更的一个有用副作用是简化了覆盖 DEFAULT_PGSOCKET_DIR 的构建中的 make check 测试。常用的非默认值(如 /var/run/postgresql)往往不允许构建用户写入,此前需要一些变通办法,现在不再需要了。

关联记录 (3)
问题修复修复表空间创建 WAL 重放在 Windows 上无法工作的问题

变更

修复表空间创建 WAL 重放在 Windows 上无法工作的问题(MauMau)

关联记录 (3)
问题修复修复 Windows 上套接字创建失败的检测

变更

修复 Windows 上套接字创建失败的检测(Bruce Momjian)

关联记录 (3)
改进在 Windows 上,允许新会话从配置文件获取 PGC_BACKEND 参数(例如log_connections)的值

变更

在 Windows 上,允许新会话从配置文件获取 PGC_BACKEND 参数(例如log_connections)的值(Amit Kapila)

此前,如果启动后在文件中更改了这类参数,更改不会生效。

关联记录 (3)
改进在 Windows 上正确地为可执行文件路径名加引号

变更

在 Windows 上正确地为可执行文件路径名加引号(Nikhil Deshpande)

如果安装路径同时包含空格和 @ 符号,这一疏忽可能导致 initdb 和 pg_upgrade 在 Windows 上失败。

关联记录 (3)
问题修复修复 macOS 上 libpython 的链接

变更

修复 macOS 上 libpython 的链接(Tom Lane)

我们先前使用的方法在 Xcode 5.0 及之后版本提供的 Python 库上可能失败。

关联记录 (2)
性能当服务器持续以快于客户端吸收速度的速率发送数据时,避免 libpq 中的缓冲区膨胀

变更

当服务器持续以快于客户端吸收速度的速率发送数据时,避免 libpq 中的缓冲区膨胀(Shin-ichi Morita、Tom Lane)

libpq 可能被迫不断增大其输入缓冲区,直到内存耗尽(这会被误导性地报告为 “lost synchronization with server”)。在正常情况下,数据持续以快于 recv() 循环吸收速度的速率传输是相当牵强的,但在客户端因调度器约束被人为减速时曾观察到这种情况。

关联记录 (3)
改进确保 libpq 中的 LDAP 查找尝试按预期超时

变更

确保 libpq 中的 LDAP 查找尝试按预期超时(Laurenz Albe)

关联记录 (3)
问题修复修复 ecpg 在 char * 数组作为返回多行的 FETCH 语句目标时的行为,以及其他一些数组处理修复

变更

修复 ecpg 在 char * 数组作为返回多行的 FETCH 语句目标时的行为,以及其他一些数组处理修复(Ashutosh Bapat)

关联记录 (3)
问题修复修复 pg_dump 处理依赖于表主键的物化视图的问题

变更

修复 pg_dump 处理依赖于表主键的物化视图的问题(Tom Lane)

当视图的查询依赖函数依赖性来精简 GROUP BY 列表时就会发生这种情况。pg_dump 会困惑到把该物化视图当作普通视图转储。

问题修复修复 pg_dumpall 的 -i 开关的解析

变更

修复 pg_dumpall 的 -i 开关的解析(Tom Lane)

问题修复修复 pg_restore 对旧式大对象注释的处理

变更

修复 pg_restore 对旧式大对象注释的处理(Tom Lane)

如果归档文件由 9.0 之前版本的 pg_dump 生成且包含较多大对象注释,直接恢复到数据库通常会失败。

关联记录 (3)
问题修复修复新服务器创建了 TOAST 表而旧版本没有创建时 pg_upgrade 的问题

变更

修复新服务器创建了 TOAST 表而旧版本没有创建时 pg_upgrade 的问题(Bruce Momjian)

这种罕见情况会表现为 “relation OID mismatch” 错误。

关联记录 (1)
改进在 pg_upgrade 中,保留旧集簇的 pg_database.datminmxid 和 pg_class.relminmxid 值,或者在从 9.3 之前版本升级时插入合理的值;同时让核心服务器防御不合理的值

变更

在 pg_upgrade 中,保留旧集簇的 pg_database.datminmxid 和 pg_class.relminmxid 值,或者在从 9.3 之前版本升级时插入合理的值;同时让核心服务器防御不合理的值(Bruce Momjian、Álvaro Herrera、Tom Lane)

这些变更防止了这样的场景:自动清理在新集簇启动后立即坚持扫描整个集簇的内容,或者对未冻结 MXID 值的跟踪被完全禁用。

改进防止 contrib/auto_explain 改变用户 EXPLAIN 命令的输出

变更

防止 contrib/auto_explain 改变用户 EXPLAIN 命令的输出(Tom Lane)

如果 auto_explain 处于活动状态,它可能导致 EXPLAIN (ANALYZE, TIMING OFF) 命令仍然打印计时信息。

关联记录 (1)
问题修复修复 contrib/dblink 中的查询级内存泄漏

变更

修复 contrib/dblink 中的查询级内存泄漏(MauMau、Joe Conway)

关联记录 (1)
改进在 contrib/pgcrypto 函数中,确保返回前清除栈变量中的敏感信息

变更

在 contrib/pgcrypto 函数中,确保返回前清除栈变量中的敏感信息(Marko Kreen)

关联记录 (3)
改进防止 contrib/pgstattuple 的 pgstat_heap() 使用已释放的内存

变更

防止 contrib/pgstattuple 的 pgstat_heap() 使用已释放的内存(Noah Misch)

关联记录 (1)
改进在 contrib/uuid-ossp 中,跨调用缓存 OSSP UUID 库的状态

变更

在 contrib/uuid-ossp 中,跨调用缓存 OSSP UUID 库的状态(Tom Lane)

这提高了 UUID 生成的效率,并在有 /dev/urandom 的平台上减少了从中抽取的熵量。

关联记录 (3)
改进把时区数据文件更新为 tzdata 版本 2014e,以反映克里米亚、埃及和摩洛哥的夏令时法规变更。

变更

把时区数据文件更新为 tzdata 版本 2014e,以反映克里米亚、埃及和摩洛哥的夏令时法规变更。

关联记录 (3)
如何生成比较结果?

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

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

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