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 后尝试立即获取 toasted 值时会发生 “no known snapshots” 或 “missing chunk number 0 for toast value” 等错误的情况。
  • 避免在持久化读取易失性查询的游标的输出时出现错误行为。
  • 拒绝 WITH 中的查询重写为仅 NOTIFY 的情况,这会导致崩溃。
  • 几个关于数字类型的边缘情况修复。
  • 当添加或删除成员对象时,ALTER EXTENSION 现在会锁定扩展。
  • 当分区表的触发器克隆到新分区时,现在会复制“enabled”状态。
  • 避免为 REFRESH MATERIALIZED VIEW CONCURRENTLY 生成的查询中的别名冲突。此命令在包含某些名称(特别是 mvnewdata)的列的物化视图上失败。
  • 不允许 GENERATED 表达式中的整行变量。
  • 几个与行级安全 (RLS) 策略相关的 DROP OWNED BY 行为的修复。
  • 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 存储空间可能会耗尽的问题。
  • 改进并行 B 树索引构建的排序阶段的进度报告。
  • 修复分区表更新的逻辑复制以及触发分区表 AFTER 触发器时的各种崩溃情况。
  • 防止 SP-GiST 索引插入中的无限循环。
  • 确保 SP-GiST 索引插入可以由查询取消请求终止。
  • psql 和其他客户端程序中,在处理无效编码的数据时,避免超出字符串的末尾。
  • 修复 pg_dump 以正确处理分区表上其启用状态与父触发器的状态不同的触发器。
  • 避免在不同时区创建的文件上运行 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)。有关更多信息,请访问文档部分中的升级

测试错误和兼容性

每个 PostgreSQL 版本的稳定性在很大程度上取决于您,社区,使用您的工作负载和测试工具测试即将推出的版本,以便在 PostgreSQL 14 正式发布之前找到错误和回归。由于这是一个 Beta 版本,数据库行为、功能细节和 API 仍有可能发生细微变化。您的反馈和测试将有助于确定新功能的最终调整,因此请在不久的将来进行测试。用户测试的质量有助于确定我们何时可以进行最终发布。

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

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

Beta 计划

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

链接