文档版本比较
POSTGRESQL · VERSION COMPARE
PostgreSQL 12.19 发布变化
此版本的完整功能、修复与兼容性说明,以及其他版本的关联记录。
包括起始版本之后至目标版本的变化。大版本号表示该分支的首个版本。
从数据库输出识别起始版本
完整发布变化
12.19
2024-05-09
12.19stable支持截止 2024-11-21
PostgreSQL 12.19
迁移与兼容性
对于运行 12.X 的用户,不需要执行导出/恢复。
但是,如果是从早于 12.18 的版本升级,请参见第 E.5 节。
问题修复修复从多个 VALUES 行 INSERT 到目标列为数组或复合类型上的域时的问题
变更
修复从多个 VALUES 行 INSERT 到目标列为数组或复合类型上的域时的问题(Tom Lane)§
这类情况会以数据类型不匹配的意外错误失败,或者插入可能导致奇怪结果的意外强制转换。
问题修复修复当表按布尔列分区且查询含有布尔 IS NOT 子句时,对 NULL 分区的不正确修剪
变更
修复当表按布尔列分区且查询含有布尔 IS NOT 子句时,对 NULL 分区的不正确修剪(David Rowley)§
NULL 值满足诸如 之类的子句,因此修剪掉包含 NULL 的分区会产生不正确的结果。boolcol IS NOT FALSE
改进使 ALTER FOREIGN TABLE SET SCHEMA 将所拥有的序列移到新模式中
变更
使 ALTER FOREIGN TABLE SET SCHEMA 将所拥有的序列移到新模式中(Tom Lane)§
将常规表移到新模式会导致该表所拥有的序列也被移到该模式中(连同索引和约束)。但对于外部表,这一点被遗漏了。
问题修复修复 EXPLAIN 对位图堆扫描访问的堆页面的计数
变更
修复 EXPLAIN 对位图堆扫描访问的堆页面的计数(Melanie Plageman)§
之前,不包含可见元组的堆页面不被计数;但计算位图索引扫描返回的所有页面似乎更一致。
问题修复避免在移除孤立临时表时出现死锁
变更
避免在移除孤立临时表时出现死锁(Mikhail Zhilin)§
如果创建临时表的会话在未移除该表的情况下崩溃,autovacuum 最终会尝试移除该孤立的表。然而,被分配了相同临时命名空间的新传入会话也会尝试这样做。如果临时表有依赖项(如拥有的序列),这两个清理尝试之间可能会产生死锁。
改进避免在检查每个关系的冻结 XID 值时出现竞态条件
变更
避免在检查每个关系的冻结 XID 值时出现竞态条件(Noah Misch)§
VACUUM 从每个关系的值计算每个数据库的冻结 XID 值时,可能会被另一个 VACUUM 对这些值的并发更新所混淆。
改进禁止在使用该表的外部 SQL 命令中将表转换为视图
变更
禁止在使用该表的外部 SQL 命令中将表转换为视图(Tom Lane)§
这可以避免可能的崩溃。
问题修复确保从等价类生成的连接条件在正确的计划层级应用
变更
确保从等价类生成的连接条件在正确的计划层级应用(Tom Lane)§
在 PostgreSQL 16 之前的版本中,生成的条件可能在外连接下方被评估,而实际上应在外连接上方(之后)评估,导致不正确的查询结果。所有版本在考虑连接到具有部分 SELECT 分支中连接列为常量输出的 UNION ALL 树时都有类似的隐患。
改进避免在非移动窗口帧中不必要地使用移动聚合模式
变更
避免在非移动窗口帧中不必要地使用移动聚合模式(Vallimaharajan G)§
当普通聚合作为窗口函数使用,且窗口帧起始指定为 UNBOUNDED PRECEDING 时,帧的头部无法移动,因此我们不需要使用特殊的(且更昂贵的)移动聚合模式。这个优化一直是预期的,但由于编码错误从未被触发。
改进避免在 GEQO 下规划按分区连接时使用已释放的数据
变更
避免在 GEQO 下规划按分区连接时使用已释放的数据(Tom Lane)§
这通常会以崩溃或意外的错误消息告终。
问题修复修复 “requested statistics kind X is not yet built” 错误消息中不正确报告的统计类型代码
变更
修复 “requested statistics kind X is not yet built” 错误消息中不正确报告的统计类型代码(David Rowley)§
关联记录 (4)
- 相同变化PostgreSQL 16.3 · 修复 “requested statistics kind X is not yet built” 错误消息中不正确报告的统计类型代码
- 相同变化PostgreSQL 15.7 · 修复 “requested statistics kind X is not yet built” 错误消息中不正确报告的统计类型代码
- 相同变化PostgreSQL 14.12 · 修复 “requested statistics kind X is not yet built” 错误消息中不正确报告的统计类型代码
- 相同变化PostgreSQL 13.15 · 修复 “requested statistics kind X is not yet built” 错误消息中不正确报告的统计类型代码
改进更加小心地处理 FROM 中返回 RECORD 的函数
问题修复修复 SQL 语言过程的返回行类型混淆
变更
修复 SQL 语言过程的返回行类型混淆(Tom Lane)§
以 SQL 语言实现的返回单个复合类型列的过程会导致断言失败或核心转储。
改进为一些递归函数增加保护性栈深度检查
变更
为一些递归函数增加保护性栈深度检查(Egor Chindyaskin)§
改进检测在 timestamp 上加减 interval 时的整数溢出
变更
检测在 timestamp 上加减 interval 时的整数溢出(Joseph Koshakow)§
某些应该导致超出范围错误的情况反而产生了不正确的结果。
改进避免 pg_get_expr() 中的竞态条件
变更
避免 pg_get_expr() 中的竞态条件(Tom Lane)§
如果参数引用的关系被并发删除,函数的意图是返回 NULL,但有时会失败。
问题修复修复 XID 状态函数中对旧事务 ID 的检测
变更
修复 XID 状态函数中对旧事务 ID 的检测(Karina Litskevich)§
距今超过 231 个事务的事务 ID 可能被误识别为近期的,导致 pg_xact_status() 或 txid_status() 出现异常行为。
问题修复修复在 WaitEventSetWait 中等待时抛出错误导致的文件描述符泄漏
变更
修复在 WaitEventSetWait 中等待时抛出错误导致的文件描述符泄漏(Etsuro Fujita)§
改进如果在重建索引期间访问索引,则抛出错误
变更
如果在重建索引期间访问索引,则抛出错误(Tom Lane)§
之前这只是一个断言检查,现在将其提升为常规运行时错误。当重建索引的用户定义索引表达式尝试访问其自身的表时,这将提供一个更有针对性的错误消息。
改进确保对 name 列的仅索引扫描返回完整填充的值
变更
确保对 name 列的仅索引扫描返回完整填充的值(David Rowley)§
物理存储在索引中的值是被截断的,之前会将指向该值的指针返回给调用者。这在 valgrind 下测试时引发了告警。理论上可能导致崩溃,但尚未收到相关报告。
问题修复修复大于 4GB 的 DSM 分配时的崩溃
变更
修复大于 4GB 的 DSM 分配时的崩溃(Heikki Linnakangas)§
改进如果新服务器会话的客户端套接字无法被设置为非阻塞模式则断开连接
变更
如果新服务器会话的客户端套接字无法被设置为非阻塞模式则断开连接(Heikki Linnakangas)§
曾经在理论上可以使用阻塞模式的套接字来运行;但这在很长时间以来就已经不能完全工作了,所以在连接开始时失败而不是稍后出现异常行为。
问题修复修复 OpenSSL 3.0.0 及更高版本中不充分的错误报告
变更
修复 OpenSSL 3.0.0 及更高版本中不充分的错误报告(Heikki Linnakangas,Tom Lane)§
通过 OpenSSL 传递的系统报告错误是用数字错误代码而非可读内容报告的。
改进避免在 libpq 和 ecpglib 中并发调用 bindtextdomain()
问题修复修复 ecpg 的预处理器在程序尝试重新定义在预处理器命令行上定义的宏时崩溃的问题
变更
改进在 ecpg 中,避免发出错误的 “unsupported feature will be passed to server” 警告
变更
在 ecpg 中,避免发出错误的 “unsupported feature will be passed to server” 警告(Tom Lane)§
关联记录 (4)
- 相同变化PostgreSQL 16.3 · 在 ecpg 中,避免发出错误的 “unsupported feature will be passed to server” 警告
- 相同变化PostgreSQL 15.7 · 在 ecpg 中,避免发出错误的 “unsupported feature will be passed to server” 警告
- 相同变化PostgreSQL 14.12 · 在 ecpg 中,避免发出错误的 “unsupported feature will be passed to server” 警告
- 相同变化PostgreSQL 13.15 · 在 ecpg 中,避免发出错误的 “unsupported feature will be passed to server” 警告
改进确保 ecpg 的 intoasc() 函数的字符串结果正确以零结尾
变更
确保 ecpg 的 intoasc() 函数的字符串结果正确以零结尾(Oleg Tselebrovskiy)§
问题修复修复 pg_dumpall,使角色注释(如果存在)无论 --no-role-passwords 的设置如何都会被导出
变更
关联记录 (4)
- 相同变化PostgreSQL 16.3 · 修复 pg_dumpall,使角色注释(如果存在)无论 --no-role-passwords 的设置如何都会被导出
- 相同变化PostgreSQL 15.7 · 修复 pg_dumpall,使角色注释(如果存在)无论 --no-role-passwords 的设置如何都会被导出
- 相同变化PostgreSQL 14.12 · 修复 pg_dumpall,使角色注释(如果存在)无论 --no-role-passwords 的设置如何都会被导出
- 相同变化PostgreSQL 13.15 · 修复 pg_dumpall,使角色注释(如果存在)无论 --no-role-passwords 的设置如何都会被导出
问题修复修复 PL/pgSQL 对表达式后跟单行注释(-- 风格注释)的解析
变更
修复 PL/pgSQL 对表达式后跟单行注释(-- 风格注释)的解析(Erik Wienhold,Tom Lane)§
此错误导致当此类注释跟在 PL/pgSQL CASE 语句中的 WHEN 表达式之后时会出现解析错误。
改进在 contrib/amcheck 中,不要由于短头部与长头部值的差异而报告虚假的不匹配失败
改进在 contrib/postgres_fdw 中,避免发出按常量排序的请求
变更
在 contrib/postgres_fdw 中,避免发出按常量排序的请求(David Rowley)§
这可能发生在涉及 UNION ALL 和常量输出子查询的情况下。按常量排序当然是无用的,但还有被远程服务器误解的风险,导致 “ORDER BY position N is not in select list” 错误。
改进使 contrib/postgres_fdw 将远程会话的时区设置为 GMT 而不是 UTC
变更
使 contrib/postgres_fdw 将远程会话的时区设置为 GMT 而不是 UTC(Tom Lane)§
在实际用途中这应该产生相同的结果。然而,GMT 由服务器中的硬编码代码识别,而 UTC 则从时区数据库中查找。因此在远程服务器的时区数据库缺少条目的不太可能的情况下,旧代码可能失败。
改进在 contrib/xml2 中,避免使用在最近版本的 libxml2 中已弃用的库函数
变更
在 contrib/xml2 中,避免使用在最近版本的 libxml2 中已弃用的库函数(Dmitry Koval)§
问题修复修复与 LLVM 18 的不兼容性
变更
修复与 LLVM 18 的不兼容性(Thomas Munro,Dmitry Dolgov)§
改进允许 make check 在 musl C 库下工作
变更
允许 make check 在 musl C 库下工作(Thomas Munro,Bruce Momjian,Tom Lane)§
没有匹配的变化
尝试其他关键词,或 .
如何生成比较结果?
比较依据起始版本之后至目标版本的 PostgreSQL 发布说明。经核实的回补重复项会谨慎合并,保留每条原始说明;相关提交可能涉及独立变化,仍作为不同记录保留。
发布快照: 2026-09-26 · 安全快照: 2026-09-26
内容来自 PostgreSQL 发布说明。交互方式参考 pgversions.com 与 pgversionreport.