文档版本比较
POSTGRESQL · VERSION COMPARE
PostgreSQL 12.2 发布变化
此版本的完整功能、修复与兼容性说明,以及其他版本的关联记录。
包括起始版本之后至目标版本的变化。大版本号表示该分支的首个版本。
从数据库输出识别起始版本
完整发布变化
12.2
2020-02-13
12.2stable支持截止 2024-11-21
安全变化
| CVE / 问题 | 严重程度 | 修复版本 | 所选版本状态 |
|---|---|---|---|
| CVE-2017-7484 如果用户能够读取查询中实际指定的表的相应列,则允许规划器对子表统计信息应用可能泄漏信息的测试 | 已记录修复 | ||
| CVE-2020-1720 为 ALTER ... DEPENDS ON EXTENSION 补上缺失的权限检查 | 12.2 | 已记录修复 |
PostgreSQL 12.2
迁移与兼容性
对于运行 12.X 的用户,不需要执行导出/恢复。
但是,如果有任何引用分区表的外键约束,请参阅下方关于该特性缺陷的两项记录。
安全为 ALTER ... DEPENDS ON EXTENSION 补上缺失的权限检查
变更
为 ALTER ... DEPENDS ON EXTENSION 补上缺失的权限检查(Álvaro Herrera)§
将对象标记为依赖某个扩展时,没有进行任何权限检查。这一疏漏使任何用户都可以将例程、触发器、物化视图或索引标记为可由任何有权删除该扩展的用户删除。现在要求调用用户拥有指定对象(因而有权删除它)。(CVE-2020-1720)
问题修复修复 TRUNCATE ... CASCADE,确保截断所有相关分区
变更
修复 TRUNCATE ... CASCADE,确保截断所有相关分区(Jehan-Guillaume de Rorthais)§
如果使用 CASCADE 选项截断分区表的一个分区,且另一个表通过外键引用该分区表,则另一个表也必须被截断。当引用表本身也是分区表时,遗漏了这一检查,可能使违反外键约束的行保留下来。
因此,如果分区表之间存在外键约束,且曾对被引用表执行过任何分区级 TRUNCATE,就应检查是否存在违反外键约束的行。最简单的方法是添加一个新的同样的外键约束(添加成功后,删除新约束或原约束)。不过,从锁定的角度看,这样做可能代价过高;在这种情况下,可以选择手动查询不匹配的行。
问题修复修复未能将外键约束附加到子分区的问题
变更
修复未能将外键约束附加到子分区的问题(Jehan-Guillaume de Rorthais)§
向多级分区表第一层以下的层级添加分区时,引用顶层分区表的外键约束未被克隆到新分区,可能导致之后违反约束。分离新分区后再重新附加,是修复此问题代价最低的方法。不过,如果需要修复的分区很多,添加一个新的同样的外键约束可能更合适。
问题修复修复对分区表或继承树进行并发更新时可能发生的崩溃
变更
修复对分区表或继承树进行并发更新时可能发生的崩溃(Tom Lane)§
改进确保在适当情况下,将分区表上的行触发器正确克隆到子分区
问题修复修复逻辑复制订阅者代码,使其在适当情况下执行逐列 UPDATE 触发器
变更
修复逻辑复制订阅者代码,使其在适当情况下执行逐列 UPDATE 触发器(Peter Eisentraut)§
改进避免大事务必须溢写到许多独立临时文件时逻辑解码发生失败
变更
问题修复修复逻辑复制订阅者处理行更新时可能发生的崩溃或数据损坏
变更
修复逻辑复制订阅者处理行更新时可能发生的崩溃或数据损坏(Tom Lane,Tomas Vondra)§
只有当订阅者的表包含未从发布者复制、且数据类型按引用传递的列时,此缺陷才会导致可见问题。
问题修复修复对已订阅关系进行 DDL 变更后逻辑复制订阅者的崩溃
变更
修复对已订阅关系进行 DDL 变更后逻辑复制订阅者的崩溃(Jehan-Guillaume de Rorthais,Vignesh C)§
问题修复修复数据库崩溃并重启后逻辑复制发布者的失败
变更
修复数据库崩溃并重启后逻辑复制发布者的失败(Vignesh C)§
改进确保 pg_replication_slot_advance() 对物理复制槽的影响在重启后仍然保留
变更
改进提高使用 REPLICA IDENTITY FULL 的逻辑复制效率
变更
提高使用 REPLICA IDENTITY FULL 的逻辑复制效率(Konstantin Knizhnik)§
更新或删除操作中查找现有元组时,返回第一个匹配元组,而非最后一个。
问题修复修复基础备份,使其能够处理大于 INT32_MAX 的数据库 OID
变更
修复基础备份,使其能够处理大于 INT32_MAX 的数据库 OID(Peter Eisentraut)§
问题修复确保并行计划始终在正确的时机关闭
改进防止过早关闭位于 Limit 节点下方的 Gather 或 GatherMerge 计划节点
变更
防止过早关闭位于 Limit 节点下方的 Gather 或 GatherMerge 计划节点(Amit Kapila)§
这可以避免此类计划节点需要被扫描多次时发生失败,例如它位于嵌套循环内侧时。
改进提高多核 CPU 上并行哈希连接的效率
问题修复避免没有空闲动态共享内存槽时并行 CREATE INDEX 发生崩溃
变更
问题修复避免没有空闲动态共享内存槽时发生内存泄漏
变更
避免没有空闲动态共享内存槽时发生内存泄漏(Thomas Munro)§
改进在临时表上创建、删除或重建索引时,忽略 CONCURRENTLY 选项
变更
在临时表上创建、删除或重建索引时,忽略 CONCURRENTLY 选项(Michael Paquier,Heikki Linnakangas,Andres Freund)§
这可以避免临时表具有 ON COMMIT 动作时发生奇怪的失败。对临时表使用 CONCURRENTLY 本来就没有益处,因为其他会话无法访问该表,额外处理没有意义。
关联记录 (5)
问题修复修复重置标记为 ON COMMIT DELETE ROWS 的临时表上的表达式索引时可能发生的失败
变更
修复重置标记为 ON COMMIT DELETE ROWS 的临时表上的表达式索引时可能发生的失败(Tom Lane)§
关联记录 (5)
- 相同变化PostgreSQL 11.7 · 修复重置标记为 ON COMMIT DELETE ROWS 的临时表上的表达式索引时可能发生的失败
- 相同变化PostgreSQL 10.12 · 修复重置标记为 ON COMMIT DELETE ROWS 的临时表上的表达式索引时可能发生的失败
- 相同变化PostgreSQL 9.6.17 · 修复重置标记为 ON COMMIT DELETE ROWS 的临时表上的表达式索引时可能的失败
- 相同变化PostgreSQL 9.5.21 · 修复重置标记为 ON COMMIT DELETE ROWS 的临时表上的表达式索引时可能的失败
- 相同变化PostgreSQL 9.4.26 · 修复重置标记为 ON COMMIT DELETE ROWS 的临时表上的表达式索引时可能的失败
问题修复修复对 box、range 和 inet 数据类型执行 BRIN 索引操作时可能发生的崩溃
变更
修复对 box、range 和 inet 数据类型执行 BRIN 索引操作时可能发生的崩溃(Heikki Linnakangas)§
问题修复修复 GIN 索引中对已删除页面的处理
变更
问题修复修复多行 VALUES 列表中包含 SubPlan(子 SELECT)时可能发生的崩溃
变更
修复多行 VALUES 列表中包含 SubPlan(子 SELECT)时可能发生的崩溃(Tom Lane)§
关联记录 (5)
- 相同变化PostgreSQL 11.7 · 修复多行 VALUES 列表中包含 SubPlan(子 SELECT)时可能发生的崩溃
- 相同变化PostgreSQL 10.12 · 修复多行 VALUES 列表中包含 SubPlan(子 SELECT)时可能发生的崩溃
- 相同变化PostgreSQL 9.6.17 · 修复多行 VALUES 列表中包含 SubPlan(子 SELECT)时可能的崩溃
- 相同变化PostgreSQL 9.5.21 · 修复多行 VALUES 列表中包含 SubPlan(子 SELECT)时可能的崩溃
- 相同变化PostgreSQL 9.4.26 · 修复多行 VALUES 列表中包含 SubPlan(子 SELECT)时可能的崩溃
问题修复修复 ALTER TABLE 的失败:GENERATED 表达式引用的列已在同一 ALTER 命令前面的操作中被添加或更改了类型
变更
修复 ALTER TABLE 的失败:GENERATED 表达式引用的列已在同一 ALTER 命令前面的操作中被添加或更改了类型(Tom Lane)§
问题修复修复元组转换期间未能为“缺失”属性插入默认值的问题
变更
修复元组转换期间未能为“缺失”属性插入默认值的问题(Vik Fearing,Andrew Gierth)§
当值来自通过 ALTER TABLE ADD COLUMN 添加、且具有常量默认值的列时,这可能导致它们被错误地读取为 NULL。
关联记录 (1)
问题修复修复 FileClose() 失败后发生的崩溃
变更
修复 FileClose() 失败后发生的崩溃(Noah Misch)§
只有启用 data_sync_retry 时才能观察到此问题,否则 FileClose() 失败会被报告为 PANIC。
问题修复修复对外部表上多个 AFTER ROW 触发器的处理
变更
修复对外部表上多个 AFTER ROW 触发器的处理(Etsuro Fujita)§
问题修复修复使用按引用传递的聚合转换状态时发生的罕见崩溃
变更
修复使用按引用传递的聚合转换状态时发生的罕见崩溃(Andres Freund,Teodor Sigaev)§
改进改进 to_date() 和 to_timestamp() 中的错误报告
问题修复修复对公元前日期计算 EXTRACT(ISOYEAR FROM timestamp) 时结果相差一的问题
变更
修复对公元前日期计算 EXTRACT(ISOYEAR FROM 时结果相差一的问题(Tom Lane)§timestamp)
关联记录 (5)
- 相同变化PostgreSQL 11.7 · 修复对公元前日期计算 EXTRACT(ISOYEAR FROM timestamp) 时结果相差一的问题
- 相同变化PostgreSQL 10.12 · 修复对公元前日期计算 EXTRACT(ISOYEAR FROM timestamp) 时结果相差一的问题
- 相同变化PostgreSQL 9.6.17 · 修复公元前日期的 EXTRACT(ISOYEAR FROM timestamp) 的差一结果
- 相同变化PostgreSQL 9.5.21 · 修复公元前日期的 EXTRACT(ISOYEAR FROM timestamp) 的差一结果
- 相同变化PostgreSQL 9.4.26 · 修复公元前日期的 EXTRACT(ISOYEAR FROM timestamp) 的差一结果
改进确保 char 类型的 <> 操作符将无法确定排序规则的错误如实报告,而非报告为 “cache lookup failed for collation 0”
变更
确保 char 类型的 <> 操作符将无法确定排序规则的错误如实报告,而非报告为 “cache lookup failed for collation 0”(Tom Lane)§
改进避免将 TID 扫描当作顺序扫描
问题修复避免系统目录中存在自引用视图时 information_schema 视图发生栈溢出
变更
避免系统目录中存在自引用视图时 information_schema 视图发生栈溢出(Tom Lane)§
自引用视图无法正常工作,它总会导致无限递归。尝试执行视图时,我们已能正确处理这种情况,但在查询它是否可自动更新时却未能正确处理。
关联记录 (5)
- 相同变化PostgreSQL 11.7 · 避免系统目录中存在自引用视图时 information_schema 视图发生栈溢出
- 相同变化PostgreSQL 10.12 · 避免系统目录中存在自引用视图时 information_schema 视图发生栈溢出
- 相同变化PostgreSQL 9.6.17 · 避免系统目录中存在自引用视图时 information_schema 视图中的栈溢出
- 相同变化PostgreSQL 9.5.21 · 避免系统目录中存在自引用视图时 information_schema 视图中的栈溢出
- 相同变化PostgreSQL 9.4.26 · 避免系统目录中存在自引用视图时 information_schema 视图中的栈溢出
改进确保 WAL 发送进程进程在 pg_stat_activity 中的事务开始时间始终显示为 NULL
变更
性能提高内侧关系非常大时的哈希连接性能
变更
提高内侧关系非常大时的哈希连接性能(Thomas Munro)§
改进减少有许多活跃 WAL 发送进程进程时的自旋锁争用
变更
减少有许多活跃 WAL 发送进程进程时的自旋锁争用(Pierre Ducroquet)§
问题修复修复 EXPLAIN 输出中 “Subplans Removed” 字段的位置
变更
修复 EXPLAIN 输出中 “Subplans Removed” 字段的位置(Daniel Gustafsson,Tom Lane)§
在非文本输出格式中,此字段被输出到 “Plans” 子组内部,导致输出语法无效。现在按预期将其附加到父级 Append 或 MergeAppend 计划节点。这也会改变该字段在文本输出格式中的位置:如果同一计划节点附加了 InitPlan,“Subplans Removed” 现在会出现在它们之前。
问题修复修复 EXPLAIN 的 SETTINGS 选项,使其在非文本输出格式中输出空值
变更
修复 EXPLAIN 的 SETTINGS 选项,使其在非文本输出格式中输出空值(Tom Lane)§
在非文本输出格式中,请求的字段应当显示,即使其值为空或为零。
安全如果用户能够读取查询中实际指定的表的相应列,则允许规划器对子表统计信息应用可能泄漏信息的测试
变更
如果用户能够读取查询中实际指定的表的相应列,则允许规划器对子表统计信息应用可能泄漏信息的测试(Dilip Kumar,Amit Langote)§
此项修改修复了 CVE-2017-7484 的修复在分区表上引入的性能问题。那次安全修复禁止将可能泄露信息的操作符应用于当前用户无权直接读取的列的统计信息。然而,常见的做法是只在父分区表上授予权限,而不逐一在各个分区上授予权限。在这种情况下,用户可以通过父表读取该列,因此这一安全限制没有意义,只会让规划器的估计不必要地变差。
问题修复修复过度折叠与单行子查询的连接所导致的规划器错误
变更
修复过度折叠与单行子查询的连接所导致的规划器错误(Tom Lane)§
这一错误导致了 “failed to construct the join relation” 等错误。
问题修复修复尝试将 LIKE 或正则表达式模式匹配操作符与二进制兼容的索引操作符类匹配时出现的 “no = operator for opfamily NNNN” 规划器错误
变更
修复尝试将 LIKE 或正则表达式模式匹配操作符与二进制兼容的索引操作符类匹配时出现的 “no = operator for opfamily NNNN” 规划器错误(Tom Lane)§
问题修复修复为范围操作符 <@ 和 @> 计算选择率时在边界情况下发生的崩溃和估算错误
变更
修复为范围操作符 <@ 和 @> 计算选择率时在边界情况下发生的崩溃和估算错误(Michael Paquier,Andrey Borodin,Tom Lane)§
改进应用最常见值扩展统计信息时忽略系统列
变更
应用最常见值扩展统计信息时忽略系统列(Tomas Vondra)§
这可避免受影响查询发生 “negative bitmapset member not allowed” 规划器错误。
问题修复修复 BRIN 索引逻辑,使其支持假想 BRIN 索引
变更
修复 BRIN 索引逻辑,使其支持假想 BRIN 索引(Julien Rouhaud,Heikki Linnakangas)§
以前,如果“索引建议器”扩展尝试让规划器生成包含假想 BRIN 索引的计划,就会失败,因为 BRIN 代价估算代码始终尝试实际访问索引的元页面。现在会检查索引是否只是假想索引;如果是,则使用索引参数的默认假设。
改进改进对带条件 INSTEAD 规则的视图尝试使用自动更新时的错误报告
变更
改进对带条件 INSTEAD 规则的视图尝试使用自动更新时的错误报告(Dean Rasheed)§
这种用法从未得到支持,但以前只在执行时才抛出错误,因此它可能被规划器错误掩盖。
改进防止复合类型通过范围类型间接包含自身
变更
改进禁止返回 record 等伪类型的分区键表达式
变更
禁止返回 record 等伪类型的分区键表达式(Tom Lane)§
问题修复修复索引表达式使用禁止的类型时的错误报告
变更
修复索引表达式使用禁止的类型时的错误报告(Amit Langote)§
问题修复修复仅包含 VALUES 列表的视图的转储,使其能够处理视图输出列被重命名的情况
变更
修复仅包含 VALUES 列表的视图的转储,使其能够处理视图输出列被重命名的情况(Tom Lane)§
关联记录 (5)
- 相同变化PostgreSQL 11.7 · 修复仅包含 VALUES 列表的视图的转储,使其能够处理视图输出列被重命名的情况
- 相同变化PostgreSQL 10.12 · 修复仅包含 VALUES 列表的视图的转储,使其能够处理视图输出列被重命名的情况
- 相同变化PostgreSQL 9.6.17 · 修复仅包含 VALUES 列表的视图的转储,以处理视图输出列被改名的情况
- 相同变化PostgreSQL 9.5.21 · 修复仅包含 VALUES 列表的视图的转储,以处理视图输出列被改名的情况
- 相同变化PostgreSQL 9.4.26 · 修复仅包含 VALUES 列表的视图的转储,以处理视图输出列被改名的情况
改进确保计算视图或规则的依赖关系时,将 XMLTABLE 结构中使用的数据类型和排序规则考虑在内
变更
确保计算视图或规则的依赖关系时,将 XMLTABLE 结构中使用的数据类型和排序规则考虑在内(Tom Lane)§
以前,如果某个类型未在视图中的其他地方被引用,删除该类型就可能破坏使用 XMLTABLE 的视图。此修复不会纠正现有视图已记录的依赖关系,仅对新建视图生效。
改进防止 RADIUS 认证参数被意外转换为小写或截断
变更
防止 RADIUS 认证参数被意外转换为小写或截断(Marcos David)§
pg_hba.conf 解析器错误地将这些字段当作 SQL 标识符,而它们通常并不是。
改进在发送 ReadyForQuery 之前向客户端传送收到的 NOTIFY 消息,而非在之后发送
变更
在发送 ReadyForQuery 之前向客户端传送收到的 NOTIFY 消息,而非在之后发送(Tom Lane)§
此更改确保,对于 libpq 以及行为类似的其他客户端库,当客户端认为事务已完成时,事务期间收到的所有通知都已可用。这在实际应用中可能没有影响(无论如何,应用都需要处理异步通知),但更便于编写行为可重现的测试用例。
问题修复修复使用 GSSAPI 加密时处理非阻塞 I/O 的缺陷
变更
修复使用 GSSAPI 加密时处理非阻塞 I/O 的缺陷(Tom Lane)§
这些错误可能导致数据丢失(通常会引发后续的通信协议违规错误),或造成“活锁”:发送进程在数据尚未全部发送时进入休眠。此外,libpq 未能为每个连接保存独立的加密状态,可能导致使用多个加密数据库连接的应用失败。
改进即使未编译 GSSAPI 代码,也允许 libpq 解析所有与 GSS 有关的连接参数
变更
即使未编译 GSSAPI 代码,也允许 libpq 解析所有与 GSS 有关的连接参数(Tom Lane)§
这使其行为与我们的 SSL 支持类似:我们早已认为始终接受所有相关参数是可取的,即使某个构建缺少相应特性,导致部分参数被忽略或受到限制。
关联记录 (5)
- 相同变化PostgreSQL 11.7 · 即使未编译 GSSAPI 代码,也允许 libpq 解析所有与 GSS 有关的连接参数
- 相同变化PostgreSQL 10.12 · 即使未编译 GSSAPI 代码,也允许 libpq 解析所有与 GSS 有关的连接参数
- 相同变化PostgreSQL 9.6.17 · 允许 libpq 在未编译 GSSAPI 代码时也解析所有与 GSS 相关的连接参数
- 相同变化PostgreSQL 9.5.21 · 允许 libpq 在未编译 GSSAPI 代码时也解析所有与 GSS 相关的连接参数
- 相同变化PostgreSQL 9.4.26 · 允许 libpq 在未编译 GSSAPI 代码时也解析所有与 GSS 相关的连接参数
问题修复修复 ecpg 的 PGTYPEStimestamp_fmt_asc() 函数对格式代码 %b 和 %B 的不正确处理
变更
修复 ecpg 的 PGTYPEStimestamp_fmt_asc() 函数对格式代码 %b 和 %B 的不正确处理(Tomas Vondra)§
由于索引偏差一的错误,这些代码会输出错误的月份名,或可能导致崩溃。
关联记录 (5)
- 相同变化PostgreSQL 11.7 · 修复 ecpg 的 PGTYPEStimestamp_fmt_asc() 函数对格式代码 %b 和 %B 的不正确处理
- 相同变化PostgreSQL 10.12 · 修复 ecpg 的 PGTYPEStimestamp_fmt_asc() 函数对格式代码 %b 和 %B 的不正确处理
- 相同变化PostgreSQL 9.6.17 · 修复 ecpg 的 PGTYPEStimestamp_fmt_asc() 函数中 %b 和 %B 格式代码的错误处理
- 相同变化PostgreSQL 9.5.21 · 修复 ecpg 的 PGTYPEStimestamp_fmt_asc() 函数中 %b 和 %B 格式代码的错误处理
- 相同变化PostgreSQL 9.4.26 · 修复 ecpg 的 PGTYPEStimestamp_fmt_asc() 函数中 %b 和 %B 格式代码的错误处理
问题修复避免 ecpglib 中内存不足失败之后发生的崩溃
变更
避免 ecpglib 中内存不足失败之后发生的崩溃(Tom Lane)§
问题修复修复并行 pg_dump/pg_restore,使其更妥善地处理无法创建工作进程的情况
变更
修复并行 pg_dump/pg_restore,使其更妥善地处理无法创建工作进程的情况(Tom Lane)§
关联记录 (5)
- 相同变化PostgreSQL 11.7 · 修复并行 pg_dump/pg_restore,使其更妥善地处理无法创建工作进程的情况
- 相同变化PostgreSQL 10.12 · 修复并行 pg_dump/pg_restore,使其更妥善地处理无法创建工作进程的情况
- 相同变化PostgreSQL 9.6.17 · 修复并行 pg_dump/pg_restore 更优雅地处理工作者进程创建失败
- 相同变化PostgreSQL 9.5.21 · 修复并行 pg_dump/pg_restore 更优雅地处理工作者进程创建失败
- 相同变化PostgreSQL 9.4.26 · 修复并行 pg_dump/pg_restore 更优雅地处理工作者进程创建失败
问题修复防止尝试通过信号终止并行 pg_dump/pg_restore 运行时可能发生的崩溃或卡死
变更
防止尝试通过信号终止并行 pg_dump/pg_restore 运行时可能发生的崩溃或卡死(Tom Lane)§
关联记录 (5)
- 相同变化PostgreSQL 11.7 · 防止尝试通过信号终止并行 pg_dump/pg_restore 运行时可能发生的崩溃或卡死
- 相同变化PostgreSQL 10.12 · 防止尝试通过信号终止并行 pg_dump/pg_restore 运行时可能发生的崩溃或卡死
- 相同变化PostgreSQL 9.6.17 · 防止试图通过信号终止并行 pg_dump/ pg_restore 运行时可能的崩溃或锁死
- 相同变化PostgreSQL 9.5.21 · 防止试图通过信号终止并行 pg_dump/ pg_restore 运行时可能的崩溃或锁死
- 相同变化PostgreSQL 9.4.26 · 防止试图通过信号终止并行 pg_dump/ pg_restore 运行时可能的崩溃或锁死
改进在 pg_upgrade 搜索表中不可升级的数据类型时,检查数组和范围的内部类型
变更
在 pg_upgrade 搜索表中不可升级的数据类型时,检查数组和范围的内部类型(Tom Lane)§
关联记录 (5)
- 相同变化PostgreSQL 11.7 · 在 pg_upgrade 搜索表中不可升级的数据类型时,检查数组和范围的内部类型
- 相同变化PostgreSQL 10.12 · 在 pg_upgrade 搜索表中不可升级的数据类型时,检查数组和范围的内部类型
- 相同变化PostgreSQL 9.6.17 · 在 pg_upgrade 中,搜索表中不可升级数据类型时深入数组和范围内部
- 相同变化PostgreSQL 9.5.21 · 在 pg_upgrade 中,搜索表中不可升级数据类型时深入数组和范围内部
- 相同变化PostgreSQL 9.4.26 · 在 pg_upgrade 中,搜索表中不可升级数据类型时深入数组和范围内部
改进对 createuser 的 --connection-limit 选项进行更全面的语法检查
变更
对 createuser 的 --connection-limit 选项进行更全面的语法检查(Álvaro Herrera)§
关联记录 (5)
- 相同变化PostgreSQL 11.7 · 对 createuser 的 --connection-limit 选项进行更全面的语法检查
- 相同变化PostgreSQL 10.12 · 对 createuser 的 --connection-limit 选项进行更全面的语法检查
- 相同变化PostgreSQL 9.6.17 · 对 createuser 的 --connection-limit 选项应用更彻底的语法检查
- 相同变化PostgreSQL 9.5.21 · 对 createuser 的 --connection-limit 选项应用更彻底的语法检查
- 相同变化PostgreSQL 9.4.26 · 对 createuser 的 --connection-limit 选项应用更彻底的语法检查
改进在更多情况下处理 PL/pgSQL 复合类型变量所引用的具体类型发生变更的情况
变更
在更多情况下处理 PL/pgSQL 复合类型变量所引用的具体类型发生变更的情况(Ashutosh Sharma,Tom Lane)§
删除并重新创建 PL/pgSQL 变量所引用的复合类型,可能导致 “could not open relation with OID NNNN” 错误。
问题修复避免 postgres_fdw 尝试向远程服务器发送 UPDATE remote_tab SET (x,y) = (SELECT ...) 之类命令时发生崩溃
变更
避免 postgres_fdw 尝试向远程服务器发送 UPDATE remote_tab SET (x,y) = (SELECT ...) 之类命令时发生崩溃(Tom Lane)§
关联记录 (3)
- 相同变化PostgreSQL 11.7 · 避免 postgres_fdw 尝试向远程服务器发送 UPDATE remote_tab SET (x,y) = (SELECT ...) 之类命令时发生崩溃
- 相同变化PostgreSQL 10.12 · 避免 postgres_fdw 尝试向远程服务器发送 UPDATE remote_tab SET (x,y) = (SELECT ...) 之类命令时发生崩溃
- 相同变化PostgreSQL 9.6.17 · 避免 postgres_fdw 尝试向远程服务器发送诸如 UPDATE remote_tab SET (x,y) = (SELECT ...) 之类的命令时崩溃
改进在 contrib/dict_int 中,拒绝小于一的 maxlen 设置
变更
在 contrib/dict_int 中,拒绝小于一的 maxlen 设置(Tomas Vondra)§
这可防止该参数设置不合理时可能发生的崩溃。
关联记录 (5)
- 相同变化PostgreSQL 11.7 · 在 contrib/dict_int 中,拒绝小于一的 maxlen 设置
- 相同变化PostgreSQL 10.12 · 在 contrib/dict_int 中,拒绝小于一的 maxlen 设置
- 相同变化PostgreSQL 9.6.17 · 在 contrib/dict_int 中,拒绝小于一的 maxlen 设置
- 相同变化PostgreSQL 9.5.21 · 在 contrib/dict_int 中,拒绝小于一的 maxlen 设置
- 相同变化PostgreSQL 9.4.26 · 在 contrib/dict_int 中,拒绝小于一的 maxlen 设置
改进在 contrib/tablefunc 的 crosstab() 函数中禁止 NULL 类别值
变更
在 contrib/tablefunc 的 crosstab() 函数中禁止 NULL 类别值(Joe Conway)§
这种情况从未产生有用的结果,而且在某些平台上会导致崩溃。
关联记录 (5)
- 相同变化PostgreSQL 11.7 · 在 contrib/tablefunc 的 crosstab() 函数中禁止 NULL 类别值
- 相同变化PostgreSQL 10.12 · 在 contrib/tablefunc 的 crosstab() 函数中禁止 NULL 类别值
- 相同变化PostgreSQL 9.6.17 · 禁止 contrib/tablefunc 的 crosstab() 函数中的 NULL 类别值
- 相同变化PostgreSQL 9.5.21 · 禁止 contrib/tablefunc 的 crosstab() 函数中的 NULL 类别值
- 相同变化PostgreSQL 9.4.26 · 禁止 contrib/tablefunc 的 crosstab() 函数中的 NULL 类别值
问题修复修复 configure 对 OpenSSL 的 SSL_clear_options() 函数的探测,使其适用于 1.1.0 之前的 OpenSSL 版本
变更
修复 configure 对 OpenSSL 的 SSL_clear_options() 函数的探测,使其适用于 1.1.0 之前的 OpenSSL 版本(Michael Paquier,Daniel Gustafsson)§
使用旧版 OpenSSL 构建 PostgreSQL 时,此问题可能导致无法按预期设置 SSL 压缩选项。
改进将某些超时和统计跟踪 GUC 变量标记为 PGDLLIMPORT,以允许扩展在 Windows 上访问它们
变更
将某些超时和统计跟踪 GUC 变量标记为 PGDLLIMPORT,以允许扩展在 Windows 上访问它们(Pascal Legrand)§
这适用于 idle_in_transaction_session_timeout、lock_timeout、statement_timeout、track_activities、track_counts 和 track_functions。
关联记录 (5)
- 相同变化PostgreSQL 11.7 · 将某些超时和统计跟踪 GUC 变量标记为 PGDLLIMPORT,以允许扩展在 Windows 上访问它们
- 相同变化PostgreSQL 10.12 · 将某些超时和统计跟踪 GUC 变量标记为 PGDLLIMPORT,以允许扩展在 Windows 上访问它们
- 相同变化PostgreSQL 9.6.17 · 把一些超时和统计追踪 GUC 变量标记为 PGDLLIMPORT,以允许扩展在 Windows 上访问它们
- 相同变化PostgreSQL 9.5.21 · 把一些超时和统计跟踪 GUC 变量标记为 PGDLLIMPORT,以允许扩展在 Windows 上访问它们
- 相同变化PostgreSQL 9.4.26 · 把一些超时和统计追踪 GUC 变量标记为 PGDLLIMPORT,以允许扩展在 Windows 上访问它们
问题修复避免 “slab” 内存上下文健全性检查中的内存泄漏
变更
避免 “slab” 内存上下文健全性检查中的内存泄漏(Tomas Vondra)§
这不会影响生产构建,因为它们通常不会启用内存上下文检查;但在调试构建中,这种泄漏可能相当严重。
问题修复修复 LWLock 统计机制报告重复统计条目的问题
变更
修复 LWLock 统计机制报告重复统计条目的问题(Fujii Masao)§
由于 hash 表键创建有误,LWLock 统计代码(默认不编译,需要使用 -DLWLOCK_STATS 编译)可能为同一个 LWLock 和后端进程报告多个条目。
问题修复修复导致 Windows 上进程间信号延迟传递的竞争条件
变更
修复导致 Windows 上进程间信号延迟传递的竞争条件(Amit Kapila)§
这使 NOTIFY 出现了可见的时序异常,也可能导致其他错误行为。
问题修复修复对 Windows 的 ReadFile() 函数在边界情况下返回的错误结果的处理
变更
修复对 Windows 的 ReadFile() 函数在边界情况下返回的错误结果的处理(Thomas Munro,Juan José Santamaría Flecha)§
据目前所知,这一疏漏只导致多余的日志消息,并未造成实际的查询错误行为。
改进在 Windows 上,发生 ERROR_ACCESS_DENIED 文件访问失败后重试几次
变更
在 Windows 上,发生 ERROR_ACCESS_DENIED 文件访问失败后重试几次(Alexander Lakhin,Tom Lane)§ §
这有助于处理目标文件已被标记为删除、但尚未实际消失,导致打开文件失败的情况。例如,pg_ctl 在探测 postmaster 是否已经关闭时,经常因此类错误而失败。
关联记录 (5)
- 相同变化PostgreSQL 11.7 · 在 Windows 上,发生 ERROR_ACCESS_DENIED 文件访问失败后重试几次
- 相同变化PostgreSQL 10.12 · 在 Windows 上,发生 ERROR_ACCESS_DENIED 文件访问失败后重试几次
- 相同变化PostgreSQL 9.6.17 · 在 Windows 上,ERROR_ACCESS_DENIED 文件访问失败后重试几次
- 相同变化PostgreSQL 9.5.21 · 在 Windows 上,ERROR_ACCESS_DENIED 文件访问失败后重试几次
- 相同变化PostgreSQL 9.4.26 · 在 Windows 上,ERROR_ACCESS_DENIED 文件访问失败后重试几次
改进在 Windows 上,规避通过 pg_ctl 在 postmaster 停止后很快将其启动时(例如执行 pg_ctl restart),postmaster 日志文件出现的共享冲突
变更
在 Windows 上,规避通过 pg_ctl 在 postmaster 停止后很快将其启动时(例如执行 pg_ctl restart),postmaster 日志文件出现的共享冲突(Alexander Lakhin)§
没有匹配的变化
尝试其他关键词,或 .
如何生成比较结果?
比较依据起始版本之后至目标版本的 PostgreSQL 发布说明。经核实的回补重复项会谨慎合并,保留每条原始说明;相关提交可能涉及独立变化,仍作为不同记录保留。
发布快照: 2026-09-26 · 安全快照: 2026-09-26
内容来自 PostgreSQL 发布说明。交互方式参考 pgversions.com 与 pgversionreport.