PostgreSQL 全球开发组针对当前所有被支持版本发布了一次更新,版本包括:18.3、17.9、16.13、15.17 和 14.22。这是一个非周期性版本,修复了上次更新发布后报告的几个回归问题。有关所有更改的完整列表,可查看发行说明。
错误修复和性能改进
本次更新修复了自上次发布以来报告的多个错误。以下列出的问题影响 PostgreSQL 18。其中一些问题也可能影响其他受支持的 PostgreSQL 版本。
- 修复备用进程停止并返回错误
"could not access status of transaction"的问题。
- 修复了当 non-ASCII 文本值来源于数据库列时,
substring()函数会引发"invalid byte sequence for encoding"错误的问题。此问题源于修复CVE-2026-2006时引入的变更。
- 修复了
pg_trgm中的strict_word_similarity函数可能导致输出错误或崩溃的问题。该问题源于修复 CVE-2026-2007 时的疏忽。
- 修复了
json_strip_nulls()与jsonb_strip_nulls()函数易变性问题,使其恢复为不可变状态(与先前版本一致),从而支持在索引中使用。如果你之前已升级到 PostgreSQL 18.0 至 18.2 版本,可参阅“Updating”部分中的其他步骤。
- 修复了
LATERAL UNION ALL子查询中可能导致错误查询输出的NOT NULL测试问题。
- 避免
NOT NULL约束条件与用户编写的约束条件产生名称冲突。
- 修复
pg_stat_get_backend_wait_event() 和 pg_stat_get_backend_wait_event_type()函数,使其能像pg_stat_activity一样报告辅助进程的值。
- 修复从 PL/pgSQL 函数返回复合类型变量的值时,将其强制转换为域类型的问题。
- 修复
hstore二进制输入函数,避免输入重复键时崩溃。
Updating
所有 PostgreSQL 更新版本均为累积更新。与其他小版本更新一样,用户无需转储并重新加载数据库,也无需使用pg_upgrade即可应用此更新版本;只需关闭 PostgreSQL 并更新其二进制文件即可。
如果你之前升级到过 PostgreSQL 18.0、18.1 或 18.2,则需要以 PostgreSQL superuser 身份在所有数据库中执行以下 SQL 语句,以使 json_strip_nulls()和jsonb_strip_nulls()函数不可变:
UPDATE pg_catalog.pg_proc SET provolatile = 'i' WHERE oid IN ('3261','3262');
还应在template0和template1数据库中执行此命令,确保未来在 PostgreSQL 集群中创建的数据库具有正确的函数易变性设置。更多信息可参阅 template databases 相关文档。
跳过一个或多个更新版本的用户可能需要执行额外的更新后步骤;有关详细信息,可参阅早期版本的发行说明。
更多详情可参阅发行说明。