PostgreSQL 全球开发组已发布所有受支持的 PostgreSQL 版本的更新,包括 14.3、13.7、12.11、11.16 和 10.21。此版本修复了一个安全漏洞,并修复了过去三个月报告的 50 多个错误。
我们建议您尽早安装此更新。
如果您在列上使用了 ltree
数据类型的 GiST 索引,则需要在升级后重建索引。
有关更改的完整列表,请查看发行说明。
PostgreSQL 10 将于 2022 年 11 月 10 日停止接收修复。如果您在生产环境中运行 PostgreSQL 10,我们建议您计划升级到更新的、受支持的 PostgreSQL 版本。请查看我们的版本控制策略以获取更多信息。
受影响的版本:10 - 14。安全团队通常不会测试不受支持的版本,但这个问题相当老旧。
当特权用户维护另一个用户的对象时,自动清理、REINDEX
、CREATE INDEX
、REFRESH MATERIALIZED VIEW
、CLUSTER
和 pg_amcheck
在安全操作方面做得不完整。这些命令激活相关保护的时间太晚或根本没有激活。拥有在至少一个模式中创建非临时对象权限的攻击者可以以超级用户身份执行任意 SQL 函数。
虽然及时更新 PostgreSQL 是大多数用户最好的补救措施,但无法执行此操作的用户可以通过禁用自动清理、不手动运行上述命令以及不从 pg_dump
命令的输出还原数据来解决此漏洞。在这种解决方法下,性能可能会快速下降。VACUUM
是安全的,并且当受信任的用户拥有目标对象时,所有命令都可以正常运行。
PostgreSQL 项目感谢 Alexander Lakhin 报告此问题。
此更新修复了过去几个月报告的 50 多个错误。下面列出的问题会影响 PostgreSQL 14。其中一些问题也可能会影响其他受支持的 PostgreSQL 版本。
包含在此版本中
ltree
列上的 GiST 索引损坏的问题。升级后,您需要重建索引任何在 ltree
列上的 GiST 索引。tbl.*
)在 SELECT
列表的顶层之外生成的元组中的列名始终与关联的命名复合类型的列名关联(如果有的话)。如果您依赖以前的行为,发行说明详细说明了一种解决方法。interval
类型提取纪元值时出现的不正确的舍入问题。pg_stat_get_replication_slot(NULL)
时出现问题。table_to_xmlschema()
中类型 timestamptz
和 timetz
的不正确输出。SEARCH
或 CYCLE
功能的查询包含重复的公共表表达式 (WITH
) 名称,则计划器会失败的问题。ALTER FUNCTION
以支持在同一命令中更改函数的并行属性及其 SET
变量列表。CLUSTER
索引表行时出现的不正确排序。DROP TABLESPACE
和检查点之间的竞争条件,这可能会导致无法从表空间目录中删除所有无效文件。TRUNCATE
命令之后,崩溃恢复中可能出现的问题。_
作为自定义配置参数名称中的第一个字符。PANIC: xlog flush request is not satisfied
故障。max_sync_workers_per_subscription
限制时,可以重新启动逻辑复制应用工作线程。psql
、pg_dump
和 pg_amcheck
中使用 database.schema.table
模式。pageinspect
的多个修复,以提高整体稳定性。BEFORE INSERT ... FOR EACH ROW
触发器时,禁用 postgres_fdw
中的批量插入。此更新还包含巴勒斯坦 DST 法律变更的 tzdata 2022a 版本,以及智利和乌克兰的历史修正。
有关可用更改的完整列表,请查看发行说明。
所有 PostgreSQL 更新版本都是累积的。与其他次要版本一样,用户不需要转储和重新加载数据库或使用 pg_upgrade
来应用此更新版本;您可以简单地关闭 PostgreSQL 并更新其二进制文件。
但是,如果您在列上使用了 ltree
数据类型的 GiST 索引,则需要在升级后重建索引。
跳过一个或多个更新版本的用户可能需要运行其他更新后步骤;有关详细信息,请参阅早期版本的发行说明。
有关更多详细信息,请参阅发行说明。