文档版本比较
POSTGRESQL · VERSION COMPARE
PostgreSQL 13.2 发布变化
此版本的完整功能、修复与兼容性说明,以及其他版本的关联记录。
包括起始版本之后至目标版本的变化。大版本号表示该分支的首个版本。
从数据库输出识别起始版本
完整发布变化
13.2
2021-02-11
13.2stable支持截止 2025-11-13
安全变化
| CVE / 问题 | 严重程度 | 修复版本 | 所选版本状态 |
|---|---|---|---|
| CVE-2021-3393 修复违反约束的错误消息中的信息泄漏 | 13.2 | 已记录修复 | |
| CVE-2021-20229 修复某些连接查询中未检查逐列 SELECT 权限的问题 | 13.2 | 已记录修复 |
PostgreSQL 13.2
迁移与兼容性
对于运行 13.X 的用户,不需要执行导出/恢复。
但是,请参阅下方变更记录中的第一项,其中说明了可能需要更新已存储的视图。另外,也请参阅第三项和第四项,其中描述了升级后可能适合重建索引的情况。
安全修复某些连接查询中未检查逐列 SELECT 权限的问题
变更
修复某些连接查询中未检查逐列 SELECT 权限的问题(Tom Lane)§
在涉及连接的某些情况下,解析器未能将查询读取的所有列都记录到用于权限检查的列使用位图中。虽然执行器仍会要求某种 SELECT 权限才能运行查询,但这意味着,仅对表中一列拥有 SELECT 权限的用户,仍可以通过特意构造的查询读取该表的所有列。
受此问题影响的已存储视图会具有不完整的列使用位图,因此即使更新后,仍无法对该视图正确执行权限检查。在依靠列级权限保障安全的安装环境中,建议对所有用户定义的视图执行 CREATE OR REPLACE,使它们重新解析。
PostgreSQL 项目感谢 Sven Klemm 报告此问题。(CVE-2021-20229)
安全修复违反约束的错误消息中的信息泄漏
变更
修复违反约束的错误消息中的信息泄漏(Heikki Linnakangas)§
如果 UPDATE 命令尝试将某行移动到其他分区,却发现该行违反了新分区上的某个约束,并且该分区中列的物理位置与父表不同,那么错误消息可能泄露用户没有 SELECT 权限的列的内容。(CVE-2021-3393)
问题修复修复向 GiST 索引插入时对并发页面分裂的不正确检测
变更
修复向 GiST 索引插入时对并发页面分裂的不正确检测(Heikki Linnakangas)§
并发插入可能使条目被放到错误的页面中,导致索引损坏。建议重建所有经历过并发插入的 GiST 索引。
关联记录 (1)
问题修复修复 CREATE INDEX CONCURRENTLY,使其等待并发的预备事务
变更
修复 CREATE INDEX CONCURRENTLY,使其等待并发的预备事务(Andrey Borodin)§
CREATE INDEX CONCURRENTLY 等待所有并发事务完成,以便看到它们插入的行时,也必须出于相同原因等待所有预备事务完成。未能这样做意味着,预备事务插入的行可能被遗漏在新索引之外,导致依赖该索引的查询找不到这些行。对于启用了预备事务(max_prepared_transactions > 0)的安装实例,建议重建所有并发构建的索引,以防其构建时发生过此问题。
关联记录 (5)
- 相同变化PostgreSQL 12.6 · 修复 CREATE INDEX CONCURRENTLY,使其等待并发的预备事务
- 相同变化PostgreSQL 11.11 · 修复 CREATE INDEX CONCURRENTLY,使其等待并发的预备事务
- 相同变化PostgreSQL 10.16 · 修复 CREATE INDEX CONCURRENTLY,使其等待并发的预备事务
- 相同变化PostgreSQL 9.6.21 · 修复 CREATE INDEX CONCURRENTLY,使其等待并发的预备事务
- 相同变化PostgreSQL 9.5.25 · 修复 CREATE INDEX CONCURRENTLY,使其等待并发的预备事务
问题修复避免尝试重新扫描同时具有 hash 分组集和排序分组集的聚合计划节点时发生崩溃
问题修复修复 hash 聚合节点将部分元组溢写到磁盘时可能产生错误查询结果的问题
变更
修复 hash 聚合节点将部分元组溢写到磁盘时可能产生错误查询结果的问题(Tom Lane)§
重新读入元组时,聚合分组值可能被替换为空值,从而导致错误结果。
问题修复修复增量排序中的边界情况
变更
修复增量排序中的边界情况(Neil Chen)§
如果一个排序批次的最后一个元组恰好是下一组已排序元组中的第一个元组,代码就会处理错误。这可能导致 “retrieved too many tuples in a bounded sort” 错误消息,或悄然产生错误的排序结果。
问题修复避免通过扩展查询协议执行会回滚事务的 CALL 或 DO 语句时发生崩溃
变更
避免通过扩展查询协议执行会回滚事务的 CALL 或 DO 语句时发生崩溃(Thomas Munro,Tom Lane)§
在 PostgreSQL 13 中,这种情况必然导致空指针解引用。在更早的版本中,此缺陷似乎没有可见症状,但尚不能完全确定它绝不会造成问题。
改进避免分区表上的 BEFORE UPDATE 触发器产生不必要的错误
变更
避免分区表上的 BEFORE UPDATE 触发器产生不必要的错误(Álvaro Herrera)§
只要 BEFORE UPDATE FOR EACH ROW 触发器以任何方式修改了行,就会阻止 UPDATE 在需要时将该行移动到另一个分区;但这一限制已经没有必要。
问题修复修复分区剪枝逻辑,使其处理不对称的 hash 分区集合
变更
修复分区剪枝逻辑,使其处理不对称的 hash 分区集合(Tom Lane)§
如果 hash 分区表的分区大小不相等(即模数值不同),或缺少某些余数值对应的分区,规划器的剪枝逻辑就可能错误地认定某些分区无需扫描,导致查询无法找到本应找到的行。
改进避免将 WHERE CURRENT OF 应用于计划中包含 MergeAppend 节点的游标时产生错误结果
变更
避免将 WHERE CURRENT OF 应用于计划中包含 MergeAppend 节点的游标时产生错误结果(Tom Lane)§
这种情况不受支持(一般来说,不能保证使用 ORDER BY 的游标可以简单地用于更新);但以前的代码没有拒绝它,并可能悄然给出错误匹配。
关联记录 (5)
- 相同变化PostgreSQL 12.6 · 避免将 WHERE CURRENT OF 应用于计划中包含 MergeAppend 节点的游标时产生错误结果
- 相同变化PostgreSQL 11.11 · 避免将 WHERE CURRENT OF 应用于计划中包含 MergeAppend 节点的游标时产生错误结果
- 相同变化PostgreSQL 10.16 · 避免将 WHERE CURRENT OF 应用于计划中包含 MergeAppend 节点的游标时产生错误结果
- 相同变化PostgreSQL 9.6.21 · 避免对计划包含 MergeAppend 节点的游标应用 WHERE CURRENT OF 时出现错误结果
- 相同变化PostgreSQL 9.5.25 · 避免对计划包含 MergeAppend 节点的游标应用 WHERE CURRENT OF 时出现错误结果
问题修复修复将 WHERE CURRENT OF 应用于计划中包含自定义扫描节点的游标时的崩溃
变更
修复将 WHERE CURRENT OF 应用于计划中包含自定义扫描节点的游标时的崩溃(David Geier)§
关联记录 (5)
- 相同变化PostgreSQL 12.6 · 修复将 WHERE CURRENT OF 应用于计划中包含自定义扫描节点的游标时的崩溃
- 相同变化PostgreSQL 11.11 · 修复将 WHERE CURRENT OF 应用于计划中包含自定义扫描节点的游标时的崩溃
- 相同变化PostgreSQL 10.16 · 修复将 WHERE CURRENT OF 应用于计划中包含自定义扫描节点的游标时的崩溃
- 相同变化PostgreSQL 9.6.21 · 修复对计划包含自定义扫描节点的游标应用 WHERE CURRENT OF 时的崩溃
- 相同变化PostgreSQL 9.5.25 · 修复对计划包含自定义扫描节点的游标应用 WHERE CURRENT OF 时的崩溃
问题修复修复规划器对求值应因外连接而延迟的占位符的错误处理
变更
修复规划器对求值应因外连接而延迟的占位符的错误处理(Tom Lane)§
这尤其会发生在包含对外连接输出的横向引用的简单子查询中。此错误可能产生格式错误的计划。已知情况会触发 “failed to assign all NestLoopParams to plan nodes” 错误,但也可能有其他症状。
关联记录 (1)
问题修复修复规划器在移除无用 RESULT RTE 时对占位符的处理
问题修复修复规划器对在某个连接层级计算、且仅在同一层级使用的占位符的处理
变更
修复规划器对在某个连接层级计算、且仅在同一层级使用的占位符的处理(Tom Lane)§
这一疏漏可能导致 “failed to build any N-way joins” 规划器错误。
改进规划 Gather Merge 操作时考虑未排序的子路径
变更
规划 Gather Merge 操作时考虑未排序的子路径(James Coleman)§
可以通过增加显式 Sort 节点来使用此类路径,在某些情况下,这会产生更好的计划。
改进尝试并行化排序时,不考虑涉及并行受限函数或集合返回函数的 ORDER BY 表达式
改进更谨慎地判断索引访问方法是否支持标记/恢复
变更
更谨慎地判断索引访问方法是否支持标记/恢复(Andrew Gierth)§
这可以防止在罕见的边界情况下出现关于缺少支持函数的错误。
问题修复修复对并行查询所需共享内存量的高估
变更
修复对并行查询所需共享内存量的高估(Takayuki Tsunakawa)§
问题修复修复 ALTER DEFAULT PRIVILEGES,使其安全地处理重复参数
变更
修复 ALTER DEFAULT PRIVILEGES,使其安全地处理重复参数(Michael Paquier)§
同一命令中重复的角色名或模式名可能导致 “tuple already updated by self” 错误或违反唯一约束。
关联记录 (5)
- 相同变化PostgreSQL 12.6 · 修复 ALTER DEFAULT PRIVILEGES,使其安全地处理重复参数
- 相同变化PostgreSQL 11.11 · 修复 ALTER DEFAULT PRIVILEGES,使其安全地处理重复参数
- 相同变化PostgreSQL 10.16 · 修复 ALTER DEFAULT PRIVILEGES,使其安全地处理重复参数
- 相同变化PostgreSQL 9.6.21 · 修复 ALTER DEFAULT PRIVILEGES 安全处理重复参数的问题
- 相同变化PostgreSQL 9.5.25 · 修复 ALTER DEFAULT PRIVILEGES 安全处理重复参数的问题
改进在 pg_authid 变更时清除 ACL 相关缓存
变更
在 pg_authid 变更时清除 ACL 相关缓存(Noah Misch)§
此项修改确保与权限相关的判断及时反映 ALTER ROLE ... [NO] INHERIT 的结果。
问题修复修复无法检测当前事务中重写的表上的 “snapshot too old” 情况的问题
变更
修复无法检测当前事务中重写的表上的 “snapshot too old” 情况的问题(Kyotaro Horiguchi,Noah Misch)§
只有当 wal_level 设为 minimal,且重写由 ALTER TABLE SET TABLESPACE 执行时,才存在这一隐患。
问题修复修复对当前事务中创建或重写的表执行 CREATE PUBLICATION 时不应发生的失败
变更
修复对当前事务中创建或重写的表执行 CREATE PUBLICATION 时不应发生的失败(Kyotaro Horiguchi)§
只有当 wal_level 设为 minimal 时,才存在这一隐患。
改进防止错误处理有歧义的 CREATE TABLE LIKE 子句
变更
防止错误处理有歧义的 CREATE TABLE LIKE 子句(Tom Lane)§
初步创建新表后,会重新检查 LIKE 子句,以处理索引等对象的导入。这次重新检查有可能找到另一个同名表,从而导致意外行为;例如,新表是一个与 LIKE 目标同名的临时表时就会如此。
改进调整 CREATE TABLE LIKE 中的操作顺序,在构建外键约束之前克隆索引
变更
调整 CREATE TABLE LIKE 中的操作顺序,在构建外键约束之前克隆索引(Tom Lane)§
这修复了外层 CREATE TABLE 中声明的自引用外键约束依赖于来自 LIKE 子句的索引的情况。
关联记录 (5)
- 相同变化PostgreSQL 12.6 · 调整 CREATE TABLE LIKE 中的操作顺序,在构建外键约束之前克隆索引
- 相同变化PostgreSQL 11.11 · 调整 CREATE TABLE LIKE 中的操作顺序,在构建外键约束之前克隆索引
- 相同变化PostgreSQL 10.16 · 调整 CREATE TABLE LIKE 中的操作顺序,在构建外键约束之前克隆索引
- 相同变化PostgreSQL 9.6.21 · 调整 CREATE TABLE LIKE 中操作的顺序,使索引在外键约束构建之前被克隆
- 相同变化PostgreSQL 9.5.25 · 调整 CREATE TABLE LIKE 中操作的顺序,使索引在外键约束构建之前被克隆
改进禁止对系统目录执行 CREATE STATISTICS
变更
禁止对系统目录执行 CREATE STATISTICS(Tomas Vondra)§
改进禁止将继承子表转换为视图
变更
禁止将继承子表转换为视图(Tom Lane)§
改进确保为已删除关系分配的磁盘空间在提交时及时释放
变更
确保为已删除关系分配的磁盘空间在提交时及时释放(Thomas Munro)§
以前,如果删除的关系跨越多个 1GB 段,只有第一个段会立即被截断。其他段只是被解除链接;只要其他后端仍打开着这些文件,内核就不能释放其存储空间。
改进防止删除被分区关系引用、但未用于任何实际存储的表空间
变更
防止删除被分区关系引用、但未用于任何实际存储的表空间(Álvaro Herrera)§
以前允许这样做,但之后对分区关系的操作会失败。
问题修复修复 CLUSTER 的进度报告
问题修复修复 COPY FROM 对反斜杠转义的多字节字符的处理
变更
修复 COPY FROM 对反斜杠转义的多字节字符的处理(Heikki Linnakangas)§
反斜杠后跟多字节字符时未被正确处理。在某些客户端字符编码中,这可能导致多字节字符的一部分被误认为字段分隔符或复制数据结束标记。
改进在不带 ANALYZE 的 EXPLAIN 中,避免预先分配执行器 hash 表
变更
在不带 ANALYZE 的 EXPLAIN 中,避免预先分配执行器 hash 表(Alexey Bashtanov)§
关联记录 (5)
- 相同变化PostgreSQL 12.6 · 在不带 ANALYZE 的 EXPLAIN 中,避免预先分配执行器 hash 表
- 相同变化PostgreSQL 11.11 · 在不带 ANALYZE 的 EXPLAIN 中,避免预先分配执行器 hash 表
- 相同变化PostgreSQL 10.16 · 在不带 ANALYZE 的 EXPLAIN 中,避免预先分配执行器 hash 表
- 相同变化PostgreSQL 9.6.21 · 避免不带 ANALYZE 的 EXPLAIN 预先分配执行器哈希表
- 相同变化PostgreSQL 9.5.25 · 避免不带 ANALYZE 的 EXPLAIN 预先分配执行器哈希表
问题修复修复最近在 LISTEN/NOTIFY 队列处理中引入的竞争条件
变更
修复最近在 LISTEN/NOTIFY 队列处理中引入的竞争条件(Tom Lane)§
刚开始侦听的后端可能尝试读取正在被截断的 SLRU 页面,从而可能导致错误。
改进允许 jsonb 连接操作符处理所有 JSON 数据类型组合
变更
允许 jsonb 连接操作符处理所有 JSON 数据类型组合(Tom Lane)§
我们可以连接两个 JSON 对象或两个 JSON 数组。对于其他情况,将非数组输入包装为单元素数组,再进行数组连接。以前,某些输入组合遵循此规则,而其他组合却会无端报错。
问题修复修复解析 BRE 模式正则表达式中的 * 量词时使用未初始化值的问题
变更
修复解析 BRE 模式正则表达式中的 * 量词时使用未初始化值的问题(Tom Lane)§
此错误可能使量词表现为非贪婪模式,即表现得像完整正则表达式中的 *? 量词。
问题修复修复 numeric power() 在指数恰好为 INT_MIN(-2147483648)时的行为
变更
问题修复修复 substring() 函数中的整数溢出情况
变更
修复 substring() 函数中的整数溢出情况(Tom Lane,Pavel Stehule)§
如果指定的起始索引与长度相加时发生整数溢出,substring() 就会行为异常:要么对本应成功的情况抛出虚假的 “negative substring length” 错误,要么未能指出长度为负(而在大多数情况下返回整个字符串)。
改进防止因错误检测 SLRU 日志的回卷点而可能造成的数据丢失
变更
防止因错误检测 SLRU 日志的回卷点而可能造成的数据丢失(Noah Misch)§
回卷点通常位于页面中间,必须将其取整到页边界,但以前没有正确做到这一点。只有当安装实例距离 SLRU 溢出不到一页时,才可能出现问题,而这在正常运行的系统中不太可能发生。如果确实发生,会表现为后续出现 “apparent wraparound” 或 “could not access status of transaction” 错误。
问题修复修复 WAL 读取逻辑,使其正确处理时间线切换
问题修复修复 WAL 发送进程进程为逻辑解码发送新快照时的内存泄漏
变更
修复 WAL 发送进程进程为逻辑解码发送新快照时的内存泄漏(Amit Kapila)§
问题修复修复逻辑复制期间通过分区关系的根表发送行变更时,WAL 发送进程进程中的关系缓存泄漏
变更
修复逻辑复制期间通过分区关系的根表发送行变更时,WAL 发送进程进程中的关系缓存泄漏(Amit Langote,Mark Zhao)§
问题修复修复 WAL 发送进程,使其在终止复制后接受其他命令
变更
修复 WAL 发送进程,使其在终止复制后接受其他命令(Jeff Davis)§
改进确保检测热备后端与启动(WAL 应用)进程之间的死锁
变更
确保检测热备后端与启动(WAL 应用)进程之间的死锁(Fujii Masao)§
启动进程没有运行死锁检测代码,因此当启动进程最后加入循环等待时,死锁可能永远不会被识别。
问题修复修复删除引用 HOT 链的索引条目时可能无法检测恢复冲突的问题
改进确保 krb_server_keyfile 的非空值始终覆盖服务器环境中 KRB5_KTNAME 的任何设置
变更
确保 krb_server_keyfile 的非空值始终覆盖服务器环境中 KRB5_KTNAME 的任何设置(Tom Lane)§
以前,哪个设置优先取决于客户端是否请求 GSS 加密。
改进在连接无法匹配 pg_hba.conf 条目的服务器日志消息中,包含 GSS 加密是否已启用的详细信息
变更
在连接无法匹配 pg_hba.conf 条目的服务器日志消息中,包含 GSS 加密是否已启用的详细信息(Kyotaro Horiguchi,Tom Lane)§
如果存在 hostgssenc 或 hostnogssenc 条目,这些信息就与问题有关。
问题修复修复服务器 GSS 加密支持中的多种问题
变更
修复服务器 GSS 加密支持中的多种问题(Tom Lane)§
移除 GSS 加密连接只能使用 GSS 认证这一无意义的限制。在连接授权日志消息中添加 GSS 加密信息。计算所需共享内存大小时,计入与 GSS 相关的空间(这一遗漏可能在 max_connections 设置很高时引发问题)。避免在报告不可恢复的 GSS 加密错误时可能出现的无限递归。
关联记录 (1)
改进确保 postmaster 开始 “smart” 或 “fast” 关闭流程时,清理尚未处理的后台工作进程请求
变更
确保 postmaster 开始 “smart” 或 “fast” 关闭流程时,清理尚未处理的后台工作进程请求(Tom Lane)§
以前存在一种竞争条件:如果子进程恰好在关闭前请求了后台工作进程,就可能无限期等待,导致关闭无法完成。
问题修复修复解析 recovery_target_xid 值时的可移植性问题
变更
修复解析 recovery_target_xid 值时的可移植性问题(Michael Paquier)§
目标 XID 可能有 64 位宽,但以前使用 strtoul() 解析,导致在 long 为 32 位的平台(例如 Windows)上行为异常。
改进避免在独立后端中尝试使用并行索引构建
变更
避免在独立后端中尝试使用并行索引构建(Yulin Pei)§
改进允许索引访问方法支持内含列,而不必支持多个键列
变更
允许索引访问方法支持内含列,而不必支持多个键列(Tom Lane)§
改进进行基础备份时,如果不需要备份清单,则避免执行任何 SHA256 代码
变更
进行基础备份时,如果不需要备份清单,则避免执行任何 SHA256 代码(Michael Paquier)§
使用以 FIPS 模式运行的 OpenSSL 时,SHA256 hash 会被拒绝,从而导致错误。此项修改使这类平台上也能进行基础备份,只需指定 --no-manifest。
改进避免对具有非严格反序列化函数的聚合进行并行聚合时发生断言失败
变更
避免对具有非严格反序列化函数的聚合进行并行聚合时发生断言失败(Andrew Gierth)§
核心 PostgreSQL 中不存在此类聚合函数,但 PostGIS 等某些扩展提供了此类函数。不过,在未启用断言的构建中,这一错误是无害的。
改进避免 pg_get_functiondef() 检查带有 TRANSFORM 选项的函数时发生断言失败
变更
避免 pg_get_functiondef() 检查带有 TRANSFORM 选项的函数时发生断言失败(Tom Lane)§
关联记录 (5)
- 相同变化PostgreSQL 12.6 · 避免 pg_get_functiondef() 检查带有 TRANSFORM 选项的函数时发生断言失败
- 相同变化PostgreSQL 11.11 · 避免 pg_get_functiondef() 检查带有 TRANSFORM 选项的函数时发生断言失败
- 相同变化PostgreSQL 10.16 · 避免 pg_get_functiondef() 检查带有 TRANSFORM 选项的函数时发生断言失败
- 相同变化PostgreSQL 9.6.21 · 避免检查带 TRANSFORM 选项的函数时 pg_get_functiondef() 的断言失败
- 相同变化PostgreSQL 9.5.25 · 避免检查带 TRANSFORM 选项的函数时 pg_get_functiondef() 的断言失败
问题修复修复 PL/pgSQL CALL 语句中错误的数据结构分配
改进在 libpq 中,不要在尝试 GSS 加密之后跳过 SSL 尝试
变更
在 libpq 中,不要在尝试 GSS 加密之后跳过 SSL 尝试(Tom Lane)§
如果已成功建立 GSS 加密连接,但随后在认证期间失败,我们会回退到未加密连接,而非接着尝试 SSL 加密连接。这可能导致意外的连接失败,或在期望加密连接时却悄然获得未加密连接。幸运的是,只有客户端和服务器都持有同一 Kerberos 基础设施中的有效票据时,GSS 加密才能成功。在要求使用 SSL 加密的环境中,这种情况似乎不太可能成立。
问题修复使 libpq 的 PQconndefaults() 函数报告正确的 channel_binding 默认值
变更
使 libpq 的 PQconndefaults() 函数报告正确的 channel_binding 默认值(Daniele Varrazzo)§
改进在 psql 中,重新允许在 \connect 命令的 connection_string 参数中包含密码
变更
在 psql 中,重新允许在 \connect 命令的 connection_string 参数中包含密码(Tom Lane)§
这以前是可以的,但最近的一项缺陷修复导致密码被忽略(从而提示用户输入密码)。
关联记录 (5)
- 相同变化PostgreSQL 12.6 · 在 psql 中,重新允许在 \connect 命令的 connection_string 参数中包含密码
- 相同变化PostgreSQL 11.11 · 在 psql 中,重新允许在 \connect 命令的 connection_string 参数中包含密码
- 相同变化PostgreSQL 10.16 · 在 psql 中,重新允许在 \connect 命令的 connection_string 参数中包含密码
- 相同变化PostgreSQL 9.6.21 · 在 psql 中,重新允许在 \connect 命令的 connection_string 参数中包含密码
- 相同变化PostgreSQL 9.5.25 · 在 psql 中,重新允许在 \connect 命令的 connection_string 参数中包含密码
改进在 psql 的 \d 命令中,不要截断列默认值的显示
问题修复修复 psql 的 \help 命令中的多种缺陷
变更
修复 psql 的 \help 命令中的多种缺陷(Kyotaro Horiguchi,Tom Lane)§
\help 带有两个参数词时,无法仅使用第一个词找到命令说明,例如 \help reset all 本应显示 RESET 的帮助,但却没有。另外,\help 经常未在应该调用分页器时调用它,也会泄漏内存。
问题修复修复 pg_dump 对继承生成列的转储
改进在 pg_dump 中,确保恢复脚本以发布所有者的身份运行 ALTER PUBLICATION ADD TABLE 命令,并同样以分区索引所有者的身份运行 ALTER INDEX ATTACH PARTITION 命令
变更
在 pg_dump 中,确保恢复脚本以发布所有者的身份运行 ALTER PUBLICATION ADD TABLE 命令,并同样以分区索引所有者的身份运行 ALTER INDEX ATTACH PARTITION 命令(Tom Lane)§ §
以前,这些命令由启动恢复脚本的角色运行;这通常能够正常工作,但在边界情况下,该角色可能没有足够权限。
关联记录 (3)
- 相同变化PostgreSQL 12.6 · 在 pg_dump 中,确保恢复脚本以发布所有者的身份运行 ALTER PUBLICATION ADD TABLE 命令,并同样以分区索引所有者的身份运行 ALTER INDEX ATTACH PARTITION 命令
- 相同变化PostgreSQL 11.11 · 在 pg_dump 中,确保恢复脚本以发布所有者的身份运行 ALTER PUBLICATION ADD TABLE 命令,并同样以分区索引所有者的身份运行 ALTER INDEX ATTACH PARTITION 命令
- 相同变化PostgreSQL 10.16 · 在 pg_dump 中,确保恢复脚本以发布所有者的身份运行 ALTER PUBLICATION ADD TABLE 命令
问题修复修复 pg_dump,使其处理扩展初始权限中的 WITH GRANT OPTION
变更
修复 pg_dump,使其处理扩展初始权限中的 WITH GRANT OPTION(Noah Misch)§
如果扩展脚本创建一个对象,并授予其带转授权选项的权限,而用户之后撤销了这些权限,pg_dump 就会生成不正确的 SQL 来重现这种情况。(目前,即使有扩展这样做,数量也很少。)
改进在 pg_rewind 中,确保回退备库时计入所有 WAL
变更
改进在 pgbench 中,禁止变量名以数字开头
变更
在 pgbench 中,禁止变量名以数字开头(Fabien Coelho)§
这可以避免尝试在时间戳字面值中替换变量,因为时间戳可能包含 12:34 这样的字符串。
问题修复在某些客户端程序的连接失败错误消息中报告正确的数据库名称
变更
在某些客户端程序的连接失败错误消息中报告正确的数据库名称(Álvaro Herrera)§
如果数据库名称采用默认值,而非通过命令行给出,pg_dumpall、pgbench、oid2name 和 vacuumlo 就会在连接失败后产生误导性的错误消息。
问题修复修复 contrib/auto_explain 中的内存泄漏
变更
修复 contrib/auto_explain 中的内存泄漏(Japin Li)§
生成 EXPLAIN 输出时消耗的内存,直到当前事务结束(对于顶层语句)或外层语句结束(对于嵌套语句)才会释放。启用 log_nested_statements 时,这尤其容易造成问题。
问题修复在 contrib/postgres_fdw 中,避免删除用户映射或外部服务器对象时泄漏已打开的远程服务器连接
变更
在 contrib/postgres_fdw 中,避免删除用户映射或外部服务器对象时泄漏已打开的远程服务器连接(Bharath Rupireddy)§
依赖已删除用户映射或外部服务器的打开连接已无法再被引用,但以前仍会将它们保留到本地会话结束。
关联记录 (5)
- 相同变化PostgreSQL 12.6 · 在 contrib/postgres_fdw 中,避免删除用户映射或外部服务器对象时泄漏已打开的远程服务器连接
- 相同变化PostgreSQL 11.11 · 在 contrib/postgres_fdw 中,避免删除用户映射或外部服务器对象时泄漏已打开的远程服务器连接
- 相同变化PostgreSQL 10.16 · 在 contrib/postgres_fdw 中,避免删除用户映射或外部服务器对象时泄漏已打开的远程服务器连接
- 相同变化PostgreSQL 9.6.21 · 在 contrib/postgres_fdw 中,避免删除用户映射或外部服务器对象时泄漏到远程服务器的打开连接
- 相同变化PostgreSQL 9.5.25 · 在 contrib/postgres_fdw 中,避免删除用户映射或外部服务器对象时泄漏到远程服务器的打开连接
问题修复修复 contrib/postgres_fdw 中错误的断言
变更
修复 contrib/postgres_fdw 中错误的断言(Etsuro Fujita)§
改进在 contrib/pgcrypto 中,检查 OpenSSL EVP 函数返回的错误
变更
在 contrib/pgcrypto 中,检查 OpenSSL EVP 函数返回的错误(Michael Paquier)§
我们并不真正预期这里会出现错误,但此项修改消除了静态分析工具的警告。
关联记录 (5)
- 相同变化PostgreSQL 12.6 · 在 contrib/pgcrypto 中,检查 OpenSSL EVP 函数返回的错误
- 相同变化PostgreSQL 11.11 · 在 contrib/pgcrypto 中,检查 OpenSSL EVP 函数返回的错误
- 相同变化PostgreSQL 10.16 · 在 contrib/pgcrypto 中,检查 OpenSSL EVP 函数返回的错误
- 相同变化PostgreSQL 9.6.21 · 在 contrib/pgcrypto 中,检查 OpenSSL EVP 函数的错误返回
- 相同变化PostgreSQL 9.5.25 · 在 contrib/pgcrypto 中,检查 OpenSSL EVP 函数的错误返回
改进使 contrib/pg_prewarm 在预热完成前数据库集簇被关闭时更加稳健
变更
使 contrib/pg_prewarm 在预热完成前数据库集簇被关闭时更加稳健(Tom Lane)§
以前,autoprewarm 会只用截至当时已成功加载的块号重写其状态文件,因而可能在很大程度上使下次启动时的预热功能失效。现在改为在初始加载过程完成前,禁止更新状态文件。
问题修复在 contrib/pg_trgm 的 GiST 索引支持中,避免恰好对两个索引项调用 picksplit 这一罕见情况下的崩溃
变更
在 contrib/pg_trgm 的 GiST 索引支持中,避免恰好对两个索引项调用 picksplit 这一罕见情况下的崩溃(Andrew Gierth,Alexander Korotkov)§
关联记录 (5)
- 相同变化PostgreSQL 12.6 · 在 contrib/pg_trgm 的 GiST 索引支持中,避免恰好对两个索引项调用 picksplit 这一罕见情况下的崩溃
- 相同变化PostgreSQL 11.11 · 在 contrib/pg_trgm 的 GiST 索引支持中,避免恰好对两个索引项调用 picksplit 这一罕见情况下的崩溃
- 相同变化PostgreSQL 10.16 · 在 contrib/pg_trgm 的 GiST 索引支持中,避免恰好对两个索引项调用 picksplit 这一罕见情况下的崩溃
- 相同变化PostgreSQL 9.6.21 · 在 contrib/pg_trgm 的 GiST 索引支持中,避免 picksplit 恰好在两个索引项上被调用这一罕见情况下的崩溃
- 相同变化PostgreSQL 9.5.25 · 在 contrib/pg_trgm 的 GiST 索引支持中,避免 picksplit 恰好在两个索引项上被调用这一罕见情况下的崩溃
问题修复修复 contrib/pg_prewarm 和 contrib/postgres_fdw 中错误的超时计算
变更
修复 contrib/pg_prewarm 和 contrib/postgres_fdw 中错误的超时计算(Alexey Kondratov,Tom Lane)§
contrib/pg_prewarm 的 autoprewarm 父进程中的主循环,将所需睡眠时间低估为实际值的千分之一,导致 CPU 消耗远高于预期。等待远程服务器返回结果时,contrib/postgres_fdw 则将所需超时时间高估为实际值的 1000 倍(不过,60 秒的上限缓解了这一错误)。
这两个错误都源于将秒和微秒错误地转换为毫秒。引入新的 API TimestampDifferenceMilliseconds(),使今后更容易正确完成这一转换。
关联记录 (5)
- 相同变化PostgreSQL 12.6 · 修复 contrib/pg_prewarm 和 contrib/postgres_fdw 中错误的超时计算
- 相同变化PostgreSQL 11.11 · 修复 contrib/pg_prewarm 和 contrib/postgres_fdw 中错误的超时计算
- 相同变化PostgreSQL 10.16 · 修复 contrib/pg_prewarm 和 contrib/postgres_fdw 中错误的超时计算
- 相同变化PostgreSQL 9.6.21 · 修复 contrib/pg_prewarm 和 contrib/postgres_fdw 中超时的计算错误
- 相同变化PostgreSQL 9.5.25 · 修复 contrib/pg_prewarm 和 contrib/postgres_fdw 中超时的计算错误
改进改进 configure 在 macOS 上选择 PG_SYSROOT 的启发式方法
变更
改进 configure 在 macOS 上选择 PG_SYSROOT 的启发式方法(Tom Lane)§ §
当 Xcode 比底层操作系统更新时,新方法更有可能产生理想结果。选择与操作系统版本不匹配的 sysroot,可能生成无法工作的可执行文件。
关联记录 (5)
- 相同变化PostgreSQL 12.6 · 改进 configure 在 macOS 上选择 PG_SYSROOT 的启发式方法
- 相同变化PostgreSQL 11.11 · 改进 configure 在 macOS 上选择 PG_SYSROOT 的启发式方法
- 相同变化PostgreSQL 10.16 · 改进 configure 在 macOS 上选择 PG_SYSROOT 的启发式方法
- 相同变化PostgreSQL 9.6.21 · 改进 configure 在 macOS 上选择 PG_SYSROOT 的启发式
- 相同变化PostgreSQL 9.5.25 · 改进 configure 在 macOS 上选择 PG_SYSROOT 的启发式
改进在 macOS 上构建时,在链接步骤和编译步骤中都指定 -isysroot
变更
在 macOS 上构建时,在链接步骤和编译步骤中都指定 -isysroot(James Hilliard)§
这同样可以改善 Xcode 与操作系统版本不同步时的结果。
关联记录 (5)
- 相同变化PostgreSQL 12.6 · 在 macOS 上构建时,在链接步骤和编译步骤中都指定 -isysroot
- 相同变化PostgreSQL 11.11 · 在 macOS 上构建时,在链接步骤和编译步骤中都指定 -isysroot
- 相同变化PostgreSQL 10.16 · 在 macOS 上构建时,在链接步骤和编译步骤中都指定 -isysroot
- 相同变化PostgreSQL 9.6.21 · 在 macOS 上构建时,在链接步骤和编译步骤中一样指定 -isysroot
- 相同变化PostgreSQL 9.5.25 · 在 macOS 上构建时,在链接步骤和编译步骤中一样指定 -isysroot
问题修复修复 JIT 编译,使其兼容 LLVM 11 和 LLVM 12
变更
问题修复修复 JIT 表达式编译中对布尔变量引用的潜在错误处理
变更
修复 JIT 表达式编译中对布尔变量引用的潜在错误处理(Andres Freund)§
尚未看到可归因于此问题的实际报告,但它似乎很可能在某些架构上造成问题。
问题修复修复使用 ICU 68 及更新版本时的编译失败
变更
修复使用 ICU 68 及更新版本时的编译失败(Tom Lane)§
改进避免在创建分区索引期间,以 NULL 源指针和零计数调用 memcpy()
变更
避免在创建分区索引期间,以 NULL 源指针和零计数调用 memcpy()(Álvaro Herrera)§
虽然尚未发现此类调用本身会造成问题,但某些编译器假定 memcpy() 的参数永不为 NULL,这可能导致对附近代码进行错误的优化。
改进将时区数据文件更新到 tzdata 2021a 版,以反映俄罗斯(Volgograd 时区)和南苏丹的夏令时法规变更,并修正澳大利亚、巴哈马、伯利兹、百慕大、加纳、以色列、肯尼亚、尼日利亚、巴勒斯坦、塞舌尔和瓦努阿图的历史数据。
变更
将时区数据文件更新到 tzdata 2021a 版,以反映俄罗斯(Volgograd 时区)和南苏丹的夏令时法规变更,并修正澳大利亚、巴哈马、伯利兹、百慕大、加纳、以色列、肯尼亚、尼日利亚、巴勒斯坦、塞舌尔和瓦努阿图的历史数据。(Tom Lane)§
特别是,Australia/Currie 时区经过修正后,已与 Australia/Hobart 完全相同。
关联记录 (5)
- 相同变化PostgreSQL 12.6 · 将时区数据文件更新到 tzdata 2021a 版,以反映俄罗斯(Volgograd 时区)和南苏丹的夏令时法规变更,并修正澳大利亚、巴哈马、伯利兹、百慕大、加纳、以色列、肯尼亚、尼日利亚、巴勒斯坦、塞舌尔和瓦努阿图的历史数据。
- 相同变化PostgreSQL 11.11 · 将时区数据文件更新到 tzdata 2021a 版,以反映俄罗斯(伏尔加格勒时区)和南苏丹的夏令时法规变更,并修正澳大利亚、巴哈马、伯利兹、百慕大、加纳、以色列、肯尼亚、尼日利亚、巴勒斯坦、塞舌尔和瓦努阿图的历史数据。
- 相同变化PostgreSQL 10.16 · 将时区数据文件更新到 tzdata 2021a 版,以反映俄罗斯(伏尔加格勒时区)和南苏丹的夏令时法规变更,并修正澳大利亚、巴哈马、伯利兹、百慕大、加纳、以色列、肯尼亚、尼日利亚、巴勒斯坦、塞舌尔和瓦努阿图的历史数据。
- 相同变化PostgreSQL 9.6.21 · 更新时区数据文件到 tzdata 版本 2021a,涉及俄罗斯(伏尔加格勒时区)和南苏丹的夏令时法规变更,以及澳大利亚、巴哈马、伯利兹、百慕大、加纳、以色列、肯尼亚、尼日利亚、巴勒斯坦、塞舌尔和瓦努阿图的历史修正。
- 相同变化PostgreSQL 9.5.25 · 更新时区数据文件到 tzdata 版本 2021a,涉及俄罗斯(伏尔加格勒时区)和南苏丹的夏令时法规变更,以及澳大利亚、巴哈马、伯利兹、百慕大、加纳、以色列、肯尼亚、尼日利亚、巴勒斯坦、塞舌尔和瓦努阿图的历史修正。
没有匹配的变化
尝试其他关键词,或 .
如何生成比较结果?
比较依据起始版本之后至目标版本的 PostgreSQL 发布说明。经核实的回补重复项会谨慎合并,保留每条原始说明;相关提交可能涉及独立变化,仍作为不同记录保留。
发布快照: 2026-09-26 · 安全快照: 2026-09-26
内容来自 PostgreSQL 发布说明。交互方式参考 pgversions.com 与 pgversionreport.