2025年9月25日: PostgreSQL 18 发布!

PostgreSQL 13.4、12.8、11.13、10.18、9.6.23 和 14 Beta 3 发布!

发布于 2021-08-12,作者:PostgreSQL 全球开发组
PostgreSQL 项目 安全

PostgreSQL 全球开发组发布了对我们数据库系统所有受支持版本的更新,包括 13.4、12.8、11.13、10.18 和 9.6.23,以及 PostgreSQL 14 的第三个 Beta 版本。此次发布修复了一个安全漏洞,并解决了过去三个月报告的 75 多个错误。

有关更改的完整列表,请参阅 发行说明

PostgreSQL 9.6 生命周期即将结束

PostgreSQL 9.6 将于 2021 年 11 月 11 日停止接收修复。如果您在生产环境中使用 PostgreSQL 9.6,我们建议您计划升级到更新的、受支持的 PostgreSQL 版本。有关更多信息,请参阅我们的 版本策略

安全问题

CVE-2021-3677:某些查询中的内存泄露

受影响版本:11 - 13。

特意构造的查询可以读取服务器内存中的任意字节。在默认配置下,任何已认证的数据库用户都可以随时完成此攻击。该攻击不需要创建对象的权限。如果服务器设置包含 max_worker_processes=0,则已知版本的此攻击不可行。但是,未发现的攻击变体可能与该设置无关。

关于 PostgreSQL 14 Beta 的说明

此次发布标志着 PostgreSQL 14 的第三个 Beta 版本,使社区离普遍可用性又近了一步,预计将于第三季度末推出。

本着开源 PostgreSQL 社区的精神,我们强烈鼓励您在数据库系统中测试 PostgreSQL 14 的新功能,以帮助我们消除可能存在的任何错误或其他问题。虽然我们不建议您在生产环境中使用 PostgreSQL 14 Beta 3,但我们鼓励您尝试使用此 Beta 版本运行典型的应用程序工作负载。

您的测试和反馈将帮助社区确保 PostgreSQL 14 版本能够保持我们提供世界上最先进的开源关系型数据库的稳定、可靠的标准。

错误修复和改进

此次更新还修复了过去几个月报告的 75 多个错误。其中一些问题仅影响版本 13,但许多问题影响所有受支持的版本。

部分修复包括:

  • 完全禁用 TLS/SSL 重新协商。这之前已被禁用,但服务器仍会执行客户端发起的重新协商请求。
  • 在过程中的 COMMITROLLBACK 后恢复 Portal 级别的快照。此更改修复了在 COMMIT/ROLLBACK 后立即尝试获取已压缩值时会因“没有已知的快照”或“toast 值缺失块号 0”等错误而失败的情况。
  • 在持久化读取易变查询的光标输出时,避免出现错误行为。
  • 拒绝在 WITH 中将查询重写为仅 NOTIFY 的情况,这会导致崩溃。
  • 对数值类型进行了几次边角情况修复。
  • ALTER EXTENSION 现在在添加或删除成员对象时锁定扩展。
  • 分区表的触发器克隆到新分区时,现在会复制“enabled”状态。
  • 避免为 REFRESH MATERIALIZED VIEW CONCURRENTLY 生成的查询中的别名冲突。此命令在包含具有某些名称(尤其是 mvnewdata)的列的物化视图上会失败。
  • GENERATED 表达式中不允许使用整行变量。
  • DROP OWNED BY 在行级安全性 (RLS) 策略方面的行为进行了几次修复。
  • 重新允许在 CREATE COLLATION 命令中使用旧式 Windows 区域设置名称。
  • walsender 现在在其最新的复制命令在 pg_stat_activity 中显示,而不是仅显示最新的 SQL 命令。
  • postgresql.conf 中相关条目被删除时,pg_settings.pending_restart 现在显示为 true
  • 在 64 位 Windows 上,允许 work_mem * hash_mem_multiplier 的有效值超过 2GB。
  • 当 WAL 重放事务中止记录导致文件截断时,更新 WAL 的最小恢复点。
  • 在复制槽失效后,正确推进所需的 WAL 段的最新界限。这修复了服务器 WAL 存储空间可能耗尽的问题。
  • 改进并行 B-tree 索引构建的排序阶段的进度报告。
  • 修复了分区表更新的逻辑复制中以及触发分区表的 AFTER 触发器时的各种崩溃情况。
  • 防止 SP-GiST 索引插入时出现无限循环。
  • 确保 SP-GiST 索引插入可以通过查询取消请求终止。
  • psql 和其他客户端程序中,处理编码错误的数据时,避免超出字符串末尾。
  • 修复 pg_dump 以正确处理分区表上的触发器,这些触发器的 enabled 状态与其父触发器的状态不同。
  • pg_restore 处理在不同时区创建的文件时,避免出现“header 中创建日期无效”的警告。
  • pg_upgrade 现在会沿用旧安装的 oldestXID 值,并且不再强制执行反回滚 VACUUM
  • 扩展 pg_upgrade 以检测并警告应升级的扩展。
  • 修复 contrib/postgres_fdw 以更好地与生成列协同工作,只要远程表中的生成列代表远程表中的生成列。

有关所有可用更改的完整列表,请参阅 发行说明

更新

所有 PostgreSQL 更新版本都是累积的。与其他次要版本一样,用户无需转储和重新加载其数据库或使用 pg_upgrade 来应用此更新版本;您只需关闭 PostgreSQL 并更新其二进制文件即可。

跳过了一个或多个更新版本的用户可能需要执行额外的、更新后的步骤;有关详细信息,请参阅早期版本的发布说明。

有关更多详细信息,请参阅 发行说明

注意:PostgreSQL 9.6 将于 2021 年 11 月 11 日停止接收修复。有关更多信息,请参阅我们的 版本策略

PostgreSQL 14 Beta 3 说明

PostgreSQL 14 Beta 3 引入了用于多范围类型的 unnest 函数以及几项错误修复。

有关 PostgreSQL 14 Beta 3 中包含的更改列表,请参阅 已解决项目 页面

https://wiki.postgresql.ac.cn/wiki/PostgreSQL_14_Open_Items#resolved_before_14beta3

要从 Beta 2、Beta 1 或更早版本的 PostgreSQL 升级到 PostgreSQL 14 Beta 3,您将需要使用类似于升级 PostgreSQL 主版本之间的策略(例如 pg_upgradepg_dump / pg_restore)。有关更多信息,请访问有关 升级 的文档部分。

测试 Bug 和兼容性

每个 PostgreSQL 版本的稳定性在很大程度上取决于您——社区——来测试即将发布的版本以及您的工作负载和测试工具,以便在 PostgreSQL 14 普遍可用之前发现错误和回归。由于这是一个 Beta 版本,数据库行为、功能细节和 API 的细微更改仍然可能发生。您的反馈和测试将有助于确定新功能的最终调整,因此请尽快进行测试。用户测试的质量有助于确定何时可以进行最终发布。

PostgreSQL Wiki 上公开提供了一份 未解决问题 列表。您可以使用 PostgreSQL 网站上的此表单 报告错误

https://postgresql.ac.cn/account/submitbug/

Beta 时间表

这是 14 版本的第三个 Beta 版本。PostgreSQL 项目将根据测试需要发布其他 Beta 版本,随后发布一个或多个发布候选版本,直至 2021 年底的最终发布。有关更多信息,请参阅 Beta 测试 页面。

链接