文档版本比较
POSTGRESQL · VERSION COMPARE
PostgreSQL 15.3 发布变化
此版本的完整功能、修复与兼容性说明,以及其他版本的关联记录。
包括起始版本之后至目标版本的变化。大版本号表示该分支的首个版本。
从数据库输出识别起始版本
完整发布变化
15.3
2023-05-11
15.3stable支持截止 2027-11-11
安全变化
| CVE / 问题 | 严重程度 | 修复版本 | 所选版本状态 |
|---|---|---|---|
| CVE-2023-2454 防止 CREATE SCHEMA 绕过 search_path 的更改 | 15.3 | 已记录修复 | |
| CVE-2023-2455 在内联集合返回函数后正确执行行级安全策略 | 15.3 | 已记录修复 |
PostgreSQL 15.3
迁移与兼容性
对于运行 15.X 的用户,不需要执行导出/恢复。
但是,如果你从早于 15.1 的版本升级,请参见第 E.19 节。
安全防止 CREATE SCHEMA 绕过 search_path 的更改
安全在内联集合返回函数后正确执行行级安全策略
变更
在内联集合返回函数后正确执行行级安全策略(Stephen Frost,Tom Lane)§
如果一个集合返回的 SQL 语言函数引用了具有行级安全策略的表,且该函数可以被内联到调用查询中,在某些涉及在不同角色下重用缓存计划的情况下,这些 RLS 策略将不会被正确执行。这可能允许用户查看或修改本应不可见的行。
PostgreSQL 项目感谢 Wolfgang Walther 报告此问题。(CVE-2023-2455)
问题修复修复使用 STRATEGY WAL_LOG 选项执行 CREATE DATABASE 后模板(源)数据库可能损坏的问题
变更
修复使用 STRATEGY WAL_LOG 选项执行 CREATE DATABASE 后模板(源)数据库可能损坏的问题(Nathan Bossart,Ryo Matsumura)§
不正确的缓冲区处理带来了风险:之后对模板的 pg_class 目录的任何修改都可能丢失。
问题修复修复使用 STRATEGY WAL_LOG 选项执行 CREATE DATABASE 时的内存泄漏和不必要的磁盘读取
变更
修复使用 STRATEGY WAL_LOG 选项执行 CREATE DATABASE 时的内存泄漏和不必要的磁盘读取(Andres Freund)§
问题修复避免在 CREATE SCHEMA 中省略新模式名称时发生崩溃
变更
避免在 CREATE SCHEMA 中省略新模式名称时发生崩溃(Michael Paquier)§
SQL 标准允许编写 CREATE SCHEMA AUTHORIZATION ,其中模式名称默认为 owner_nameowner_name。然而某些代码路径期望模式名称存在,因此会失败。
问题修复修复 MERGE 命令的各种规划器故障
问题修复修复 MERGE 在某些边界情况下报告的行数
问题修复修复 MERGE 在并发更新时的问题
改进增加对 MERGE 命令反编译的支持
变更
增加对 MERGE 命令反编译的支持(Álvaro Herrera)§
这在添加 MERGE 时被遗漏了,但它是在新式 SQL 函数中支持 MERGE 所必需的。
问题修复修复分区表中外键触发器的启用/禁用问题
变更
修复分区表中外键触发器的启用/禁用问题(Tom Lane)§
ALTER TABLE ... ENABLE/DISABLE TRIGGER 在应用于分区表的外键约束触发器时会失败,因为它试图按名称定位分区的克隆触发器,而它们的名称并不相同。改为按父触发器 OID 定位。
改进禁止修改存储在索引中的复合类型
变更
禁止修改存储在索引中的复合类型(Tom Lane)§
ALTER TYPE 不允许对存储在任何表列中的复合类型进行非二进制兼容的修改。(也许将来会允许,但目前还没有实现;重写大量表的锁定影响令人生畏。)我们忽略了索引可能包含不在其所属表中出现的复合类型的情况。
改进禁止将系统列作为外键的元素
变更
禁止将系统列作为外键的元素(Tom Lane)§
自从 OID 被移除作为系统列以来,这样做没有合理的使用场景,并且各种代码不再支持它。与其试图修复所有情况,不如直接禁止。
改进确保对启用了 RLS 的父表执行 COPY TO 时不会从子表中复制任何行
变更
确保对启用了 RLS 的父表执行 COPY TO 时不会从子表中复制任何行(Antonin Houska)§
文档明确说明 COPY TO 仅从指定的表中复制行,不包括它可能拥有的任何继承子表。然而,如果该表启用了行级安全,则此行为将不再成立。
问题修复避免在向 array_position() 或 array_positions() 传递空数组时可能发生的崩溃
变更
避免在向 array_position() 或 array_positions() 传递空数组时可能发生的崩溃(Tom Lane)§
关联记录 (4)
- 相同变化PostgreSQL 14.8 · 避免在向 array_position() 或 array_positions() 传递空数组时可能发生的崩溃
- 相同变化PostgreSQL 13.11 · 避免在向 array_position() 或 array_positions() 传递空数组时可能发生的崩溃
- 相同变化PostgreSQL 12.15 · 避免在向 array_position() 或 array_positions() 传递空数组时可能发生的崩溃
- 相同变化PostgreSQL 11.20 · 避免在向 array_position() 或 array_positions() 传递空数组时可能发生的崩溃
问题修复修复 to_char() 中可能的越界读取问题
变更
修复 to_char() 中可能的越界读取问题(Tom Lane)§
运气不好的情况下,这可能导致服务器崩溃。
改进避免 translate() 函数中的缓冲区越界读取
变更
避免 translate() 函数中的缓冲区越界读取(Daniil Anisimov)§
使用删除功能时,该函数可能会读取输入字符串之后的一个字节,从而产生少量崩溃风险。
改进调整文本检索相关的字符分类逻辑,以正确检测当前区域设置是否为 C
变更
调整文本检索相关的字符分类逻辑,以正确检测当前区域设置是否为 C(Jeff Davis)§
当数据库的默认排序规则使用 ICU 时,此代码会出现混乱。
问题修复避免在 interval 类型输入为空时可能发生的崩溃
变更
避免在 interval 类型输入为空时可能发生的崩溃(Tom Lane)§
改进重新允许 ISO-8601 时间间隔字段中的指数表示法
变更
重新允许 ISO-8601 时间间隔字段中的指数表示法(Tom Lane)§
像 P0.1e10D 这样的时间间隔输入并未被 ISO-8601 正式认可,但在版本 15 之前我们长期接受它,因此重新允许它。
问题修复修复 JSON 字符串字面量中解析错误时的错误光标设置
变更
修复 JSON 字符串字面量中解析错误时的错误光标设置(Tom Lane)§
在 JSON 值中的字符串字面量中检测到语法错误的大多数情况下,未能正确设置错误光标。这至少会导致无用的错误消息(指向字符串之前的标记,而不是实际的问题位置),在 v14 及更高版本中甚至可能导致崩溃。
问题修复修复由于 vacuum_defer_cleanup_age 大于当前 64 位 xid 而导致的数据损坏
变更
修复由于 vacuum_defer_cleanup_age 大于当前 64 位 xid 而导致的数据损坏(Andres Freund)§
在 v14 及更高版本中,使用非默认的 vacuum_defer_cleanup_age 设置时,可能会计算出一个非常大的 vacuum 清理范围 xid,导致 vacuum 删除仍然存活的行。v12 和 v13 存在同一问题的较轻形式,仅影响 GiST 索引,可能导致索引页被过早回收。
问题修复修复解析器在某些不正确嵌套聚合的情况下未能检测到的问题
变更
修复解析器在某些不正确嵌套聚合的情况下未能检测到的问题(Tom Lane)§
这一疏忽可能导致执行器对本应作为无效查询被拒绝的查询执行失败。
问题修复修复解析序列 SEQUENCE NAME 选项时的数据结构损坏
变更
修复解析序列 SEQUENCE NAME 选项时的数据结构损坏(David Rowley)§
如果事件触发器捕获了损坏的解析树,可能会导致问题。
改进在将初始计划从一个节点移动到另一个节点时,正确更新计划节点的并行安全标记
变更
在将初始计划从一个节点移动到另一个节点时,正确更新计划节点的并行安全标记(Tom Lane)§
这一规划器疏忽可能导致运行时出现 “subplan was not initialized” 错误。
改进避免扩展统计代码中 PlaceHolderVar 的处理失败
变更
避免扩展统计代码中 PlaceHolderVar 的处理失败(Tom Lane)§
使用依赖类型的扩展统计可能会失败,并出现 “PlaceHolderVar found where not expected” 错误。
关联记录 (1)
问题修复修复对应用于子查询的 qual 子句能否在子查询内转换为窗口聚合“运行条件”的不正确测试
变更
修复对应用于子查询的 qual 子句能否在子查询内转换为窗口聚合“运行条件”的不正确测试(David Rowley)§
此类子句中的 SubPlan 会导致断言失败或不正确的结果,其他一些不常见的情况也会如此。
改进当调用包含子查询时,禁用窗口聚合的逆转换优化
变更
当调用包含子查询时,禁用窗口聚合的逆转换优化(David Rowley)§
此优化要求聚合的参数表达式具有可重复的结果,而子查询可能不满足此条件。
问题修复修复嵌套 ARRAY[] 构造在执行中的疏忽
变更
修复嵌套 ARRAY[] 构造在执行中的疏忽(Alexander Lakhin,Tom Lane)§
正确检测结果数组所需总空间的溢出,避免因输出分配不足而可能导致的崩溃。同时确保结果数组中任何尾部填充空间被清零;虽然在大多数情况下留下垃圾数据是无害的,但可能会导致后续出现奇怪的行为。
问题修复防止在更新复合类型域数组列中的字段时发生崩溃
变更
防止在更新复合类型域数组列中的字段时发生崩溃(Dmitry Dolgov)§
问题修复修复布尔列分区剪枝逻辑
变更
修复布尔列分区剪枝逻辑(David Rowley)§
使用 boolcol IS NOT TRUE 条件进行裁剪时处理不正确,可能导致不返回 boolcol 为 NULL 的行。此外,按 NOT boolcol 进行分区这种不太可能的情况也处理不正确。
问题修复修复并行哈希连接中每批次清理时的竞态条件
变更
修复并行哈希连接中每批次清理时的竞态条件(Thomas Munro,Melanie Plageman)§
在时机不巧且 parallel_leader_participation = off(非默认值)的情况下,可能发生崩溃。
改进在 EvalPlanQual 检查后重新计算 GENERATED 列
变更
在 EvalPlanQual 检查后重新计算 GENERATED 列(Tom Lane)§
在 READ COMMITTED 隔离模式下,行更新的效果可能需要重新应用到比查询最初找到的更新版本的行上。如果是这样,我们需要重新计算任何 GENERATED 列,以防它们依赖于被并发更新所更改的列。
问题修复修复 Memoize 计划执行中的内存泄漏
问题修复修复在分区树中包含的外部表使用批量插入时的缓冲区钉住计数泄漏
改进恢复对亚毫秒级 vacuum_cost_delay 设置的支持
变更
恢复对亚毫秒级 vacuum_cost_delay 设置的支持(Thomas Munro)§
改进当表具有值为零的每表 vacuum_cost_delay 设置时,不进行 vacuum 代价延迟均衡
变更
当表具有值为零的每表 vacuum_cost_delay 设置时,不进行 vacuum 代价延迟均衡(Masahiko Sawada)§
延迟均衡应该在 autovacuum 处理具有每表 vacuum_cost_delay 设置的表时被禁用,但这仅对正值生效,而不对零值生效。
问题修复修复在视图末尾添加列时的极端情况崩溃
变更
修复在视图末尾添加列时的极端情况崩溃(Tom Lane)§
问题修复修复分区更新中 MULTIEXPR_SUBLINK 子计划的罕见失败
变更
修复分区更新中 MULTIEXPR_SUBLINK 子计划的罕见失败(Andres Freund,Tom Lane)§
使用语法 INSERT ... ON CONFLICT DO UPDATE SET (c1, ...) = (SELECT ...) 并以分区表作为目标表时,如果任何子表与父表不一致(例如,物理列顺序不同),可能导致失败。这通常表现为执行器中一致性检查的失败;但也可能导致崩溃或不正确的数据更新。
问题修复修复在具有 DO ALSO INSERT ... SELECT 规则的视图上执行多行 INSERT ... VALUES 查询时 DEFAULT 标记的处理
变更
修复在具有 DO ALSO INSERT ... SELECT 规则的视图上执行多行 INSERT ... VALUES 查询时 DEFAULT 标记的处理(Dean Rasheed)§
此类情况通常会出现 “unrecognized node type” 错误或断言失败。
关联记录 (4)
- 相同变化PostgreSQL 14.8 · 修复在具有 DO ALSO INSERT ... SELECT 规则的视图上执行多行 INSERT ... VALUES 查询时 DEFAULT 标记的处理
- 相同变化PostgreSQL 13.11 · 修复在具有 DO ALSO INSERT ... SELECT 规则的视图上执行多行 INSERT ... VALUES 查询时 DEFAULT 标记的处理
- 相同变化PostgreSQL 12.15 · 修复在具有 DO ALSO INSERT ... SELECT 规则的视图上执行多行 INSERT ... VALUES 查询时 DEFAULT 标记的处理
- 相同变化PostgreSQL 11.20 · 修复在具有 DO ALSO INSERT ... SELECT 规则的视图上执行多行 INSERT ... VALUES 查询时 DEFAULT 标记的处理
改进支持在规则动作的子查询中引用 OLD 和 NEW
变更
支持在规则动作的子查询中引用 OLD 和 NEW(Dean Rasheed,Tom Lane)§
此类引用实际上是横向引用,但如果子查询没有显式标记 LATERAL,服务器可能会崩溃。安排在必要时隐式添加该标记。
问题修复在反编译包含 WITH 中 INSERT/UPDATE/DELETE 的规则或 SQL 函数体时,注意打印目标表的正确别名
变更
在反编译包含 WITH 中 INSERT/UPDATE/DELETE 的规则或 SQL 函数体时,注意打印目标表的正确别名(Tom Lane)§
关联记录 (4)
- 相同变化PostgreSQL 14.8 · 在反编译包含 WITH 中 INSERT/UPDATE/DELETE 的规则或 SQL 函数体时,注意打印目标表的正确别名
- 相同变化PostgreSQL 13.11 · 在反编译包含 WITH 中 INSERT/UPDATE/DELETE 的规则或 SQL 函数体时,注意打印目标表的正确别名
- 相同变化PostgreSQL 12.15 · 在反编译包含 WITH 中 INSERT/UPDATE/DELETE 的规则或 SQL 函数体时,注意打印目标表的正确别名
- 相同变化PostgreSQL 11.20 · 在反编译包含 WITH 中 INSERT/UPDATE/DELETE 的规则或 SQL 函数体时,注意打印目标表的正确别名
问题修复修复 SERIALIZABLE READ ONLY 优化中的问题
问题修复避免 pgoutput 逻辑解码插件中的缓存回调槽泄漏
变更
避免 pgoutput 逻辑解码插件中的缓存回调槽泄漏(Shi Yu)§
在单个会话中多次启动和关闭该插件最终会导致 “out of relcache_callback_list slots” 错误。
改进避免对索引操作符类选项的自定义验证器进行不必要的调用
变更
避免对索引操作符类选项的自定义验证器进行不必要的调用(Alexander Korotkov)§
此更改修复了某些情况下抛出意外错误的问题。
改进避免在使用多个扫描键扫描多列 BRIN 索引时进行无用的工作
变更
避免在使用多个扫描键扫描多列 BRIN 索引时进行无用的工作(Tomas Vondra)§
现有代码在决定范围是否匹配时实际上只考虑了最后一个扫描键,因此通常扫描的索引范围比实际需要的多。
关联记录 (1)
问题修复修复 BRIN inet_minmax_multi_ops 操作符类中的网络掩码处理
变更
修复 BRIN inet_minmax_multi_ops 操作符类中的网络掩码处理(Tomas Vondra)§
此错误在启用断言的构建中会触发断言失败,但在生产构建中基本无害。
问题修复修复在缓冲构建 GiST 索引期间对悬空指针的解引用
变更
修复在缓冲构建 GiST 索引期间对悬空指针的解引用(Alexander Lakhin)§
此错误在生产构建中通常是无害的,因为获取的值并不关键;但原则上可能导致服务器崩溃。
改进在逻辑复制更新或删除操作期间忽略已删除列和生成列
变更
问题修复修正提交时间戳的 SLRU 缓冲区 I/O 等待事件的名称
变更
修正提交时间戳的 SLRU 缓冲区 I/O 等待事件的名称(Alexander Lakhin)§
根据文档,此等待事件名为 CommitTsBuffer,但代码中为 CommitTSBuffer。将代码改为与文档一致,因为这样与相关等待事件的命名更加一致。
改进重新激活等待事件 SLRUFlushSync 的报告
改进避免在计算要保留多少 WAL 段时可能发生的下溢
变更
避免在计算要保留多少 WAL 段时可能发生的下溢(Kyotaro Horiguchi)§
这可能导致无法准确遵守 wal_keep_size 设置。
改进在备库模式下禁用启动进度报告的开销
变更
在备库模式下禁用启动进度报告的开销(Bharath Rupireddy)§
在备库模式下,我们实际上不报告恢复进度,但却仍在做跟踪工作。
改进支持使用 SCRAM-SHA-256 通道绑定的 RSA-PSS 证书
变更
支持使用 SCRAM-SHA-256 通道绑定的 RSA-PSS 证书(Jacob Champion,Heikki Linnakangas)§
此功能需要使用 OpenSSL 1.1.1 或更新版本构建。服务器和 libpq 都受到影响。
改进避免在 Windows 上进程 ID 跟踪的竞态条件
问题修复修复 list_copy_head() 在空 List 上的正确工作
变更
修复 list_copy_head() 在空 List 上的正确工作(David Rowley)§
目前没有已知的 PostgreSQL 核心代码会触发此情况,但扩展可能依赖于它的正确工作。
改进为 SPI_result_code_string() 添加缺失的分支
变更
为 SPI_result_code_string() 添加缺失的分支(Dean Rasheed)§
问题修复修复 AllocSetRealloc() 中错误的 Valgrind 标记
变更
修复 AllocSetRealloc() 中错误的 Valgrind 标记(Karina Litskevich)§
在大型(>8kB)palloc 块的大小被减小这种不常见的情况下,启用 Valgrind 的构建会错误标记从块中释放的内存的已定义状态,可能在 Valgrind 测试期间导致不正确的结果。
问题修复修复对启用了行级安全的分区表执行 MERGE 时的断言失败
变更
修复对启用了行级安全的分区表执行 MERGE 时的断言失败(Dean Rasheed)§
改进避免在解码事务性逻辑复制消息时发生断言失败
变更
避免在解码事务性逻辑复制消息时发生断言失败(Tomas Vondra)§
改进避免在处理正则表达式转义时的区域设置敏感性
变更
避免在处理正则表达式转义时的区域设置敏感性(Jeff Davis)§
反斜杠后跟非 ASCII 字符有时会导致断言失败,具体取决于当前的区域设置。
改进避免在 log_newpage_range() 中当指定范围内最后几个页面为空时尝试写入空 WAL 记录
变更
避免在 log_newpage_range() 中当指定范围内最后几个页面为空时尝试写入空 WAL 记录(Matthias van de Meent)§
目前尚不完全清楚此情况在已发布的分支中是否可达,但如果可达则可能发生断言失败。
关联记录 (4)
问题修复修复使用类型转换表达式的 plpgsql DO 块中的会话生命周期内存泄漏
变更
修复使用类型转换表达式的 plpgsql DO 块中的会话生命周期内存泄漏(Ajit Awekar,Tom Lane)§
改进加强将 Perl 列表结构转换为多维 SQL 数组时的数组维度检查
变更
加强将 Perl 列表结构转换为多维 SQL 数组时的数组维度检查(Tom Lane)§
当子列表的嵌套不一致,使得数据不能表示值的矩形数组时, plperl 可能会出现异常行为。此类情况现在会产生错误,但之前可能导致崩溃或产生垃圾输出。
改进加强将 Python 列表结构转换为多维 SQL 数组时的数组维度检查
问题修复修复 plpython 中异常栈的展开
变更
修复 plpython 中异常栈的展开(Xing Guo)§
某些罕见的失败情况可能在未清理 PG_TRY 异常栈的情况下返回,如果在下一个栈层级被展开之前引发另一个错误,则有崩溃风险。
问题修复修复 libpq 的 PQconnectPoll() 中不一致的 GSS 加密错误处理
变更
修复 libpq 的 PQconnectPoll() 中不一致的 GSS 加密错误处理(Michael Paquier)§
当 gssencmode 设置为 require 时,GSS 初始化失败后连接未被标记为已断开。使其立即失败,与 TLS 加密的等效情况长期以来的行为一致。
问题修复修复使用 -C ORACLE 选项构建的 ecpg 程序中可能的数据损坏
变更
修复使用 -C ORACLE 选项构建的 ecpg 程序中可能的数据损坏(Kyotaro Horiguchi)§
当 ecpg_get_data() 被调用时 varcharsize 设置为零,它可能会将终止零字符写入前一个字段的最后一个字节,从而截断该字段中的数据。
问题修复修复 pg_dump,使得在枚举类型列上进行 hash 分区的分区表可以成功恢复
变更
修复 pg_dump,使得在枚举类型列上进行 hash 分区的分区表可以成功恢复(Tom Lane)§
由于枚举值的 hash 码依赖于分配给枚举的 OID,在导出和恢复后它们通常是不同的,这意味着行往往需要进入与原来不同的分区。用户可以通过指定 --load-via-partition-root 选项来解决此问题;但由于不使用该选项几乎不可能成功,因此让 pg_dump 对此类表自动应用该选项。
同时,修复 pg_restore,使其在使用 --load-via-partition-root 模式时不再尝试在恢复前 TRUNCATE 目标表。这避免了死锁和数据丢失的风险。
改进在 Windows 上正确检测不可定位的文件
改进在 pgbench 的 “prepared” 模式下,在启动管线之前准备好管线中的所有命令
变更
在 pgbench 的 “prepared” 模式下,在启动管线之前准备好管线中的所有命令(Álvaro Herrera)§
这避免了当 pgbench 脚本尝试在管线内部启动可串行化事务时出现的失败。
改进在 contrib/amcheck 的堆检查代码中,正确处理 xmin 或 xmax 为零的元组
变更
改进在 contrib/amcheck 中,合理处理看起来在纪元零之前的 xid
变更
在 contrib/amcheck 中,合理处理看起来在纪元零之前的 xid(Andres Freund)§
在损坏的情况下,我们可能会看到一个回卷的 32 位 xid,看起来在第一个 xid 纪元之前。将这样的值提升为 64 位形式会产生一个远在未来的值,导致错误的报告。在此类情况下返回 FirstNormalFullTransactionId,以便行为合理正常。
改进在 contrib/basebackup_to_shell 中,正确检测打开管道失败
变更
在 contrib/basebackup_to_shell 中,正确检测打开管道失败(Robert Haas)§
问题修复在 contrib/hstore_plpython 中,如果要转换的 Python 值不是映射类型则避免崩溃
变更
在 contrib/hstore_plpython 中,如果要转换的 Python 值不是映射类型则避免崩溃(Dmitry Dolgov,Tom Lane)§
这应该产生一个错误,但 Python 3 更改了一些 API,导致检查出现异常行为,从而引发崩溃。
关联记录 (4)
- 相同变化PostgreSQL 14.8 · 在 contrib/hstore_plpython 中,如果要转换的 Python 值不是映射类型则避免崩溃
- 相同变化PostgreSQL 13.11 · 在 contrib/hstore_plpython 中,如果要转换的 Python 值不是映射类型则避免崩溃
- 相同变化PostgreSQL 12.15 · 在 contrib/hstore_plpython 中,如果要转换的 Python 值不是映射类型则避免崩溃
- 相同变化PostgreSQL 11.20 · 在 contrib/hstore_plpython 中,如果要转换的 Python 值不是映射类型则避免崩溃
改进要求 ltree 列上 GiST 索引的 siglen 选项(如果指定)必须是 4 的倍数
变更
要求 ltree 列上 GiST 索引的 siglen 选项(如果指定)必须是 4 的倍数(Alexander Korotkov)§
其他值会导致对索引内容的未对齐访问,这在 Intel 兼容硬件上是无害的,但在某些其他架构上可能导致崩溃。
改进在 contrib/pageinspect 中,为 gist_page_items() 函数增加对错误输入的防御
变更
在 contrib/pageinspect 中,为 gist_page_items() 函数增加对错误输入的防御(Dmitry Koval)§
问题修复修复 contrib/pg_trgm 在处理不可满足的正则表达式时的异常行为
变更
修复 contrib/pg_trgm 在处理不可满足的正则表达式时的异常行为(Tom Lane)§
如 $foo 这样的正则表达式是合法的但不可满足;正则表达式编译器会识别到这一点并生成一个空的 NFA 图。尝试将这样的图优化为 pg_trgm GIN 或 GiST 索引限定条件时,会导致访问工作数组末尾之外的内容,可能导致崩溃。
问题修复修复 contrib/postgres_fdw 的 application_name 参数中转义序列的处理
变更
修复 contrib/postgres_fdw 的 application_name 参数中转义序列的处理(Kyotaro Horiguchi,Michael Paquier)§
扩展这些转义序列的代码在后台进程中执行时可能会失败,例如在自动分析外部表时。
改进在 contrib/pg_walinspect 中,限制 pg_get_wal_records_info() 的内存使用
变更
在 contrib/pg_walinspect 中,限制 pg_get_wal_records_info() 的内存使用(Bharath Rupireddy)§
改进在使用 GNU 兼容的 strip 剥离静态库时使用 --strip-unneeded 选项
变更
在使用 GNU 兼容的 strip 剥离静态库时使用 --strip-unneeded 选项(Tom Lane)§
之前,make install-strip 在这种情况下使用 -x 选项。此更改避免了 llvm-strip 的异常行为,同时也能产生稍小的输出。
改进停止推荐自动下载 DTD 文件用于构建文档,并实际禁用该功能
变更
停止推荐自动下载 DTD 文件用于构建文档,并实际禁用该功能(Aleksander Alekseev,Peter Eisentraut,Tom Lane)§
现在似乎不再可能在没有本地安装 DocBook DTD 文件的情况下构建 SGML 文档。之前 xsltproc 可以从 sourceforge.net 即时下载这些文件;但 sourceforge.net 现在只允许 HTTPS 访问,而没有常见版本的 xsltproc 支持该协议。因此,移除了我们文档中建议这种做法是可能或有用的部分,改为在构建配方中添加 xsltproc 的 --nonet 选项。
改进在 PGXS 构建中运行 TAP 测试时,为临时 portlock 目录使用更合理的位置
变更
在 PGXS 构建中运行 TAP 测试时,为临时 portlock 目录使用更合理的位置(Peter Eisentraut)§
将其放置在构建目录下的 tmp_check 中。使用之前的代码,PGXS 构建会尝试将其放置在安装目录中,而该目录不一定是可写的。
改进将时区数据文件更新到 tzdata 版本 2023c,包含埃及、格陵兰、摩洛哥和巴勒斯坦的夏令时法规变更。
变更
将时区数据文件更新到 tzdata 版本 2023c,包含埃及、格陵兰、摩洛哥和巴勒斯坦的夏令时法规变更。(Tom Lane)§
在使用莫斯科时间时,Europe/Kirov 和 Europe/Volgograd 现在使用缩写 MSK/MSD 而不是数字缩写,以与其他使用莫斯科时间的时区保持一致。此外,America/Yellowknife 不再与 America/Edmonton 不同;这影响该地区 1948 年之前的一些时间戳。
关联记录 (4)
- 相同变化PostgreSQL 14.8 · 将时区数据文件更新到 tzdata 版本 2023c,包含埃及、格陵兰、摩洛哥和巴勒斯坦的夏令时法规变更。
- 相同变化PostgreSQL 13.11 · 将时区数据文件更新到 tzdata 版本 2023c,包含埃及、格陵兰、摩洛哥和巴勒斯坦的夏令时法规变更。
- 相同变化PostgreSQL 12.15 · 将时区数据文件更新到 tzdata 版本 2023c,包含埃及、格陵兰、摩洛哥和巴勒斯坦的夏令时法规变更。
- 相同变化PostgreSQL 11.20 · 将时区数据文件更新到 tzdata 2023c 版,以反映埃及、格陵兰、摩洛哥和巴勒斯坦的夏令时法规变更。
没有匹配的变化
尝试其他关键词,或 .
如何生成比较结果?
比较依据起始版本之后至目标版本的 PostgreSQL 发布说明。经核实的回补重复项会谨慎合并,保留每条原始说明;相关提交可能涉及独立变化,仍作为不同记录保留。
发布快照: 2026-09-26 · 安全快照: 2026-09-26
内容来自 PostgreSQL 发布说明。交互方式参考 pgversions.com 与 pgversionreport.