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

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

文档版本比较

POSTGRESQL · VERSION COMPARE

PostgreSQL 10.5 发布变化

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

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

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

完整发布变化

10.5

2018-08-09

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

10.5stable支持截止 2022-11-10

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

修复连接尝试之间未能完全重置 libpq 状态的问题

10.5已记录修复
CVE-2018-10925

修复通过并非简单 SELECT * FROM ... 的视图执行 INSERT ... ON CONFLICT UPDATE 的问题

10.5已记录修复

PostgreSQL 10.5

迁移与兼容性

对于运行 10.X 的用户,不需要执行导出/恢复。

但是,如果是从早于 10.4 的版本升级,请参见第 E.20 节。

安全修复连接尝试之间未能完全重置 libpq 状态的问题

变更

修复连接尝试之间未能完全重置 libpq 状态的问题(Tom Lane)

dblink 或 postgres_fdw 的无特权用户可以绕过用于防止使用服务器端凭据的检查,例如使用运行服务器的操作系统用户所拥有的 ~/.pgpass 文件。允许在本地连接上使用 peer 认证的服务器尤其容易受到影响。其他攻击也有可能发生,例如向 postgres_fdw 会话注入 SQL。以这种方式攻击 postgres_fdw 需要能够创建带有特定连接参数的外部服务器对象,但任何能够访问 dblink 的用户都可以利用此问题。一般来说,能够为使用 libpq 的应用选择连接参数的攻击者就可能造成危害,不过其他可能的攻击场景比较难以想到。感谢 Andrew Krasichkov 报告此问题。(CVE-2018-10915)

关联记录 (4)
安全修复通过并非简单 SELECT * FROM ... 的视图执行 INSERT ... ON CONFLICT UPDATE 的问题

变更

修复通过并非简单 SELECT * FROM ... 的视图执行 INSERT ... ON CONFLICT UPDATE 的问题(Dean Rasheed,Amit Langote)

如果可更新视图的 SELECT 列表与底层表的列不一一对应,对该视图的错误展开可能导致崩溃或 “attribute ... has the wrong type” 错误。此外,如果攻击用户具有该表某些其他列的 INSERT 和 UPDATE 权限,就可以利用此缺陷更新其没有 UPDATE 权限的列。任何用户也都可以利用此缺陷泄露服务器内存。(CVE-2018-10925)

关联记录 (2)
改进确保及时处理对“固定”系统目录的 relfrozenxid 和 relminmxid 值的更新

变更

确保及时处理对“固定”系统目录的 relfrozenxid 和 relminmxid 值的更新(Andres Freund)

过于乐观的缓存规则可能使其他会话无法看到这些更新,从而导致虚假的错误或数据损坏。对于 pg_authid 等共享目录,问题严重得多,因为过期的缓存数据不仅会影响现有会话,还可能延续到新会话中。

关联记录 (4)
问题修复修复刚提升的备库在完成恢复后的第一个检查点之前崩溃的情况

变更

修复刚提升的备库在完成恢复后的第一个检查点之前崩溃的情况(Michael Paquier,Kyotaro Horiguchi,Pavan Deolasee,Álvaro Herrera)

这曾导致服务器在后续 WAL 重放期间认为自己尚未达到数据库一致状态,无法重新启动。

关联记录 (4)
改进避免回收全零 B-树页面时生成错误的 WAL 记录

变更

避免回收全零 B-树页面时生成错误的 WAL 记录(Amit Kapila)

已观察到此错误会导致断言失败,也可能使热备服务器上的查询被不必要地取消。

关联记录 (4)
改进WAL 重放期间,防范损坏记录的长度超过 1GB 的情况

变更

WAL 重放期间,防范损坏记录的长度超过 1GB 的情况(Michael Paquier)

将此类情况视为数据损坏。以前,代码会尝试分配空间并出现无法继续的错误,使恢复无法进行。

关联记录 (2)
改进结束恢复时,尽可能推迟写入时间线历史文件

变更

结束恢复时,尽可能推迟写入时间线历史文件(Heikki Linnakangas)

这避免了某些恢复清理期间的失败(例如两阶段状态文件问题)导致磁盘上的时间线状态不一致的情况。

关联记录 (2)
性能提高删除大量关系的事务的 WAL 重放性能

变更

提高删除大量关系的事务的 WAL 重放性能(Fujii Masao)

此更改减少了扫描共享缓冲区的次数,因此在共享缓冲区设置较大时收益最大。

关联记录 (4)
性能提高备库 WAL 重放中释放锁的性能

变更

提高备库 WAL 重放中释放锁的性能(Thomas Munro)

关联记录 (4)
改进使逻辑 WAL 发送进程正确报告流式传输状态

变更

使逻辑 WAL 发送进程正确报告流式传输状态(Simon Riggs,Sawada Masahiko)

以前,代码会错误判断是否已追上上游服务器。

关联记录 (3)
改进确保逻辑复制订阅者执行数据类型输入函数时提供快照

变更

确保逻辑复制订阅者执行数据类型输入函数时提供快照(Minh-Quan Tran,Álvaro Herrera)

这一遗漏会在某些情况下导致失败,例如域约束使用 SQL 语言函数时。

问题修复修复逻辑解码期间快照处理中的缺陷,这些缺陷在罕见情况下会导致错误的解码结果

变更

修复逻辑解码期间快照处理中的缺陷,这些缺陷在罕见情况下会导致错误的解码结果(Arseny Sher,Álvaro Herrera)

关联记录 (3)
改进为逻辑复制表同步工作进程添加子事务处理

变更

为逻辑复制表同步工作进程添加子事务处理(Amit Khandekar,Robert Haas)

以前,如果子事务修改了正在同步的表后中止,表同步就可能出现错误行为。

改进确保索引创建中途失败后,正确重建表的缓存索引列表

变更

确保索引创建中途失败后,正确重建表的缓存索引列表(Peter Geoghegan)

以前,失败索引的 OID 可能仍留在列表中,导致同一会话中后续出现问题。

关联记录 (4)
问题修复修复 GIN 索引中对空的未压缩倒排列表页面的不正确处理

变更

修复 GIN 索引中对空的未压缩倒排列表页面的不正确处理(Sivasubramanian Ramasubramanian,Alexander Korotkov)

这可能在通过 pg_upgrade 升级 9.4 之前的 GIN 索引后导致断言失败(9.4 及后续版本不会创建此类页面)。

关联记录 (3)
改进填充未命名 POSIX 信号量数组,以减少缓存行共享

变更

填充未命名 POSIX 信号量数组,以减少缓存行共享(Thomas Munro)

这减少了多 CPU 系统上的争用,修复了 Linux 和 FreeBSD 上相对于以前版本的性能回归。

改进确保执行并行索引扫描的进程响应信号

变更

确保执行并行索引扫描的进程响应信号(Amit Kapila)

以前,并行工作进程可能卡在等待索引页锁的状态,无法注意到中止查询的请求。

改进确保 VACUUM 在 B-树页面删除循环中响应信号

变更

确保 VACUUM 在 B-树页面删除循环中响应信号(Andres Freund)

损坏的 B-树索引可能在这里导致无限循环,以前只能通过强制崩溃才能中断。

关联记录 (3)
问题修复修复 inner_unique 优化引入的哈希连接代价估算错误

变更

修复 inner_unique 优化引入的哈希连接代价估算错误(David Rowley)

这可能在适用该优化的情况下导致选择低效计划。

问题修复修复涉及复合类型列的等价类的不正确优化

变更

修复涉及复合类型列的等价类的不正确优化(Tom Lane)

这曾导致无法识别复合列上的索引能够提供该列归并连接所需的排序顺序。

关联记录 (4)
问题修复修复规划器,避免某些包含返回集合函数的查询发生 “ORDER/GROUP BY expression not found in targetlist” 错误

变更

修复规划器,避免某些包含返回集合函数的查询发生 “ORDER/GROUP BY expression not found in targetlist” 错误(Tom Lane)

关联记录 (1)
问题修复修复对数组等数据类型使用多态 B-树操作符类的分区键的处理

变更

修复对数组等数据类型使用多态 B-树操作符类的分区键的处理(Amit Langote,Álvaro Herrera)

问题修复修复 SQL 标准的 FETCH FIRST 语法,使其按照标准预期允许参数($n)

变更

修复 SQL 标准的 FETCH FIRST 语法,使其按照标准预期允许参数($n)(Andrew Gierth)

关联记录 (4)
改进移除未文档化的禁止重复分区键列的限制

变更

移除未文档化的禁止重复分区键列的限制(Yugo Nagata)

改进禁止临时表成为非临时表的分区

变更

禁止临时表成为非临时表的分区(Amit Langote,Michael Paquier)

虽然以前允许这种情况,但其运行并不可靠。

问题修复修复 EXPLAIN 对并行工作进程资源用量的统计,尤其是缓冲区访问

变更

修复 EXPLAIN 对并行工作进程资源用量的统计,尤其是缓冲区访问(Amit Kapila,Robert Haas)

关联记录 (1)
问题修复修复 SHOW ALL,使其向 pg_read_all_settings 的成员角色显示所有设置,并允许这些角色在 pg_settings 视图中看到源文件名和行号

变更

修复 SHOW ALL,使其向 pg_read_all_settings 的成员角色显示所有设置,并允许这些角色在 pg_settings 视图中看到源文件名和行号(Laurenz Albe,Álvaro Herrera)

问题修复修复 getObjectDescription 和 getObjectIdentity 输出中某些对象名未加模式限定的问题

变更

修复 getObjectDescription 和 getObjectIdentity 输出中某些对象名未加模式限定的问题(Kyotaro Horiguchi,Tom Lane)

排序规则、转换、文本检索对象、发布关系和扩展统计对象的名称,未在应当使用模式限定时加上限定。

问题修复修复 CREATE AGGREGATE 的类型检查,使并行支持函数能够附加到可变参数聚合

变更

修复 CREATE AGGREGATE 的类型检查,使并行支持函数能够附加到可变参数聚合(Alexey Bashtanov)

关联记录 (1)
改进将 COPY FROM 的当前行号计数器从 32 位扩为 64 位

变更

将 COPY FROM 的当前行号计数器从 32 位扩为 64 位(David Rowley)

这避免了输入超过 4G 行时的两个问题:COPY FROM WITH HEADER 会每隔 4G 行丢弃一行,而不只是第一行;错误报告也可能显示不正确的行号。

关联记录 (4)
改进允许在单用户模式下删除复制槽

变更

允许在单用户模式下删除复制槽(Álvaro Herrera)

这种用法在 10.0 版中被意外破坏。

问题修复修复 variance(int4) 及相关聚合在并行聚合模式下运行时结果不正确的问题

变更

修复 variance(int4) 及相关聚合在并行聚合模式下运行时结果不正确的问题(David Rowley)

改进正确处理 xmltable() 列表达式中的 TEXT 和 CDATA 节点

变更

正确处理 xmltable() 列表达式中的 TEXT 和 CDATA 节点(Markus Winand)

改进处理 OpenSSL 的 RAND_bytes() 函数可能发生的失败

变更

处理 OpenSSL 的 RAND_bytes() 函数可能发生的失败(Dean Rasheed,Michael Paquier)

在罕见情况下,这一疏漏可能导致只能通过重启 postmaster 解决的 “could not generate random cancel key” 失败。

问题修复修复 libpq 对某些指定了 hostaddr 的情况的处理

变更

修复 libpq 对某些指定了 hostaddr 的情况的处理(Hari Babu,Tom Lane,Robert Haas)

PQhost() 在某些情况下会给出误导性或不正确的结果。现在,它统一遵循以下规则:如果指定了主机名,则返回主机名;如果仅指定主机地址,则返回主机地址;如果两个参数都省略,则返回默认主机名(通常为 /tmp 或 localhost)。

此外,验证 SSL 证书时,可能使用错误的值与服务器名比较。

此外,可能使用错误的值与 ~/.pgpass 中的主机名字段比较。现在,如果指定了主机名,则用主机名比较;如果仅指定主机地址,则用主机地址比较;如果两个参数都省略,则用 localhost 比较。

此外,对于无法解析的 hostaddr 值,以前会报告不正确的错误消息。

此外,当 host、hostaddr 或 port 参数包含逗号分隔的列表时,libpq 现在会更谨慎地将列表中的空元素视为选择默认行为。

改进为 ecpg 的 pgtypes 库添加字符串释放函数,以避免 Windows 上跨模块内存管理的问题

变更

为 ecpg 的 pgtypes 库添加字符串释放函数,以避免 Windows 上跨模块内存管理的问题(Takayuki Tsunakawa)

在 Windows 上,如果对某块内存调用 free 的 DLL 与调用 malloc 分配它的 DLL 不同,就可能崩溃。pgtypes 库有时返回预期由调用者释放的字符串,使这条规则无法遵循。现在添加简单包装 free 的 PGTYPESchar_free() 函数,使应用能够遵循这条规则。

关联记录 (4)
问题修复修复 ecpg 在 Windows 以及其他对 strtoll/strtoull 使用非标准声明或完全不声明的平台上对 long long 变量的支持

变更

修复 ecpg 在 Windows 以及其他对 strtoll/strtoull 使用非标准声明或完全不声明的平台上对 long long 变量的支持(Dang Minh Huong,Tom Lane)

关联记录 (4)
问题修复修复规则变更导致会话内语句语义变化时,PL/pgSQL 对 SQL 语句类型的错误识别

变更

修复规则变更导致会话内语句语义变化时,PL/pgSQL 对 SQL 语句类型的错误识别(Tom Lane)

此错误会导致断言失败,或在罕见情况下未按预期实施 INTO STRICT 选项。

关联记录 (4)
问题修复修复客户端程序的密码提示,使 Windows 上的 stdin 不是终端时也能正确禁用回显

变更

修复客户端程序的密码提示,使 Windows 上的 stdin 不是终端时也能正确禁用回显(Matthew Stickney)

关联记录 (4)
问题修复进一步修复转储中列表值 GUC 变量的值的引号处理错误

变更

进一步修复转储中列表值 GUC 变量的值的引号处理错误(Tom Lane)

此前针对 pg_dump 输出中 search_path 和其他列表值变量引号处理的修复,在列表元素为空字符串时表现不正确,还存在截断长文件路径的风险。

关联记录 (4)
问题修复修复 pg_dump 未能转储约束索引的 REPLICA IDENTITY 属性的问题

变更

修复 pg_dump 未能转储约束索引的 REPLICA IDENTITY 属性的问题(Tom Lane)

手动创建的唯一索引得到了正确标记,但通过声明 UNIQUE 或 PRIMARY KEY 约束创建的索引没有。

关联记录 (3)
改进使 pg_upgrade 检查旧服务器是否正常关闭

变更

使 pg_upgrade 检查旧服务器是否正常关闭(Bruce Momjian)

以前的检查可能被 immediate 模式关闭所蒙蔽。

关联记录 (4)
问题修复修复 contrib/hstore_plperl,使其解引用 Perl 标量引用,并在预期 hash 引用却未找到时不再崩溃

变更

修复 contrib/hstore_plperl,使其解引用 Perl 标量引用,并在预期 hash 引用却未找到时不再崩溃(Tom Lane)

关联记录 (2)
问题修复修复输入数组为空时 contrib/ltree 的 lca() 函数发生的崩溃

变更

修复输入数组为空时 contrib/ltree 的 lca() 函数发生的崩溃(Pierre Ducroquet)

关联记录 (4)
问题修复修复可能报告不正确错误码的各种错误处理代码路径

变更

修复可能报告不正确错误码的各种错误处理代码路径(Michael Paquier,Tom Lane,Magnus Hagander)

关联记录 (4)
改进重新安排 makefile,确保程序链接到刚构建的库(如 libpq.so),而非可能存在于系统库目录中的库

变更

重新安排 makefile,确保程序链接到刚构建的库(如 libpq.so),而非可能存在于系统库目录中的库(Tom Lane)

这避免了在提供旧版 PostgreSQL 库的平台上构建时出现问题。

关联记录 (4)
改进将时区数据文件更新到 tzdata 2018e 版,以反映朝鲜的夏令时法规变更,并修正捷克斯洛伐克的历史数据。

变更

将时区数据文件更新到 tzdata 2018e 版,以反映朝鲜的夏令时法规变更,并修正捷克斯洛伐克的历史数据。

此更新重新定义了爱尔兰以及纳米比亚和捷克斯洛伐克部分历史年份中的“夏令时”。这些地区在法律上于夏季采用标准时间,冬季采用夏令时,因此夏令时偏移量比标准时间慢一小时,而非快一小时。这既不影响实际 UTC 偏移量,也不影响使用的时区缩写;唯一已知的影响是,在这些情况下,pg_timezone_names 视图中的 is_dst 列现在会在冬季为真、夏季为假。

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

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

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

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