PostgreSQL 全球开发组发布了对我们数据库系统所有受支持版本的更新,包括 13.4、12.8、11.13、10.18 和 9.6.23,以及 PostgreSQL 14 的第三个 Beta 版本。此次发布修复了一个安全漏洞,并解决了过去三个月报告的 75 多个错误。
有关更改的完整列表,请参阅 发行说明。
PostgreSQL 9.6 将于 2021 年 11 月 11 日停止接收修复。如果您在生产环境中使用 PostgreSQL 9.6,我们建议您计划升级到更新的、受支持的 PostgreSQL 版本。有关更多信息,请参阅我们的 版本策略。
受影响版本:11 - 13。
特意构造的查询可以读取服务器内存中的任意字节。在默认配置下,任何已认证的数据库用户都可以随时完成此攻击。该攻击不需要创建对象的权限。如果服务器设置包含 max_worker_processes=0,则已知版本的此攻击不可行。但是,未发现的攻击变体可能与该设置无关。
此次发布标志着 PostgreSQL 14 的第三个 Beta 版本,使社区离普遍可用性又近了一步,预计将于第三季度末推出。
本着开源 PostgreSQL 社区的精神,我们强烈鼓励您在数据库系统中测试 PostgreSQL 14 的新功能,以帮助我们消除可能存在的任何错误或其他问题。虽然我们不建议您在生产环境中使用 PostgreSQL 14 Beta 3,但我们鼓励您尝试使用此 Beta 版本运行典型的应用程序工作负载。
您的测试和反馈将帮助社区确保 PostgreSQL 14 版本能够保持我们提供世界上最先进的开源关系型数据库的稳定、可靠的标准。
此次更新还修复了过去几个月报告的 75 多个错误。其中一些问题仅影响版本 13,但许多问题影响所有受支持的版本。
部分修复包括:
COMMIT 或 ROLLBACK 后恢复 Portal 级别的快照。此更改修复了在 COMMIT/ROLLBACK 后立即尝试获取已压缩值时会因“没有已知的快照”或“toast 值缺失块号 0”等错误而失败的情况。WITH 中将查询重写为仅 NOTIFY 的情况,这会导致崩溃。ALTER EXTENSION 现在在添加或删除成员对象时锁定扩展。REFRESH MATERIALIZED VIEW CONCURRENTLY 生成的查询中的别名冲突。此命令在包含具有某些名称(尤其是 mv 和 newdata)的列的物化视图上会失败。GENERATED 表达式中不允许使用整行变量。DROP OWNED BY 在行级安全性 (RLS) 策略方面的行为进行了几次修复。CREATE COLLATION 命令中使用旧式 Windows 区域设置名称。pg_stat_activity 中显示,而不是仅显示最新的 SQL 命令。postgresql.conf 中相关条目被删除时,pg_settings.pending_restart 现在显示为 true。work_mem * hash_mem_multiplier 的有效值超过 2GB。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 引入了用于多范围类型的 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_upgrade 或 pg_dump / pg_restore)。有关更多信息,请访问有关 升级 的文档部分。
每个 PostgreSQL 版本的稳定性在很大程度上取决于您——社区——来测试即将发布的版本以及您的工作负载和测试工具,以便在 PostgreSQL 14 普遍可用之前发现错误和回归。由于这是一个 Beta 版本,数据库行为、功能细节和 API 的细微更改仍然可能发生。您的反馈和测试将有助于确定新功能的最终调整,因此请尽快进行测试。用户测试的质量有助于确定何时可以进行最终发布。
PostgreSQL Wiki 上公开提供了一份 未解决问题 列表。您可以使用 PostgreSQL 网站上的此表单 报告错误。
https://postgresql.ac.cn/account/submitbug/
这是 14 版本的第三个 Beta 版本。PostgreSQL 项目将根据测试需要发布其他 Beta 版本,随后发布一个或多个发布候选版本,直至 2021 年底的最终发布。有关更多信息,请参阅 Beta 测试 页面。