文档版本比较
POSTGRESQL · VERSION COMPARE
PostgreSQL 10.7 发布变化
此版本的完整功能、修复与兼容性说明,以及其他版本的关联记录。
包括起始版本之后至目标版本的变化。大版本号表示该分支的首个版本。
从数据库输出识别起始版本
完整发布变化
10.7
2019-02-14
10.7stable支持截止 2022-11-10
PostgreSQL 10.7
迁移与兼容性
对于运行 10.X 的用户,不需要执行导出/恢复。
但是,如果是从早于 10.6 的版本升级,请参见第 E.18 节。
问题修复默认在 fsync() 失败后触发 panic,而不重试,以避免可能的数据损坏
变更
默认在 fsync() 失败后触发 panic,而不重试,以避免可能的数据损坏(Craig Ringer,Thomas Munro)
某些常见操作系统在无法写出内核数据缓冲区时会丢弃它们,并将其报告为 fsync() 失败。如果重新发出 fsync() 请求,它会成功,但实际上数据已丢失,因此继续运行有数据库损坏的风险。改为触发 panic 后,我们可以从 WAL 重放;在这种情况下,WAL 可能包含数据仅存的副本。虽然这种做法显然不够理想且效率低下,但替代方案很少,所幸这种情况极少发生。
为控制此行为,添加了新的服务器参数data_sync_retry;如果确信内核不会在此类情况下丢弃脏数据缓冲区,可以将 data_sync_retry 设置为 on,恢复以前的行为。
改进仅在各大版本分支的文档中包含该分支的发布说明,而非在该分支及所有后续分支中重复包含
变更
仅在各大版本分支的文档中包含该分支的发布说明,而非在该分支及所有后续分支中重复包含(Tom Lane)
此前政策造成的重复内容已难以控制。我们计划在项目网站上提供完整的发布说明归档,但不在每个发行版中重复包含。
改进确保分区表的 NOT NULL 约束在其分区中得到遵循
变更
确保分区表的 NOT NULL 约束在其分区中得到遵循(Álvaro Herrera,Amit Langote)
关联记录 (1)
改进分离分区时使用安全的表锁级别
变更
分离分区时使用安全的表锁级别(Álvaro Herrera)
以前的锁级别太弱,可能允许并发对表执行 DDL,产生不良后果。
关联记录 (1)
问题修复修复将 ON COMMIT DROP 和 ON COMMIT DELETE ROWS 应用于分区表以及具有继承子表的表时出现的问题
变更
修复将 ON COMMIT DROP 和 ON COMMIT DELETE ROWS 应用于分区表以及具有继承子表的表时出现的问题(Michael Paquier)
改进禁止对分区表执行 COPY FREEZE
变更
禁止对分区表执行 COPY FREEZE(David Rowley)
最终应使这种用法能够工作,但所需补丁可能过于复杂,不适合冒险回补到旧版本。
关联记录 (1)
问题修复避免获取多个缓冲区锁时可能发生的死锁
变更
避免获取多个缓冲区锁时可能发生的死锁(Nishant Fnu)
问题修复避免 GIN 清理与并发索引插入之间的死锁
变更
避免 GIN 清理与并发索引插入之间的死锁(Alexander Korotkov,Andrey Borodin,Peter Geoghegan)
此更改部分撤回了版本 10.0 引入的一项性能改进,该改进曾尝试减少删除 GIN 倒排树页面时锁定的索引页数量。现在发现这会导致死锁,因此在进一步分析之前将其移除。
关联记录 (1)
问题修复避免热备查询与 GIN 索引页面删除重放之间的死锁
变更
避免热备查询与 GIN 索引页面删除重放之间的死锁(Alexander Korotkov)
问题修复修复使用索引表达式或谓词时逻辑复制中可能发生的崩溃
变更
修复使用索引表达式或谓词时逻辑复制中可能发生的崩溃(Peter Eisentraut)
改进避免在表重写期间对 TOAST 数据进行无用且代价高昂的逻辑解码
变更
避免在表重写期间对 TOAST 数据进行无用且代价高昂的逻辑解码(Tomas Vondra)
问题修复修复启用同步复制时停止部分 WAL 发送进程的逻辑
变更
修复启用同步复制时停止部分 WAL 发送进程的逻辑(Paul Guo,Michael Paquier)
改进避免在元组删除 WAL 记录中写入不正确的复制标识字段
变更
避免在元组删除 WAL 记录中写入不正确的复制标识字段(Stas Kelvich)
改进防止向视图或外部表执行 COPY 时不正确地使用跳过 WAL 的优化
变更
防止向视图或外部表执行 COPY 时不正确地使用跳过 WAL 的优化(Amit Langote,Michael Paquier)
改进让归档进程在选择下一个要归档的文件时,优先选择 WAL 历史文件,而非 WAL 数据文件
变更
让归档进程在选择下一个要归档的文件时,优先选择 WAL 历史文件,而非 WAL 数据文件(David Steele)
问题修复修复 UPDATE 的多列 SET 子句使用子 SELECT 作为数据源时可能发生的崩溃
变更
修复 UPDATE 的多列 SET 子句使用子 SELECT 作为数据源时可能发生的崩溃(Tom Lane)
问题修复避免 libxml2 返回空错误消息时发生崩溃
变更
避免 libxml2 返回空错误消息时发生崩溃(Sergio Conde Gómez)
问题修复修复因排序规则分配处理不一致而引发的虚假分组相关解析器错误
变更
修复因排序规则分配处理不一致而引发的虚假分组相关解析器错误(Andrew Gierth)
在某些情况下,如果表达式包含对支持排序规则的数据类型的操作,本应被视为匹配的表达式没有被认定为匹配。
改进检查 LEAST() 或 GREATEST() 底层的比较函数是否防泄漏,而非直接假定它防泄漏
变更
检查 LEAST() 或 GREATEST() 底层的比较函数是否防泄漏,而非直接假定它防泄漏(Tom Lane)
通常很难使 B-树比较函数实际泄漏信息,但原则上可能发生。
问题修复修复 Gather 计划节点上下都包含嵌套循环的查询的不正确规划
变更
修复 Gather 计划节点上下都包含嵌套循环的查询的不正确规划(Tom Lane)
如果两层嵌套循环都需要将同一个变量传入各自的右侧,就会生成不正确的计划。
问题修复修复必须在外部表扫描处对横向引用求值的查询的不正确规划
变更
修复必须在外部表扫描处对横向引用求值的查询的不正确规划(Tom Lane)
问题修复修复边界情况下低估归并连接代价的问题
变更
修复边界情况下低估归并连接代价的问题(Tom Lane)
当外侧键范围远小于内侧键范围时,规划器可能偏好归并连接,即使内侧存在大量重复键,使其成为低效选择。
改进避免查询包含成千上万个可使用索引的子句时,规划时间以 O(N^2) 增长
变更
避免查询包含成千上万个可使用索引的子句时,规划时间以 O(N^2) 增长(Tom Lane)
改进改进 ANALYZE 对并发更新行的处理
变更
改进 ANALYZE 对并发更新行的处理(Jeff Janes,Tom Lane)
以前,正在进行的事务所删除的行会被排除在 ANALYZE 样本之外,但现在发现,这比包含它们会带来更多不一致。实际上,样本现在对应于 ANALYZE 开始时的 MVCC 快照。
改进使 TRUNCATE 忽略属于其他会话临时表的继承子表
变更
使 TRUNCATE 忽略属于其他会话临时表的继承子表(Amit Langote,Michael Paquier)
这使 TRUNCATE 的行为与其他命令一致。以前,此类情况通常会以失败告终。
问题修复修复 TRUNCATE,使其更新正确表的统计计数器
变更
修复 TRUNCATE,使其更新正确表的统计计数器(Tom Lane)
如果被截断的表具有 TOAST 表,以前会重置 TOAST 表的计数器。
改进正确处理 ALTER TABLE ONLY ADD COLUMN IF NOT EXISTS
变更
正确处理 ALTER TABLE ONLY ADD COLUMN IF NOT EXISTS(Greg Stark)
改进允许在热备模式下执行 UNLISTEN
变更
允许在热备模式下执行 UNLISTEN(Shay Rojansky)
这必然是无操作,因为热备模式不允许 LISTEN;但允许这一空操作可以简化客户端的会话状态重置逻辑。
问题修复修复某些模式和数据类型权限列表中缺失的角色依赖关系
变更
修复某些模式和数据类型权限列表中缺失的角色依赖关系(Tom Lane)
在某些情况下,可以删除已被授予权限的角色。这不会立即引发问题,但随后的转储/重载或升级会失败,表现为尝试向名称完全由数字组成的角色授予权限。
改进防止在两阶段事务中使用会话的临时模式
变更
防止在两阶段事务中使用会话的临时模式(Michael Paquier)
很早以前就已禁止在此类事务中访问临时表,但对临时对象的其他操作仍可能引发问题。
关联记录 (1)
改进确保添加或移除外键约束后正确更新关系缓存
变更
确保添加或移除外键约束后正确更新关系缓存(Álvaro Herrera)
这一疏漏可能导致现有会话未实施新建约束,或继续实施已删除的约束。
改进确保重命名约束后正确更新关系缓存
变更
确保重命名约束后正确更新关系缓存(Amit Langote)
改进使自动清理更积极地移除残留临时表,并在 DISCARD TEMP 期间也移除残留临时表
变更
使自动清理更积极地移除残留临时表,并在 DISCARD TEMP 期间也移除残留临时表(Álvaro Herrera)
这有助于确保更及时地清理崩溃会话的残留对象。
问题修复修复 GiST 索引微清理操作的重放,使并发热备查询不会看到不一致状态
变更
修复 GiST 索引微清理操作的重放,使并发热备查询不会看到不一致状态(Alexander Korotkov)
改进防止过快回收空 GIN 索引页而导致并发搜索失败
变更
防止过快回收空 GIN 索引页而导致并发搜索失败(Andrey Borodin,Alexander Korotkov)
问题修复修复浮点数到整数强制转换在边界情况下的失败
变更
修复浮点数到整数强制转换在边界情况下的失败(Andrew Gierth,Tom Lane)
略高于最大有效整数值的值可能未被拒绝,随后发生溢出,反而产生最小有效整数。此外,本应舍入为最小或最大整数值的值可能被错误拒绝。
改进发起 PAM 认证请求时,如果连接通过 Unix 套接字建立,则不设置 PAM_RHOST 变量
变更
发起 PAM 认证请求时,如果连接通过 Unix 套接字建立,则不设置 PAM_RHOST 变量(Thomas Munro)
以前,该变量会被设置为 [local],但它本应是主机名,因此这样的值至少没有什么帮助。
改进禁止将 client_min_messages 设置为高于 ERROR 的级别
变更
禁止将 client_min_messages 设置为高于 ERROR 的级别(Jonah Harris,Tom Lane)
以前,可以将此变量设置为 FATAL 或 PANIC,从而禁止向客户端传送普通错误消息。但这违背了 PostgreSQL 通信协议规范中的保证,并导致某些客户端行为严重异常。在已发布分支中,修复方法是静默地将此类设置视为 ERROR。版本 12 及后续版本将完全拒绝这些选项。
问题修复修复 ecpglib,使其优先使用 uselocale() 或 _configthreadlocale(),而非 setlocale()
变更
修复 ecpglib,使其优先使用 uselocale() 或 _configthreadlocale(),而非 setlocale()(Michael Meskes,Tom Lane)
由于 setlocale() 不局限于线程,甚至可能不是线程安全的,以前的代码会给多线程 ecpg 应用带来问题。
关联记录 (4)
- 相同变化PostgreSQL 11.2 · 修复 ecpglib,使其优先使用 uselocale() 或 _configthreadlocale(),而非 setlocale()
- 相同变化PostgreSQL 9.6.12 · 修复 ecpglib 优先使用 uselocale() 或 _configthreadlocale() 而不是 setlocale()
- 相同变化PostgreSQL 9.5.16 · 修复 ecpglib 优先使用 uselocale() 或 _configthreadlocale() 而不是 setlocale()
- 相同变化PostgreSQL 9.4.21 · 修复 ecpglib 优先使用 uselocale() 或 _configthreadlocale() 而不是 setlocale()
问题修复修复通过 ecpg SQLDA(SQL 描述符区域)传递的数值数据结果不正确的问题
变更
修复通过 ecpg SQLDA(SQL 描述符区域)传递的数值数据结果不正确的问题(Daisuke Higuchi)
带有前导零的值未被正确复制。
问题修复修复 psql 的 \g target 元命令,使其适用于 COPY TO STDOUT
变更
修复 psql 的 \g target 元命令,使其适用于 COPY TO STDOUT(Daniel Vérité)
以前,target 选项被忽略,因此复制的数据始终发送到当前查询输出目标。
改进使 psql 的 LaTeX 输出格式正确呈现特殊字符
变更
使 psql 的 LaTeX 输出格式正确呈现特殊字符(Tom Lane)
反斜线和某些其他 ASCII 标点字符未被正确呈现,导致文档语法错误或输出中出现错误字符。
问题修复修复 pg_dump 对间接依赖主键的物化视图的处理
变更
修复 pg_dump 对间接依赖主键的物化视图的处理(Tom Lane)
这曾导致此类视图的转储归档条目被错误标记,产生无害的 “archive items not in correct section order” 警告;更有影响的是,依赖这些标记的选择性恢复选项(如 --section)可能出现错误行为。
问题修复避免 pg_dump 或 pg_restore 尝试报告错误时,在某些平台上因空指针解引用而崩溃
变更
避免 pg_dump 或 pg_restore 尝试报告错误时,在某些平台上因空指针解引用而崩溃(Tom Lane)
改进如果 COPY FROM PROGRAM 提前停止读取程序输出,则适当地忽略 SIGPIPE 错误
变更
如果 COPY FROM PROGRAM 提前停止读取程序输出,则适当地忽略 SIGPIPE 错误(Tom Lane)
实际上,直接使用 COPY 不会出现这种情况,但使用 contrib/file_fdw 时可能发生。
问题修复修复 contrib/hstore,使其为版本 8.4 或更早版本创建的空 hstore 值计算正确的 hash 值
变更
修复 contrib/hstore,使其为版本 8.4 或更早版本创建的空 hstore 值计算正确的 hash 值(Andrew Gierth)
以前的代码产生的结果,与较新版本创建的空 hstore 值不同,因此可能导致哈希连接或 hash 聚合结果不正确。如果表中可能包含最早在 8.4 时存储、此后从未经过转储/重新加载的数据,建议重建 hstore 列上的所有 hash 索引。
关联记录 (4)
- 相同变化PostgreSQL 11.2 · 修复 contrib/hstore,使其为版本 8.4 或更早版本创建的空 hstore 值计算正确的 hash 值
- 相同变化PostgreSQL 9.6.12 · 修复 contrib/hstore 为 8.4 或更早版本中创建的空 hstore 值计算正确的哈希值
- 相同变化PostgreSQL 9.5.16 · 修复 contrib/hstore 为 8.4 或更早版本中创建的空 hstore 值计算正确的哈希值
- 相同变化PostgreSQL 9.4.21 · 修复 contrib/hstore 为 8.4 或更早版本中创建的空 hstore 值计算正确的哈希值
问题修复避免向 contrib/intarray 的 gist__int_ops 索引支持代码提供大量输入时发生崩溃或运行时间过长
变更
避免向 contrib/intarray 的 gist__int_ops 索引支持代码提供大量输入时发生崩溃或运行时间过长(Andrew Gierth)
关联记录 (4)
- 相同变化PostgreSQL 11.2 · 避免向 contrib/intarray 的 gist__int_ops 索引支持代码提供大量输入时发生崩溃或运行时间过长
- 相同变化PostgreSQL 9.6.12 · 避免 contrib/intarray 的 gist__int_ops 索引支持处理大输入时崩溃和过长运行时间
- 相同变化PostgreSQL 9.5.16 · 避免 contrib/intarray 的 gist__int_ops 索引支持处理大输入时崩溃和过长运行时间
- 相同变化PostgreSQL 9.4.21 · 避免contrib/intarray的gist__int_ops索引支持在大型输入下崩溃和运行时间过长的问题
改进在 configure 中,如果找不到 python,则依次查找 python3 和 python2
变更
在 configure 中,如果找不到 python,则依次查找 python3 和 python2(Peter Eisentraut)
这使不再提供无版本号的 python 可执行文件的平台,无需显式指定 PYTHON 即可配置 PL/Python。
改进在 pgxs 构建中支持新的 Makefile 变量 PG_CFLAGS、PG_CXXFLAGS 和 PG_LDFLAGS
变更
在 pgxs 构建中支持新的 Makefile 变量 PG_CFLAGS、PG_CXXFLAGS 和 PG_LDFLAGS(Christoph Berg)
这简化了扩展构建过程的自定义。
关联记录 (4)
- 相同变化PostgreSQL 11.2 · 在 pgxs 构建中支持新的 Makefile 变量 PG_CFLAGS、PG_CXXFLAGS 和 PG_LDFLAGS
- 相同变化PostgreSQL 9.6.12 · 支持 pgxs 构建中的新 Makefile 变量 PG_CFLAGS、PG_CXXFLAGS 和 PG_LDFLAGS
- 相同变化PostgreSQL 9.5.16 · 支持 pgxs 构建中的新 Makefile 变量 PG_CFLAGS、PG_CXXFLAGS 和 PG_LDFLAGS
- 相同变化PostgreSQL 9.4.21 · 支持 pgxs 构建中的新 Makefile 变量 PG_CFLAGS、PG_CXXFLAGS 和 PG_LDFLAGS
问题修复修复以 Perl 编写的构建脚本,使其不再假定搜索路径包含 “.”,因为近期 Perl 版本已不再包含它
变更
修复以 Perl 编写的构建脚本,使其不再假定搜索路径包含 “.”,因为近期 Perl 版本已不再包含它(Andrew Dunstan)
问题修复修复 OpenBSD 上服务器命令行选项的解析问题
变更
修复 OpenBSD 上服务器命令行选项的解析问题(Tom Lane)
改进调整 set_rel_pathlist_hook 调用的位置,使扩展可以用它为并行查询提供部分路径
变更
调整 set_rel_pathlist_hook 调用的位置,使扩展可以用它为并行查询提供部分路径(KaiGai Kohei)
预计这不会影响现有使用场景。
改进重命名红黑树支持函数,使用 rbt 前缀代替 rb 前缀
变更
重命名红黑树支持函数,使用 rbt 前缀代替 rb 前缀(Tom Lane)
这避免了与 Ruby 函数发生名称冲突,后者曾使 PL/Ruby 失效。希望没有其他扩展受到影响。
关联记录 (1)
改进将时区数据文件更新到 tzdata 2018i 版,以反映哈萨克斯坦、梅特拉卡特拉及圣多美和普林西比的夏令时法规变更。由于部分地区未更改 UTC 偏移量,哈萨克斯坦的 Qyzylorda 时区被一分为二,创建了新时区 Asia/Qostanay。同时修正了香港及众多太平洋岛屿的历史数据。
变更
将时区数据文件更新到 tzdata 2018i 版,以反映哈萨克斯坦、梅特拉卡特拉及圣多美和普林西比的夏令时法规变更。由于部分地区未更改 UTC 偏移量,哈萨克斯坦的 Qyzylorda 时区被一分为二,创建了新时区 Asia/Qostanay。同时修正了香港及众多太平洋岛屿的历史数据。
关联记录 (4)
- 相同变化PostgreSQL 11.2 · 将时区数据文件更新到 tzdata 2018i 版,以反映哈萨克斯坦、梅特拉卡特拉及圣多美和普林西比的夏令时法规变更。由于部分地区未更改 UTC 偏移量,哈萨克斯坦的 Qyzylorda 时区被一分为二,创建了新时区 Asia/Qostanay。同时修正了香港及众多太平洋岛屿的历史数据。
- 相同变化PostgreSQL 9.6.12 · 更新时区数据文件到 tzdata 版本 2018i,涉及哈萨克斯坦、梅特拉卡特拉以及圣多美和普林西比的夏令时法规变更。哈萨克斯坦的克孜勒奥尔达时区一分为二,创建了新时区 Asia/Qostanay,因为部分地区没有更改 UTC 偏移。还有香港和众多太平洋岛屿的历史修正。
- 相同变化PostgreSQL 9.5.16 · 更新时区数据文件到 tzdata 版本 2018i,涉及哈萨克斯坦、梅特拉卡特拉以及圣多美和普林西比的夏令时法规变更。哈萨克斯坦的克孜勒奥尔达时区一分为二,创建了新时区 Asia/Qostanay,因为部分地区没有更改 UTC 偏移。还有香港和众多太平洋岛屿的历史修正。
- 相同变化PostgreSQL 9.4.21 · 更新时区数据文件到 tzdata 版本 2018i,涉及哈萨克斯坦、梅特拉卡特拉以及圣多美和普林西比的夏令时法规变更。哈萨克斯坦的克孜勒奥尔达时区一分为二,创建了新时区 Asia/Qostanay,因为部分地区没有更改 UTC 偏移。还有香港和众多太平洋岛屿的历史修正。
没有匹配的变化
尝试其他关键词,或 .
如何生成比较结果?
比较依据起始版本之后至目标版本的 PostgreSQL 发布说明。经核实的回补重复项会谨慎合并,保留每条原始说明;相关提交可能涉及独立变化,仍作为不同记录保留。
发布快照: 2026-09-26 · 安全快照: 2026-09-26
内容来自 PostgreSQL 发布说明。交互方式参考 pgversions.com 与 pgversionreport.