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

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

文档版本对比

POSTGRESQL · VERSION COMPARE

PostgreSQL 9.3.6 的版本变更

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

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

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

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

本次发布的全部变更

9.3.6

2015-02-05

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

9.3.6 历史版本维护截止 2018-11-08

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

修复出错后前端/后端协议可能失去同步的问题

8.19.3.6
CVE-2014-0067

锁定 Windows 上回归测试的临时安装

7.09.3.6
CVE-2015-0243

修复contrib/pgcrypto中的缓冲区越界

6.59.3.6
CVE-2015-0242

修复替换实现的*printf()函数中的缓冲区越界

4.29.3.6
CVE-2015-0241

修复to_char()中的缓冲区越界

4.29.3.6
CVE-2014-8161

修复通过约束违反错误消息的信息泄露

3.19.3.6

PostgreSQL 9.3.6

升级与兼容性说明

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

但是,如果你是 Windows 用户且使用“Norwegian (Bokmål)”区域,升级后需要手工将PostgreSQL系统目录中存储的任何 “Norwegian (Bokmål)_Norway” 区域名替换为纯 ASCII 别名“Norwegian_Norway”。详情参见http://wiki.postgresql.org/wiki/Changes_To_Norwegian_Locale

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

安全相关修复to_char()中的缓冲区越界

变更

修复to_char()中的缓冲区越界(Bruce Momjian)

当to_char()处理要求数字位数很多的数字格式模板时,PostgreSQL会读取越过缓冲区末尾。当处理恶意构造的时间戳格式模板时,PostgreSQL会写入越过缓冲区末尾。两种情况都可能导致服务器崩溃。我们尚未排除导致权限提升攻击的可能性,尽管这种攻击似乎不太可能。(CVE-2015-0241)

关联记录(4)

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

安全相关修复替换实现的*printf()函数中的缓冲区越界

变更

修复替换实现的*printf()函数中的缓冲区越界(Tom Lane)

PostgreSQL包含printf及相关函数的替换实现。当代码格式化浮点数(转换说明符e、E、f、F、g或G)且请求的精度超过约 500 时,会发生栈缓冲区越界。这会导致服务器崩溃,我们尚未排除导致权限提升攻击的可能性。数据库用户可以通过to_char()SQL 函数触发这种缓冲区越界。虽然这是唯一受影响的核心PostgreSQL功能,但使用 printf 族函数的扩展模块也可能存在风险。

此问题主要影响 Windows 上的PostgreSQL。PostgreSQL在系统实现足够完善时会使用系统实现,而其他现代平台上正是如此。(CVE-2015-0242)

关联记录(4)

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

安全相关修复contrib/pgcrypto中的缓冲区越界

变更

修复contrib/pgcrypto中的缓冲区越界(Marko Tiikkaja、Noah Misch)

pgcrypto模块中内存大小跟踪的错误导致了栈缓冲区越界和对未初始化内存内容的不当依赖。缓冲区越界情况可能导致服务器崩溃,我们尚未排除导致权限提升攻击的可能性。(CVE-2015-0243)

关联记录(4)

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

安全相关修复出错后前端/后端协议可能失去同步的问题

变更

修复出错后前端/后端协议可能失去同步的问题(Heikki Linnakangas)

如果服务器在从客户端读取协议消息中途发生任何错误,它可能失去同步,错误地把消息数据的一部分解释为新的协议消息。能够在命令参数中提交恶意构造二进制数据的攻击者可能借此注入自己的 SQL 命令。语句超时和查询取消是触发此场景最可能的错误来源。尤其容易受影响的是既使用超时又将任意用户构造数据作为二进制查询参数提交的应用程序。禁用语句超时会降低但不能消除被利用的风险。感谢 Emil Lenngren 报告此问题。(CVE-2015-0244)

关联记录(4)

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

安全相关修复通过约束违反错误消息的信息泄露

变更

修复通过约束违反错误消息的信息泄露(Stephen Frost)

某些服务器错误消息会显示违反约束(如唯一约束)的列的值。如果用户对该表的所有列没有SELECT权限,这可能意味着暴露用户不应看到的值。我们调整了代码,使值仅在来自 SQL 命令本身或用户可以查询到时才显示。(CVE-2014-8161)

关联记录(4)

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

安全相关锁定 Windows 上回归测试的临时安装

变更

锁定 Windows 上回归测试的临时安装(Noah Misch)

使用 SSPI 认证,只允许启动测试套件的操作系统用户连接。这在 Windows 上关闭了此前已在其他平台上关闭的同一漏洞,即其他用户可能连接到测试 postmaster。(CVE-2014-0067)

关联记录(4)

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

其他改进处理名为“Norwegian (Bokmål)”的 Windows 区域

变更

处理名为“Norwegian (Bokmål)”的 Windows 区域(Heikki Linnakangas)

非 ASCII 区域名是有问题的,因为不清楚应该用什么编码表示它们。将这个麻烦的区域名映射为纯 ASCII 别名“Norwegian_Norway”。

关联记录(2)

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

BUG 修复避免在使用 ALTER DATABASE SET TABLESPACE 把数据库移到新表空间、随后不久又移回原表空间时可能出现的数据损坏

变更

避免在使用 ALTER DATABASE SET TABLESPACE 把数据库移到新表空间、随后不久又移回原表空间时可能出现的数据损坏(Tom Lane)

关联记录(3)

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

BUG 修复避免当事务内的 ANALYZE 被回滚时损坏表

变更

避免当事务内的 ANALYZE 被回滚时损坏表(Andres Freund、Tom Lane、Michael Paquier)

如果失败的事务此前删除了表上的最后一个索引、规则或触发器,该表会处于损坏状态:相关的 pg_class 标志本应设置却未被设置。

关联记录(3)

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

其他改进确保在 CREATE DATABASE 或 ALTER DATABASE SET TABLESPACE 期间正确复制不记录日志的表

变更

确保在 CREATE DATABASE 或 ALTER DATABASE SET TABLESPACE 期间正确复制不记录日志的表(Pavan Deolasee、Andres Freund)

关联记录(2)

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

BUG 修复修复对 CreateEventTrigStmt.eventname 的错误处理

变更

修复对 CreateEventTrigStmt.eventname 的错误处理(Petr Jelinek)

如果 CREATE EVENT TRIGGER 作为预备查询执行,或通过扩展查询协议执行,这可能导致错误行为。

BUG 修复修复 DROP 的依赖搜索,使其正确处理表的列在其所属表之前被递归访问的情况

变更

修复 DROP 的依赖搜索,使其正确处理表的列在其所属表之前被递归访问的情况(Petr Jelinek、Tom Lane)

目前已知这种情况只在扩展同时创建一种数据类型和使用该数据类型的表时出现。有问题的代码可能会拒绝 DROP EXTENSION,除非指定 CASCADE,而这本不应该是必需的。

关联记录(2)

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

BUG 修复修复 EvalPlanQual 处理中使用已释放内存的问题

变更

修复 EvalPlanQual 处理中使用已释放内存的问题(Tom Lane)

在READ COMMITTED模式下,锁定或更新最近更新过的行的查询可能因此缺陷崩溃。

关联记录(4)

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

BUG 修复避免 EvalPlanQual 处理中尝试获取元组锁时可能出现的死锁

变更

避免 EvalPlanQual 处理中尝试获取元组锁时可能出现的死锁(Álvaro Herrera, Mark Kirkwood)

关联记录(1)

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

BUG 修复修复当一个事务尝试获取FOR NO KEY EXCLUSIVE元组锁而多个其他事务当前持有FOR SHARE锁时未能等待的问题

变更

修复当一个事务尝试获取FOR NO KEY EXCLUSIVE元组锁而多个其他事务当前持有FOR SHARE锁时未能等待的问题(Álvaro Herrera)

关联记录(1)

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

BUG 修复修复在子表上使用部分索引时 SELECT FOR UPDATE 的规划问题

变更

修复在子表上使用部分索引时 SELECT FOR UPDATE 的规划问题(Kyotaro Horiguchi)

在 READ COMMITTED 模式下,SELECT FOR UPDATE 在重新检查最近更新的行以确认它是否仍满足查询的 WHERE 条件时,还必须重新检查部分索引的 WHERE 条件。如果索引属于继承子表,就会遗漏这一要求,因此有可能错误地返回已不再满足查询条件的行。

关联记录(3)

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

BUG 修复修复 SELECT FOR UPDATE 在极端情况下可能把同一行返回两次、并且可能漏掉其他行的 corner case

变更

修复 SELECT FOR UPDATE 在极端情况下可能把同一行返回两次、并且可能漏掉其他行的 corner case(Tom Lane)

在 READ COMMITTED 模式下,扫描继承树的 SELECT FOR UPDATE 可能错误地返回来自前一个子表的行,而不是本应从后一个子表返回的行。

关联记录(3)

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

性能改进改进EXPLAIN在大型范围表下的性能

变更

改进EXPLAIN在大型范围表下的性能(Tom Lane)

关联记录(1)

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

其他改进拒绝 FOREIGN KEY 声明的被引用列列表中出现重复的列名

变更

拒绝 FOREIGN KEY 声明的被引用列列表中出现重复的列名(David Rowley)

这一限制符合 SQL 标准。此前我们并未显式拒绝这种情况,但之后代码会以看起来很怪异的错误失败。

关联记录(3)

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

其他改进重新启用对 SELECT ... OFFSET -1 的报错

变更

重新启用对 SELECT ... OFFSET -1 的报错(Tom Lane)

负的偏移量值自 8.4 起就是错误,但 9.3 中新增的一项优化意外地把这种情况变成了无操作。现已恢复预期行为。

其他改进恢复域转换为 JSON 的原有行为

变更

恢复域转换为 JSON 的原有行为(Tom Lane)

此变更使基于 numeric 和 boolean 的域在转换为 JSON 时被视为其基础类型。在 9.3.5 和 9.2.9 之前就是这样工作的,但在修复一个相关问题时不慎改变了行为。

关联记录(1)

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

BUG 修复修复 json_agg(),使其结果中不再返回多余的尾部右括号

变更

修复 json_agg(),使其结果中不再返回多余的尾部右括号(Tom Lane)

BUG 修复修复 numeric 值求大整数次幂时的缺陷

变更

修复 numeric 值求大整数次幂时的缺陷(Tom Lane)

之前的代码可能得到错误答案,或者在意识到结果必然溢出之前消耗过多的时间和内存。

关联记录(3)

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

其他改进在 numeric_recv() 中,按照值的 dscale 字段截去会被隐藏的小数位

变更

在 numeric_recv() 中,按照值的 dscale 字段截去会被隐藏的小数位(Tom Lane)

numeric 值的显示标度(dscale)绝不应小于非零小数位的位数;但显然至少存在一个有缺陷的客户端应用,它发送的二进制 numeric 值违反了这一点。这会导致奇怪的行为,因为多余的数字位虽然不会被打印出来,却会被算术运算考虑在内。风险最小的修复方法似乎是在接收时把这类“隐藏的”数字位截去,使值确实与它打印出来的一致。

关联记录(3)

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

BUG 修复修复正则表达式最短优先匹配搜索不正确的问题

变更

修复正则表达式最短优先匹配搜索不正确的问题(Tom Lane)

当允许的迭代次数受到 ? 量词或边界表达式限制时,匹配常常会失败。

关联记录(1)

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

其他改进拒绝超出范围的数字时区规范

变更

拒绝超出范围的数字时区规范(Tom Lane)

超过 +/- 168 小时(一周)的简单数字时区规范此前会被接受,但随后可能在某些操作中导致空指针解引用崩溃。如此大的 UTC 偏移没有实际使用场景,因此予以拒绝。

关联记录(3)

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

BUG 修复修复 tsquery @> tsquery 操作符中的缺陷

变更

修复 tsquery @> tsquery 操作符中的缺陷(Heikki Linnakangas)

两个不同的词如果 CRC 相同,就会被认为匹配。此外,如果第二个操作数的词条比第一个多,就会被假定不包含于第一个;这是错误的,因为它可能包含重复词条。

关联记录(3)

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

其他改进增强 ispell 词典对有问题的词缀文件的防御

变更

增强 ispell 词典对有问题的词缀文件的防御(Tom Lane)

关联记录(3)

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

其他改进允许词典(thesaurus)包含超过 64K 个短语

变更

允许词典(thesaurus)包含超过 64K 个短语(David Boutin)

之前的代码在词典过大时会崩溃,因此这被视为一个可回移植的缺陷修复,而不是新特性。

关联记录(3)

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

BUG 修复修复xpath()中的命名空间处理

变更

修复xpath()中的命名空间处理(Ali Akbar)

此前,如果命名空间声明附在输入xml值的祖先元素上而非被返回的特定元素上,xpath()调用产生的xml值就不会包含命名空间声明。我们将祖先声明传播下来,使结果在孤立考虑时也是正确的。

关联记录(4)

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

其他改进确保整行变量向关注组合参数内列名的函数暴露预期的列名

变更

确保整行变量向关注组合参数内列名的函数暴露预期的列名(Tom Lane)

在某些上下文中,row_to_json(tab.*) 这类构造可能不会产生预期的列名。这个问题在 9.4 中已正确修复;在较旧的分支中,只是确保产生某个非空名称。(某些情况下,这个名称会是底层表的列名,而不是理论上应该可见的由查询赋予的别名。)

关联记录(1)

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

BUG 修复修复 FDW 查询中对系统列(特别是 tableoid)的错误处理

变更

修复 FDW 查询中对系统列(特别是 tableoid)的错误处理(Etsuro Fujita)

关联记录(1)

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

BUG 修复修复范围操作符选择率估计中的各种疏漏

变更

修复范围操作符选择率估计中的各种疏漏(Emre Hasegeli)

此补丁修复了极端情况下 “unexpected operator NNNN” 规划器错误,并改进了其他一些情况下的选择率估计。

关联记录(1)

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

其他改进当把 indexed_column = ANY (array) 用作索引限定条件会导致更差的计划时,避免这样做

变更

当把 indexed_column = ANY (array) 用作索引限定条件会导致更差的计划时,避免这样做(Andrew Gierth)

某些情况下,作用于非首个索引列的 = ANY 条件会被当作索引条件执行,尽管把它们用作简单的过滤条件会更好。

关联记录(1)

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

BUG 修复修复当接受组合类型参数的可内联 SQL 函数用于 LATERAL 子查询、且该组合类型参数是一个横向引用时,规划器报 “variable not found in subplan target list” 失败的问题

变更

修复当接受组合类型参数的可内联 SQL 函数用于 LATERAL 子查询、且该组合类型参数是一个横向引用时,规划器报 “variable not found in subplan target list” 失败的问题(Tom Lane)

BUG 修复修复嵌套 append 关系(例如 UNION ALL 子查询中的继承表)的规划器问题

变更

修复嵌套 append 关系(例如 UNION ALL 子查询中的继承表)的规划器问题(Tom Lane)

关联记录(3)

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

其他改进当 GiST 索引元组放不进一个页面时干净地报错,而不是陷入无限递归

变更

当 GiST 索引元组放不进一个页面时干净地报错,而不是陷入无限递归(Andrew Gierth)

关联记录(3)

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

其他改进把设有逐表 cost_limit 和/或 cost_delay 设置的表排除在自动清理的全局代价平衡规则之外

变更

把设有逐表 cost_limit 和/或 cost_delay 设置的表排除在自动清理的全局代价平衡规则之外(Álvaro Herrera)

先前的行为实质上忽略了这些逐表设置,这并非本意。现在,拥有这类设置的表将按照这些设置进行清理,独立于其他自动清理工作进程的状况。这可能导致比以前更重的总 I/O 负载,因此应当重新审视这类设置是否合理。

关联记录(3)

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

其他改进避免在自动清理名义上被关闭时仍然进行全面的自动清理

变更

避免在自动清理名义上被关闭时仍然进行全面的自动清理(Tom Lane)

即使自动清理名义上被关闭,我们仍会启动自动清理工作进程,去清理有 XID 回卷风险的表。然而,这样的工作进程随后会继续清理目标数据库中所有满足常规自动清理阈值的表。这往好里说是相当出乎意料,往坏里说会延误对回卷威胁的响应。现已修复:如果自动清理被关闭,工作进程只执行防回卷清理,不做任何其他工作。

关联记录(3)

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

其他改进在崩溃恢复期间,确保不记录日志的关系被重写为空并在恢复被视为完成之前同步到磁盘

变更

在崩溃恢复期间,确保不记录日志的关系被重写为空并在恢复被视为完成之前同步到磁盘(Abhijit Menon-Sen、Andres Freund)

这可以避免数据库崩溃恢复之后不记录日志的关系中残留垃圾数据的情形。

关联记录(2)

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

BUG 修复修复热备查询与重放整页镜像之间的竞态条件

变更

修复热备查询与重放整页镜像之间的竞态条件(Heikki Linnakangas)

这一失误可能导致热备中正在执行的查询出现瞬时错误。

关联记录(3)

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

BUG 修复修复若干恢复逻辑不当忽略 COMMIT/ABORT PREPARED WAL 记录的情况

变更

修复若干恢复逻辑不当忽略 COMMIT/ABORT PREPARED WAL 记录的情况(Heikki Linnakangas)

最值得注意的疏漏是 recovery_target_xid 无法用于在两阶段提交处停止。

关联记录(2)

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

BUG 修复防止在崩溃恢复完成时把最新的 WAL 文件再次归档

变更

防止在崩溃恢复完成时把最新的 WAL 文件再次归档(Fujii Masao)

关联记录(1)

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

其他改进避免为时间线历史文件创建不必要的 .ready 标记文件

变更

避免为时间线历史文件创建不必要的 .ready 标记文件(Fujii Masao)

关联记录(3)

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

BUG 修复修复当使用空的预备语句且 log_statement 设置为 mod 或 ddl 时可能出现的空指针解引用

变更

修复当使用空的预备语句且 log_statement 设置为 mod 或 ddl 时可能出现的空指针解引用(Fujii Masao)

关联记录(3)

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

其他改进将 “pgstat wait timeout” 警告消息改为 LOG 级别,并重新措辞使其更易理解

变更

将 “pgstat wait timeout” 警告消息改为 LOG 级别,并重新措辞使其更易理解(Tom Lane)

这条消息最初被认为基本属于不可能发生的情况,但它在我们较慢的 buildfarm 成员上出现得足够频繁,成了干扰。现已将其降为 LOG 级别,并在措辞上多下了一点功夫:现在它的内容为 “using stale statistics instead of current ones because stats collector is not responding”。

关联记录(4)

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

BUG 修复修复 postmaster 的动态后台工作进程列表可能损坏的问题

变更

修复 postmaster 的动态后台工作进程列表可能损坏的问题(Andres Freund)

BUG 修复修复 SPARC 自旋锁实现,确保当 CPU 以非 TSO 一致性模式运行时(如某些非 Solaris 内核所做的那样)其正确性

变更

修复 SPARC 自旋锁实现,确保当 CPU 以非 TSO 一致性模式运行时(如某些非 Solaris 内核所做的那样)其正确性(Andres Freund)

关联记录(3)

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

其他改进当 macOS 的setlocale()在 postmaster 内启动多余的线程时发出警告

变更

当 macOS 的setlocale()在 postmaster 内启动多余的线程时发出警告(Noah Misch)

关联记录(3)

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

BUG 修复修复 PQconnectdbParams() 中重复 dbname 参数的处理

变更

修复 PQconnectdbParams() 中重复 dbname 参数的处理(Alex Shulgin)

如果第一个 dbname 出现处包含要展开的连接串或 URI,就会出现意外行为。

关联记录(3)

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

其他改进确保 libpq 在遇到意外的套接字 EOF 时报告合适的错误消息

变更

确保 libpq 在遇到意外的套接字 EOF 时报告合适的错误消息(Marko Tiikkaja、Tom Lane)

取决于内核行为,当服务器意外关闭套接字时,libpq 可能返回空的错误字符串而不是有用的信息。

关联记录(3)

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

其他改进在 PQreset() 期间清除任何旧的错误消息

变更

在 PQreset() 期间清除任何旧的错误消息(Heikki Linnakangas)

如果反复调用 PQreset() 而连接始终无法重建,失败连接尝试的错误消息会在 PGconn 的错误字符串中不断累积。

关联记录(3)

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

其他改进正确处理 libpq 解析连接选项期间的内存不足情况

变更

正确处理 libpq 解析连接选项期间的内存不足情况(Alex Shulgin、Heikki Linnakangas)

关联记录(3)

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

BUG 修复修复 ecpg 版 ParseDateTime() 中的数组越界

变更

修复 ecpg 版 ParseDateTime() 中的数组越界(Michael Paquier)

关联记录(3)

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

其他改进在 initdb 中,当指定的密码文件为空时给出更清晰的错误消息

变更

在 initdb 中,当指定的密码文件为空时给出更清晰的错误消息(Mats Erik Andersson)

关联记录(3)

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

BUG 修复修复 psql 的 \s 命令,使其与 libedit 良好配合,并新增分页器支持

变更

修复 psql 的 \s 命令,使其与 libedit 良好配合,并新增分页器支持(Stepan Rutz、Tom Lane)

使用 libedit 而非 readline 时,\s 会以一种相当难读的编码格式打印命令历史,而且在较新的 libedit 版本上可能完全失败。现已改为由我们自己打印历史而不是让库来做。一个令人愉快的副作用是,在合适的时候会使用分页器。

此补丁还修复了一个在使用 libedit 保存命令历史时换行编码不一致的缺陷。旧版 psql 写出的多行历史条目在此补丁后可以干净地读取,但反过来未必可行,具体取决于所涉及的 libedit 版本。

关联记录(3)

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

其他改进改进 psql 特殊变量解析的一致性

变更

改进 psql 特殊变量解析的一致性(Tom Lane)

允许 ECHO_HIDDEN 和 ON_ERROR_ROLLBACK 使用 on 和 off 的变体拼写(如 1/0)。对 COMP_KEYWORD_CASE、ECHO、ECHO_HIDDEN、HISTCONTROL、ON_ERROR_ROLLBACK 和 VERBOSITY 的无法识别的值发出警告。对所有这些变量的所有值进行不区分大小写的识别;此前大小写敏感与不敏感的行为混杂在一起。

关联记录(4)

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

其他改进让 psql 的 \watch 命令按照 \pset null 的设置显示空值

变更

让 psql 的 \watch 命令按照 \pset null 的设置显示空值(Fujii Masao)

BUG 修复修复 psql 扩展模式显示在使用 border = 3 且 linestyle = ascii 或 unicode 时的一致性问题

变更

修复 psql 扩展模式显示在使用 border = 3 且 linestyle = ascii 或 unicode 时的一致性问题(Stephen Frost)

关联记录(3)

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

BUG 修复修复pg_dump处理事件触发器注释时失败的问题

变更

修复pg_dump处理事件触发器注释时失败的问题(Tom Lane)

关联记录(1)

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

其他改进允许并行pg_dump使用--serializable-deferrable

变更

允许并行pg_dump使用--serializable-deferrable(Kevin Grittner)

关联记录(1)

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

性能改进改进当数据库中大量存在同一对对象之间的多条依赖路径时 pg_dump 的性能

变更

改进当数据库中大量存在同一对对象之间的多条依赖路径时 pg_dump 的性能(Tom Lane)

关联记录(2)

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

BUG 修复修复 pg_dumpall,恢复其从 8.1 之前服务器转储的能力

变更

修复 pg_dumpall,恢复其从 8.1 之前服务器转储的能力(Gilles Darold)

关联记录(1)

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

BUG 修复修复并行恢复纯模式转储时可能出现的死锁

变更

修复并行恢复纯模式转储时可能出现的死锁(Robert Haas、Tom Lane)

关联记录(3)

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

BUG 修复修复 pg_dump --binary-upgrade 在零列组合类型上的核心转储

变更

修复 pg_dump --binary-upgrade 在零列组合类型上的核心转储(Rushabh Lathia)

关联记录(3)

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

BUG 修复修复 pg_upgrade 期间未对非默认表空间中的表执行 fsync 的错误

变更

修复 pg_upgrade 期间未对非默认表空间中的表执行 fsync 的错误(Abhijit Menon-Sen、Andres Freund)

如果操作系统崩溃再加上一点坏运气,这可能导致升级期间的数据丢失。

其他改进在 pg_upgrade 中,处理新集簇为以前没有 TOAST 表的表创建 TOAST 表的情况

变更

在 pg_upgrade 中,处理新集簇为以前没有 TOAST 表的表创建 TOAST 表的情况(Bruce Momjian)

此前这可能因 OID 冲突而导致失败。

其他改进在 pg_upgrade 中,不再尝试为旧集簇设置 autovacuum_multixact_freeze_max_age

变更

在 pg_upgrade 中,不再尝试为旧集簇设置 autovacuum_multixact_freeze_max_age(Bruce Momjian)

这可能失败,因为并非所有 9.3.X 版本都有该参数。幸运的是,我们实际上完全不需要设置它。

其他改进在 pg_upgrade 中,保留事务 ID 的纪元(epoch)

变更

在 pg_upgrade 中,保留事务 ID 的纪元(epoch)(Bruce Momjian)

这一疏忽并不影响 PostgreSQL 本身,但可能干扰某些外部复制工具。

其他改进防止由pg_basebackup -x/-X创建的 WAL 文件在备库提升后被再次归档

变更

防止由pg_basebackup -x/-X创建的 WAL 文件在备库提升后被再次归档(Andres Freund)

关联记录(3)

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

BUG 修复修复 pg_receivexlog 中的内存泄漏

变更

修复 pg_receivexlog 中的内存泄漏(Fujii Masao)

BUG 修复修复 pg_receivexlog 详细消息被意外抑制的问题

变更

修复 pg_receivexlog 详细消息被意外抑制的问题(Fujii Masao)

BUG 修复修复 contrib/auto_explain 在执行 EXPLAIN ANALYZE 时未能打印逐节点计时信息的问题

变更

修复 contrib/auto_explain 在执行 EXPLAIN ANALYZE 时未能打印逐节点计时信息的问题(Tom Lane)

关联记录(1)

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

BUG 修复修复 contrib/citext 的从非打包升级脚本

变更

修复 contrib/citext 的从非打包升级脚本(Tom Lane)

关联记录(2)

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

BUG 修复避免 contrib/hstore 的 hstore_to_json() 中的整数溢出和缓冲区越界

变更

避免 contrib/hstore 的 hstore_to_json() 中的整数溢出和缓冲区越界(Heikki Linnakangas)

BUG 修复修复 hstore_to_json_loose() 中的数字识别,使 JSON 数字和字符串得以正确区分

变更

修复 hstore_to_json_loose() 中的数字识别,使 JSON 数字和字符串得以正确区分(Andrew Dunstan)

BUG 修复修复 contrib/pageinspect 的 get_raw_page() 中的块号检查

变更

修复 contrib/pageinspect 的 get_raw_page() 中的块号检查(Tom Lane)

错误的检查逻辑可能阻止访问非主关系分支中的某些页面。

关联记录(3)

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

BUG 修复修复 contrib/pgcrypto 的 pgp_sym_decrypt(),使其在消息长度比 2 的幂小 6 时不再失败

变更

修复 contrib/pgcrypto 的 pgp_sym_decrypt(),使其在消息长度比 2 的幂小 6 时不再失败(Marko Tiikkaja)

关联记录(3)

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

BUG 修复修复 contrib/pg_test_fsync 中的文件描述符泄漏

变更

修复 contrib/pg_test_fsync 中的文件描述符泄漏(Jeff Janes)

这可能导致 Windows 上无法删除临时文件。

关联记录(2)

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

其他改进安全地处理 contrib/tablefunc 的 connectby() 中的意外查询结果,尤其是 NULL

变更

安全地处理 contrib/tablefunc 的 connectby() 中的意外查询结果,尤其是 NULL(Michael Paquier)

此前 connectby() 遇到 NULL 键值时会崩溃。现在它会打印该行但不再进一步递归。

关联记录(4)

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

BUG 修复避免 contrib/xml2 的 xslt_process() 中可能出现的崩溃

变更

避免 contrib/xml2 的 xslt_process() 中可能出现的崩溃(Mark Simonetti)

libxslt 似乎对资源释放顺序存在未记载的依赖;重新排列我们的调用以避免崩溃。

关联记录(3)

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

BUG 修复为一些 contrib I/O 函数标记正确的易变性属性

变更

为一些 contrib I/O 函数标记正确的易变性属性(Tom Lane)

先前过于保守的标记在正常使用中无关紧要,但可能导致优化问题或拒绝有效的索引表达式定义。由于影响不大,我们只是调整了扩展模块脚本中的函数定义,未更改版本号。

关联记录(2)

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

其他改进大量清理 Coverity 静态代码分析器的警告

变更

大量清理 Coverity 静态代码分析器的警告(Andres Freund、Tatsuo Ishii、Marko Kreen、Tom Lane、Michael Paquier)

这些变更大多只是表面性的,但在某些情况下修复了极端情况的缺陷,例如内存不足失败后崩溃而不是正确报告错误。据信它们都不构成安全问题。

关联记录(4)

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

BUG 修复修复 EXEC_BACKEND 构建(例如 Windows)中后台工作进程的设置

变更

修复 EXEC_BACKEND 构建(例如 Windows)中后台工作进程的设置(Robert Haas)

其他改进在构建期间检测不兼容的 OpenLDAP 版本

变更

在构建期间检测不兼容的 OpenLDAP 版本(Noah Misch)

对于 2.4.24 到 2.4.31(含)之间的 OpenLDAP 版本,PostgreSQL 后端进程可能在退出时崩溃。现在会根据编译时的 OpenLDAP 版本号在 configure 期间发出警告,并在 contrib/dblink 回归测试中测试该崩溃场景。

关联记录(3)

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

其他改进在非 MSVC 的 Windows 构建中,确保安装的 libpq.dll 带有执行权限

变更

在非 MSVC 的 Windows 构建中,确保安装的 libpq.dll 带有执行权限(Noah Misch)

关联记录(3)

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

其他改进使 pg_regress 成功退出时删除其创建的任何临时安装

变更

使 pg_regress 成功退出时删除其创建的任何临时安装(Tom Lane)

这使 make check-world 期间的磁盘空间用量大幅减少,因为该序列会创建大量临时安装。

关联记录(4)

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

其他改进支持随时间改变 UTC 偏移的时区缩写

变更

支持随时间改变 UTC 偏移的时区缩写(Tom Lane)

此前,PostgreSQL 假定时区缩写(如 EST)关联的 UTC 偏移在任何特定区域设置的用法中永不改变。然而这一假设在现实世界中并不成立,因此引入了让区域缩写表示有时会变化的 UTC 偏移的能力。更新了时区缩写定义文件,在自 1970 年以来缩写的 UTC 偏移发生过变化的时区区域设置中使用此功能(依据 IANA 时区数据库)。在此类时区中,PostgreSQL 现在会根据给定日期为缩写关联正确的 UTC 偏移。

关联记录(3)

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

其他改进更新时区缩写列表

变更

更新时区缩写列表(Tom Lane)

把 CST(中国标准时间)加入列表。移除 ADT 作为“阿拉伯夏令时”的引用——这个缩写自 2007 年起已不再使用;因此,声称它与“大西洋夏令时”冲突似乎没有特别的帮助。修正 CKT(库克群岛)、FJT 和 FJST(斐济)完全错误的 GMT 偏移;此前我们甚至把它们放到了日期变更线的错误一侧。

关联记录(3)

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

其他改进把时区数据文件更新为 tzdata 版本 2015a。

变更

把时区数据文件更新为 tzdata 版本 2015a。

IANA 时区数据库为所有澳大利亚时区采用了 AxST/AxDT 形式的缩写,以反映他们认为的当地当前多数用法。这些名称与其他地方的用法不冲突(唯一例外是表示 Acre 夏令时的 ACST,该用法自 1994 年起已废弃)。因此,我们把这些名称采纳进“默认”时区缩写集。“澳大利亚”缩写集现在只包含 CST、EAST、EST、SAST、SAT 和 WST,这些被认为主要是历史用法。注意,在“默认”缩写集中,SAST 也已改为南非标准时间。

此外,新增时区缩写 SRET(Asia/Srednekolymsk)和 XJT(Asia/Urumqi),并对西萨摩亚使用 WSST/WSDT。同时,智利、墨西哥、特克斯和凯科斯群岛(America/Grand_Turk)以及斐济的夏令时法规有变更。还为巴布亚新几内亚部分地区新增了时区 Pacific/Bougainville。另外还有大量针对历史(1970 年以前)时区数据的修正。

关联记录(3)

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

这份对比如何生成?

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

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

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

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

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