文档版本比较
POSTGRESQL · VERSION COMPARE
PostgreSQL 14.14 发布变化
此版本的完整功能、修复与兼容性说明,以及其他版本的关联记录。
包括起始版本之后至目标版本的变化。大版本号表示该分支的首个版本。
从数据库输出识别起始版本
完整发布变化
14.14
2024-11-14
14.14stable支持截止 2026-11-12
安全变化
| CVE / 问题 | 严重程度 | 修复版本 | 所选版本状态 |
|---|---|---|---|
| CVE-2024-10979 防止受信任的 PL/Perl 代码更改环境变量 | 14.14 | 已记录修复 | |
| CVE-2024-10978 修复 SET SESSION AUTHORIZATION 与 SET ROLE 之间意外的交互 | 14.14 | 已记录修复 | |
| CVE-2024-10976 确保当 RLS 应用于非顶级表引用时,缓存的执行计划被标记为依赖于调用角色 | 14.14 | 已记录修复 | |
| CVE-2024-10977 使 libpq 丢弃在 SSL 或 GSS 协议协商期间收到的错误消息 | 14.14 | 已记录修复 |
PostgreSQL 14.14
迁移与兼容性
对于运行 14.X 的用户,不需要执行导出/恢复。
不过,如果你曾经从一个引用另一分区表的分区表中分离过某个分区,并且之后没有删除该分区,那么你可能需要修复系统目录和/或数据损坏,详见下文第五条变更记录。
另外,如果是从早于 14.12 的版本升级,请参见第 E.13 节。
安全确保当 RLS 应用于非顶级表引用时,缓存的执行计划被标记为依赖于调用角色
变更
确保当 RLS 应用于非顶级表引用时,缓存的执行计划被标记为依赖于调用角色(Nathan Bossart)§
如果查询中的 CTE、子查询、子链接、安全调用者视图或强制类型转换投影引用了具有行级安全策略的表,我们忽略了将结果执行计划标记为可能依赖于执行它的角色。这可能导致同一会话中后续的查询执行使用错误的执行计划,然后返回或隐藏本应被隐藏或返回的行。
PostgreSQL 项目感谢 Wolfgang Walther 报告此问题。(CVE-2024-10976)
关联记录 (5)
安全使 libpq 丢弃在 SSL 或 GSS 协议协商期间收到的错误消息
变更
使 libpq 丢弃在 SSL 或 GSS 协议协商期间收到的错误消息(Jacob Champion)§
在加密协商完成之前收到的错误消息可能是由中间人注入的,而不是真正的服务器输出。报告该消息会带来各种安全隐患;例如,该消息可能伪造查询结果,粗心的用户可能会误以为是正确的输出。最好的方案似乎是丢弃这类数据,仅依赖 libpq 自身对连接失败的报告。
PostgreSQL 项目感谢 Jacob Champion 报告此问题。(CVE-2024-10977)
安全修复 SET SESSION AUTHORIZATION 与 SET ROLE 之间意外的交互
变更
修复 SET SESSION AUTHORIZATION 与 SET ROLE 之间意外的交互(Tom Lane)§ §
SQL 标准要求 SET SESSION AUTHORIZATION 具有执行 SET ROLE NONE 的副作用。我们对此的实现有缺陷,导致两个设置之间产生了超出预期的交互。值得注意的是,回滚一个执行了 SET SESSION AUTHORIZATION 的事务会将 ROLE 恢复为 NONE,即使之前并非如此,因此有效用户 ID 现在可能与事务之前不同。在函数 SET 子句中临时设置 session_authorization 也有类似的效果。一个相关的错误是,如果并行工作进程检查 current_setting('role'),它会看到 none,即使它应该看到其他值。
PostgreSQL 项目感谢 Tom Lane 报告此问题。(CVE-2024-10978)
关联记录 (5)
- 相同变化PostgreSQL 17.1 · 修复 SET SESSION AUTHORIZATION 与 SET ROLE 之间意外的交互
- 相同变化PostgreSQL 16.5 · 修复 SET SESSION AUTHORIZATION 与 SET ROLE 之间意外的交互
- 相同变化PostgreSQL 15.9 · 修复 SET SESSION AUTHORIZATION 与 SET ROLE 之间意外的交互
- 相同变化PostgreSQL 13.17 · 修复 SET SESSION AUTHORIZATION 与 SET ROLE 之间意外的交互
- 相同变化PostgreSQL 12.21 · 修复 SET SESSION AUTHORIZATION 与 SET ROLE 之间意外的交互
安全防止受信任的 PL/Perl 代码更改环境变量
问题修复修复在附加或分离表分区时外键约束的目录状态更新
变更
修复在附加或分离表分区时外键约束的目录状态更新(Jehan-Guillaume de Rorthais,Tender Wang,Álvaro Herrera)§
如果被引用表是分区表,则独立的引用表与作为分区的引用表需要不同的目录条目。ATTACH/DETACH PARTITION 命令未能正确执行此转换。特别是在 DETACH 之后,现在独立的表将缺少外键强制触发器,这可能导致该表后来包含违反外键约束的行。随后的重新 ATTACH 也可能失败并产生令人意外的错误。
修复方法是对现在独立的表的每个有问题的约束执行 ALTER TABLE DROP CONSTRAINT,然后重新添加该约束。如果重新添加约束失败,说明已经有错误数据混入。需要手动恢复引用表和被引用表之间的一致性,然后重新添加约束。
以下查询可用于识别损坏的约束,并构造重建它们所需的命令:
SELECT conrelid::pg_catalog.regclass AS "constrained table",
conname AS constraint,
confrelid::pg_catalog.regclass AS "references",
pg_catalog.format('ALTER TABLE %s DROP CONSTRAINT %I;',
conrelid::pg_catalog.regclass, conname) AS "drop",
pg_catalog.format('ALTER TABLE %s ADD CONSTRAINT %I %s;',
conrelid::pg_catalog.regclass, conname,
pg_catalog.pg_get_constraintdef(oid)) AS "add"
FROM pg_catalog.pg_constraint c
WHERE contype = 'f' AND conparentid = 0 AND
(SELECT count(*) FROM pg_catalog.pg_constraint c2
WHERE c2.conparentid = c.oid) <>
((SELECT count(*) FROM pg_catalog.pg_inherits i
WHERE (i.inhparent = c.conrelid OR i.inhparent = c.confrelid) AND
EXISTS (SELECT 1 FROM pg_catalog.pg_partitioned_table
WHERE partrelid = i.inhparent)) +
CASE WHEN pg_catalog.pg_partition_root(conrelid) = confrelid THEN
(SELECT count(*) FROM pg_catalog.pg_partition_tree(confrelid)
WHERE level = 1)
ELSE 0 END);
由于一个或多个 ADD CONSTRAINT 步骤可能会失败,应将查询输出保存到文件中,然后尝试执行每个步骤。
问题修复避免在对分区表的查询与 DETACH CONCURRENTLY 及随后立即删除分区并发执行时,可能发生的崩溃和 “could not open relation” 错误
改进如果要附加的表具有引用该分区表的外键,则禁止 ALTER TABLE ATTACH PARTITION
变更
关联记录 (4)
改进当查询中键列的排序规则与分区键的排序规则不匹配时,不使用分区级连接或分组
变更
关联记录 (5)
问题修复修复当 UNION ALL 成员查询的输出需要排序,且排序列为表达式时,可能出现的 “could not find pathkey item to sort” 错误
变更
修复当 UNION ALL 成员查询的输出需要排序,且排序列为表达式时,可能出现的 “could not find pathkey item to sort” 错误(Andrei Lepikhov,Tom Lane)§
关联记录 (4)
- 相同变化PostgreSQL 17.1 · 修复当 UNION ALL 成员查询的输出需要排序,且排序列为表达式时,可能出现的 “could not find pathkey item to sort” 错误
- 相同变化PostgreSQL 16.5 · 修复当 UNION ALL 成员查询的输出需要排序,且排序列为表达式时,可能出现的 “could not find pathkey item to sort” 错误
- 相同变化PostgreSQL 15.9 · 修复当 UNION ALL 成员查询的输出需要排序,且排序列为表达式时,可能出现的 “could not find pathkey item to sort” 错误
- 相同变化PostgreSQL 13.17 · 修复当 UNION ALL 成员查询的输出需要排序,且排序列为表达式时,可能出现的 “could not find pathkey item to sort” 错误
改进允许取消大型 hash 索引构建第二阶段的操作
变更
允许取消大型 hash 索引构建第二阶段的操作(Pavel Borisov)§
问题修复修复 COPY (query) TO ... 中的断言失败或令人困惑的错误消息,当 query 被 DO INSTEAD NOTIFY 规则重写时
变更
修复 COPY ( 中的断言失败或令人困惑的错误消息,当 query) TO ...query 被 DO INSTEAD NOTIFY 规则重写时(Tender Wang,Tom Lane)§
关联记录 (5)
- 相同变化PostgreSQL 17.1 · 修复 COPY (query) TO ... 中的断言失败或令人困惑的错误消息,当 query 被 DO INSTEAD NOTIFY 规则重写时
- 相同变化PostgreSQL 16.5 · 修复 COPY (query) TO ... 中的断言失败或令人困惑的错误消息,当 query 被 DO INSTEAD NOTIFY 规则重写时
- 相同变化PostgreSQL 15.9 · 修复 COPY (query) TO ... 中的断言失败或令人困惑的错误消息,当 query 被 DO INSTEAD NOTIFY 规则重写时
- 相同变化PostgreSQL 13.17 · 修复 COPY (query) TO ... 中的断言失败或令人困惑的错误消息,当 query 被 DO INSTEAD NOTIFY 规则重写时
- 相同变化PostgreSQL 12.21 · 修复 COPY (query) TO ... 中的断言失败或令人困惑的错误消息,当 query 被 DO INSTEAD NOTIFY 规则重写时
问题修复修复并行哈希连接中倾斜数据的检测
变更
修复并行哈希连接中倾斜数据的检测(Thomas Munro)§
在对哈希连接的内侧进行重新分区(因为某个分区累积了过多元组)之后,我们会检查该分区的所有元组是否都进入了同一个子分区,这表明它们都具有相同的 hash 值,进一步重新分区无法改善情况。此检查在某些情况下出现故障,允许重复进行无效的重新分区,最终导致资源耗尽错误。
问题修复修复提交可串行化事务时的竞态条件
变更
修复提交可串行化事务时的竞态条件(Heikki Linnakangas)§
对最近提交的事务的错误处理可能导致断言失败或 “could not access status of transaction” 错误。
问题修复修复 COMMIT PREPARED 中导致产生孤立 2PC 文件的竞态条件
变更
修复 COMMIT PREPARED 中导致产生孤立 2PC 文件的竞态条件(wuchengwen)§
并发的 PREPARE TRANSACTION 可能导致 COMMIT PREPARED 不删除已完成事务的磁盘上两阶段状态文件。虽然没有立即的不良影响,但随后的崩溃恢复可能因 “could not access status of transaction” 而失败,需要手动删除孤立文件才能恢复服务。
关联记录 (5)
- 相同变化PostgreSQL 17.1 · 修复 COMMIT PREPARED 中导致产生孤立 2PC 文件的竞态条件
- 相同变化PostgreSQL 16.5 · 修复 COMMIT PREPARED 中导致产生孤立 2PC 文件的竞态条件
- 相同变化PostgreSQL 15.9 · 修复 COMMIT PREPARED 中导致产生孤立 2PC 文件的竞态条件
- 相同变化PostgreSQL 13.17 · 修复 COMMIT PREPARED 中导致产生孤立 2PC 文件的竞态条件
- 相同变化PostgreSQL 12.21 · 修复 COMMIT PREPARED 中导致产生孤立 2PC 文件的竞态条件
改进避免在 VACUUM FULL 期间跳过无效 toast 索引后发生无效内存访问
变更
避免在 VACUUM FULL 期间跳过无效 toast 索引后发生无效内存访问(Tender Wang)§
在此代码路径中,跟踪尚待重建索引的列表未被正确更新,可能导致后续的断言失败或崩溃。
关联记录 (5)
- 相同变化PostgreSQL 17.1 · 避免在 VACUUM FULL 期间跳过无效 toast 索引后发生无效内存访问
- 相同变化PostgreSQL 16.5 · 避免在 VACUUM FULL 期间跳过无效 toast 索引后发生无效内存访问
- 相同变化PostgreSQL 15.9 · 避免在 VACUUM FULL 期间跳过无效 toast 索引后发生无效内存访问
- 相同变化PostgreSQL 13.17 · 避免在 VACUUM FULL 期间跳过无效 toast 索引后发生无效内存访问
- 相同变化PostgreSQL 12.21 · 避免在 VACUUM FULL 期间跳过无效 toast 索引后发生无效内存访问
问题修复修复“就地”目录更新可能丢失的问题
改进在恢复结束时重置系统目录缓存
变更
在恢复结束时重置系统目录缓存(Noah Misch)§
这可以防止因使用系统目录缓存中的陈旧数据,而导致原地系统目录更新丢失的情况。
改进避免在持有中断抑制时使用并行查询
改进在处理 Bind 和 Execute 协议消息开始时,报告用于统计目的的活跃查询 ID
变更
在处理 Bind 和 Execute 协议消息开始时,报告用于统计目的的活跃查询 ID(Sami Imseih)§
这使得扩展查询协议中更多的工作可以归属于正确的查询。
改进防止在过度深层嵌套的 XML 输入中 libxml2 的栈溢出(Tom Lane,致谢 Nick Wellnhofer)
变更
防止在过度深层嵌套的 XML 输入中 libxml2 的栈溢出(Tom Lane,致谢 Nick Wellnhofer)§
使用 xmlXPathCtxtCompile() 而非 xmlXPathCompile(),因为后者在 2.13.4 之前的 libxml2 版本中未能保护自身免受递归到栈溢出的影响。
关联记录 (4)
- 相同变化PostgreSQL 16.5 · 防止在过度深层嵌套的 XML 输入中 libxml2 的栈溢出(Tom Lane,致谢 Nick Wellnhofer)
- 相同变化PostgreSQL 15.9 · 防止在过度深层嵌套的 XML 输入中 libxml2 的栈溢出(Tom Lane,致谢 Nick Wellnhofer)
- 相同变化PostgreSQL 13.17 · 防止在过度深层嵌套的 XML 输入中 libxml2 的栈溢出(Tom Lane,致谢 Nick Wellnhofer)
- 相同变化PostgreSQL 12.21 · 防止在过度深层嵌套的 XML 输入中 libxml2 的栈溢出(Tom Lane,致谢 Nick Wellnhofer)
改进不要忽略正在处理带有谓词或表达式的索引的并发 REINDEX CONCURRENTLY
变更
不要忽略正在处理带有谓词或表达式的索引的并发 REINDEX CONCURRENTLY(Michail Nikolaev)§
通常,REINDEX CONCURRENTLY 不需要等待其他表上的其他 REINDEX CONCURRENTLY 操作。但是,如果其他 REINDEX CONCURRENTLY 正在处理带有谓词或表达式的索引,则不应用此优化,因为这些表达式可能包含访问其他表的用户定义代码。粗心的编码造成了一个竞态条件,使得该规则未被统一应用,可能导致不一致的行为。
问题修复修复 EXPLAIN 中的 “failed to find plan for subquery/CTE” 错误
变更
修复 EXPLAIN 中的 “failed to find plan for subquery/CTE” 错误(Richard Guo,Tom Lane)§ §
当试图打印子查询的 RECORD 类型输出的字段引用,而该子查询已从执行计划中完全优化掉时(至少在具有常量为假的 WHERE 条件时可能发生),就会出现这种情况。执行计划中不再有任何内容可以标识原始字段名,因此回退到对第 N 个记录列打印 f。(如果记录输出来自 NROW() 构造器,这实际上也是正确的做法。)
关联记录 (4)
- 相同变化PostgreSQL 16.5 · 修复 EXPLAIN 中的 “failed to find plan for subquery/CTE” 错误
- 相同变化PostgreSQL 15.9 · 修复 EXPLAIN 中的 “failed to find plan for subquery/CTE” 错误
- 相同变化PostgreSQL 13.17 · 修复 EXPLAIN 中的 “failed to find plan for subquery/CTE” 错误
- 相同变化PostgreSQL 12.21 · 修复 EXPLAIN 中的 “failed to find plan for subquery/CTE” 错误
改进在更改生成列的类型时,禁止使用 USING 子句
变更
在更改生成列的类型时,禁止使用 USING 子句(Peter Eisentraut)§
生成列已经有一个指定列内容的表达式,因此包含 USING 没有意义。
改进在 pg_cursors 视图中忽略尚未定义的 Portal
变更
在 pg_cursors 视图中忽略尚未定义的 Portal(Tom Lane)§
用户定义的检查该视图的代码可能在新游标正在设置时被调用,如果发生这种情况,将导致空指针解引用。通过将该视图定义为排除未完全设置的游标来避免此问题。
改进避免在解码涉及插入列默认值的事务时出现 “unexpected table_index_fetch_tuple call during logical decoding” 错误
变更
避免在解码涉及插入列默认值的事务时出现 “unexpected table_index_fetch_tuple call during logical decoding” 错误(Takeshi Ideriha,Hou Zhijie)§ §
关联记录 (3)
- 相同变化PostgreSQL 17.1 · 避免在解码涉及插入列默认值的事务时出现 “unexpected table_index_fetch_tuple call during logical decoding” 错误
- 相同变化PostgreSQL 16.5 · 避免在解码涉及插入列默认值的事务时出现 “unexpected table_index_fetch_tuple call during logical decoding” 错误
- 相同变化PostgreSQL 15.9 · 避免在解码涉及插入列默认值的事务时出现 “unexpected table_index_fetch_tuple call during logical decoding” 错误
改进减少逻辑解码的内存消耗
变更
减少逻辑解码的内存消耗(Masahiko Sawada)§
使用较小的默认块大小来存储逻辑复制期间接收的元组数据。这减少了内存浪费,据报告在处理长时间运行的事务时内存浪费会很严重,甚至导致内存不足错误。
改进重新禁用无状态(TLSv1.2)会话票证的发送
变更
重新禁用无状态(TLSv1.2)会话票证的发送(Daniel Gustafsson)§
之前为防止发送有状态(TLSv1.3)会话票证所做的更改,意外地重新启用了无状态会话票证的发送。因此,虽然我们打算防止客户端认为支持 TLS 会话恢复,但某些客户端仍然这样认为了。
改进避免在删除具有大量 ACL(权限)条目的数据库时出现 “wrong tuple length” 错误
变更
改进允许在并行工作进程中调整 session_authorization 和 role 设置
变更
允许在并行工作进程中调整 session_authorization 和 role 设置(Tom Lane)§
我们的代码打算允许可修改的服务器设置通过函数 SET 子句来设置,但在并行工作进程中不允许其他方式。这两个设置的 SET 子句却失败了。
问题修复修复当 CALL 位于 PL/pgSQL 的 EXCEPTION 块中时,从 CALL 语句参数列表中调用的稳定函数的行为
变更
修复当 CALL 位于 PL/pgSQL 的 EXCEPTION 块中时,从 CALL 语句参数列表中调用的稳定函数的行为(Tom Lane)§
与我们之前季度发布中的类似修复一样,这种情况允许此类函数被传递错误的快照,导致它们看到自外部事务开始以来修改的行的过时值。
关联记录 (5)
- 相同变化PostgreSQL 17.1 · 修复当 CALL 位于 PL/pgSQL 的 EXCEPTION 块中时,从 CALL 语句参数列表中调用的稳定函数的行为
- 相同变化PostgreSQL 16.5 · 修复当 CALL 位于 PL/pgSQL 的 EXCEPTION 块中时,从 CALL 语句参数列表中调用的稳定函数的行为
- 相同变化PostgreSQL 15.9 · 修复当 CALL 位于 PL/pgSQL 的 EXCEPTION 块中时,从 CALL 语句参数列表中调用的稳定函数的行为
- 相同变化PostgreSQL 13.17 · 修复当 CALL 位于 PL/pgSQL 的 EXCEPTION 块中时,从 CALL 语句参数列表中调用的稳定函数的行为
- 相同变化PostgreSQL 12.21 · 修复当 CALL 位于 PL/pgSQL 的 EXCEPTION 块中时,从 CALL 语句参数列表中调用的稳定函数的行为
问题修复修复 PL/pgSQL 的 CALL 中边缘情况下的 “cache lookup failed for function” 错误
变更
修复 PL/pgSQL 的 CALL 中边缘情况下的 “cache lookup failed for function” 错误(Tom Lane)§
问题修复修复我们的备用(非 OpenSSL)MD5 实现在大端硬件上的线程安全问题
变更
修复我们的备用(非 OpenSSL)MD5 实现在大端硬件上的线程安全问题(Heikki Linnakangas)§
线程安全目前在服务器中不是问题,但对于 libpq 来说是个问题。
改进以与其他整数值选项相同的方式解析 libpq 的 keepalives 连接选项
变更
以与其他整数值选项相同的方式解析 libpq 的 keepalives 连接选项(Yuto Sasaki)§
此处使用的代码拒绝选项值中的尾部空白,与其他情况不同。这在 ecpg 的使用中被证明是有问题的。
关联记录 (5)
- 相同变化PostgreSQL 17.1 · 以与其他整数值选项相同的方式解析 libpq 的 keepalives 连接选项
- 相同变化PostgreSQL 16.5 · 以与其他整数值选项相同的方式解析 libpq 的 keepalives 连接选项
- 相同变化PostgreSQL 15.9 · 以与其他整数值选项相同的方式解析 libpq 的 keepalives 连接选项
- 相同变化PostgreSQL 13.17 · 以与其他整数值选项相同的方式解析 libpq 的 keepalives 连接选项
- 相同变化PostgreSQL 12.21 · 以与其他整数值选项相同的方式解析 libpq 的 keepalives 连接选项
改进避免在 ecpglib 中使用 pnstrdup()
变更
避免在 ecpglib 中使用 pnstrdup()(Jacob Champion)§
该函数在内存不足时会调用 exit(),这在库中是不可取的。调用代码已经正确地处理了分配失败。
问题修复修复 ecpglib 中解析不正确日期时间输入时的越界读取
变更
修复 ecpglib 中解析不正确日期时间输入时的越界读取(Bruce Momjian,Pavel Nekrasov)§
有可能试图读取常量数组起始位置之前的位置。不过实际影响似乎很小。
改进在 pg_rewind 的调试输出中包含源时间线历史
变更
在 pg_rewind 的调试输出中包含源时间线历史(Heikki Linnakangas)§
这本来就是设计意图,但由于编码错误,源历史总是打印为空。
问题修复修复 Windows 上关于连接点的行为异常,特别是在 pg_rewind 中
改进避免尝试在 vacuumdb 和并行 reindexdb 中重新索引临时表和索引
变更
避免尝试在 vacuumdb 和并行 reindexdb 中重新索引临时表和索引(VaibhaveS,Michael Paquier,Fujii Masao,Nathan Bossart)§ § §
重新索引其他会话的临时表是不可能的,但在某些代码路径中缺少跳过它们的检查,导致了不必要的失败。
关联记录 (5)
- 相同变化PostgreSQL 17.1 · 避免尝试在 vacuumdb 和并行 reindexdb 中重新索引临时表和索引
- 相同变化PostgreSQL 16.5 · 避免尝试在 vacuumdb 和并行 reindexdb 中重新索引临时表和索引
- 相同变化PostgreSQL 15.9 · 避免尝试在 vacuumdb 和并行 reindexdb 中重新索引临时表和索引
- 相同变化PostgreSQL 13.17 · 避免尝试在 vacuumdb 和并行 reindexdb 中重新索引临时表和索引
- 相同变化PostgreSQL 12.21 · 避免尝试在 vacuumdb 和并行 reindexdb 中重新索引临时表和索引
改进允许在 contrib/pageinspect 和 contrib/pgstattuple 的相关函数中检查序列关系
变更
允许在 contrib/pageinspect 和 contrib/pgstattuple 的相关函数中检查序列关系(Nathan Bossart,Ayush Vatsa)§ §
过去这是允许的,但在引入表的非默认访问方法时被破坏了。
关联记录 (4)
- 相同变化PostgreSQL 16.5 · 允许在 contrib/pageinspect 和 contrib/pgstattuple 的相关函数中检查序列关系
- 相同变化PostgreSQL 15.9 · 允许在 contrib/pageinspect 和 contrib/pgstattuple 的相关函数中检查序列关系
- 相同变化PostgreSQL 13.17 · 允许在 contrib/pageinspect 和 contrib/pgstattuple 的相关函数中检查序列关系
- 相同变化PostgreSQL 12.21 · 允许在 contrib/pageinspect 和 contrib/pgstattuple 的相关函数中检查序列关系
问题修复修复 ARM64 平台上不正确的 LLVM 生成代码
变更
修复 ARM64 平台上不正确的 LLVM 生成代码(Thomas Munro,Anthonin Bonnefoy)§
在 ARM 平台上使用 JIT 编译时,生成的代码无法支持超过 32 位的重定位距离,使得在大内存系统上不巧的代码放置可能导致服务器崩溃。
问题修复修复一些假设进程启动时间(表示为 time_t)能够放入 long 值的地方
变更
修复一些假设进程启动时间(表示为 time_t)能够放入 long 值的地方(Max Johnson,Nathan Bossart)§
在 long 为 32 位的平台上(尤其是 Windows),此代码将在 2038 年后失败。大多数失败看起来只是外观问题,但值得注意的是 pg_ctl start 会挂起。
关联记录 (5)
- 相同变化PostgreSQL 17.1 · 修复一些假设进程启动时间(表示为 time_t)能够放入 long 值的地方
- 相同变化PostgreSQL 16.5 · 修复一些假设进程启动时间(表示为 time_t)能够放入 long 值的地方
- 相同变化PostgreSQL 15.9 · 修复一些假设进程启动时间(表示为 time_t)能够放入 long 值的地方
- 相同变化PostgreSQL 13.17 · 修复一些假设进程启动时间(表示为 time_t)能够放入 long 值的地方
- 相同变化PostgreSQL 12.21 · 修复一些假设进程启动时间(表示为 time_t)能够放入 long 值的地方
改进防止在构建 PostgreSQL RPM 包时出现 “nothing provides perl(PostgreSQL::Test::Utils)” 错误
变更
防止在构建 PostgreSQL RPM 包时出现 “nothing provides perl(PostgreSQL::Test::Utils)” 错误(Noah Misch)§
问题修复修复在 Windows 上使用 Strawberry Perl 构建的问题
变更
修复在 Windows 上使用 Strawberry Perl 构建的问题(Andrew Dunstan)§
改进将时区数据文件更新为 tzdata 2024b 版本
变更
将时区数据文件更新为 tzdata 2024b 版本(Tom Lane)§ §
此 tzdata 版本将旧的 System-V 兼容性区域名称更改为与对应地理区域重复;例如 PST8PDT 现在是 America/Los_Angeles 的别名。主要可见后果是,对于标准化时区引入之前的时间戳,该区域被认为代表命名位置的本地平均太阳时。例如,在 PST8PDT 中,timestamptz 输入如 1801-01-01 00:00 之前会被渲染为 1801-01-01 00:00:00-08,但现在会被渲染为 1801-01-01 00:00:00-07:52:58。
另外,包含墨西哥、蒙古和葡萄牙的历史修正。值得注意的是,Asia/Choibalsan 现在是 Asia/Ulaanbaatar 的别名而非独立区域,主要是因为这些区域之间的差异被发现是基于不可靠的数据。
没有匹配的变化
尝试其他关键词,或 .
如何生成比较结果?
比较依据起始版本之后至目标版本的 PostgreSQL 发布说明。经核实的回补重复项会谨慎合并,保留每条原始说明;相关提交可能涉及独立变化,仍作为不同记录保留。
发布快照: 2026-09-26 · 安全快照: 2026-09-26
内容来自 PostgreSQL 发布说明。交互方式参考 pgversions.com 与 pgversionreport.