PostgreSQL 全球开发组发布了我们数据库系统所有受支持版本的更新,包括 12.4、11.9、10.14、9.6.19 和 9.5.23,以及 PostgreSQL 13 的第三个 Beta 版本。此次发布修复了两个安全漏洞,并纠正了过去三个月报告的 50 多个错误。
请您尽早计划更新。
受影响版本:10 - 12。
PostgreSQL 的 search_path 设置决定了搜索表、函数、运算符等的模式。 CVE-2018-1058 的修复导致大多数 PostgreSQL 提供的客户端应用程序对 search_path 进行清理,但逻辑复制却继续保持 search_path 不变。复制发布者或订阅者数据库的用户可以在 public 模式下创建对象,并利用这些对象在运行复制的身份(通常是超级用户)下执行任意 SQL 函数。采用已记录的安全 模式使用模式 的安装不受此漏洞影响。
PostgreSQL 项目感谢 Noah Misch 报告此问题。
CREATE EXTENSION 中存在未经控制的搜索路径元素。受影响版本:9.5 - 12。安全团队通常不测试不受支持的版本,但此问题存在已久。
当超级用户执行某些 CREATE EXTENSION 语句时,用户可能能够以该超级用户的身份执行任意 SQL 函数。攻击者必须有权限在新建扩展的模式或依赖扩展的模式中创建对象。并非所有扩展都容易受到攻击。
除了纠正 PostgreSQL 自带的扩展外,PostgreSQL 全球开发组还为第三方扩展作者发布了安全加固其工作的指导。
PostgreSQL 项目感谢 Andres Freund 报告此问题。
此版本是 PostgreSQL 13 的第三个 Beta 版本,标志着社区离秋季正式发布又近了一步。
本着 PostgreSQL 开源社区的精神,我们强烈建议您在数据库系统中测试 PostgreSQL 13 的新功能,以帮助我们消除可能存在的任何错误或其他问题。虽然我们不建议您在生产环境中运行 PostgreSQL 13 Beta 3,但我们鼓励您设法在 Beta 版本上运行典型的应用程序工作负载。
您的测试和反馈将帮助社区确保 PostgreSQL 13 版本保持我们提供世界上最先进的开源关系型数据库的稳定、可靠的发布标准。
PostgreSQL 9.5 将于 2021 年 2 月 11 日停止接收修复。如果您在生产环境中使用 PostgreSQL 9.5,我们建议您计划升级到更新的、受支持的 PostgreSQL 版本。有关更多信息,请参阅我们的 版本策略。
此次更新还修复了过去几个月报告的 50 多个错误。其中一些问题仅影响版本 12,但许多问题影响所有受支持的版本。
部分修复包括:
pg_replication_slot_advance() 现在会更新最旧的 xmin 和 LSN 值,因为未能执行此操作可能阻止资源(例如 WAL 文件)被清理。ts_headline() 中的性能回归。pg_read_file() 及其相关函数会读取直到到达 EOF,这修复了与管道和其他虚拟文件的兼容性问题。NaN 值,因为这些值在 SQL 和 JSON 中都不存在。NaN 输入的多个问题。这纠正了 PostgreSQL 12 中的一个更改,当时 NaN 值导致以下聚合函数发出 0 而不是 NaN 的值:corr()、covar_pop()、regr_intercept()、regr_r2()、regr_slope()、regr_sxx()、regr_sxy()、regr_syy()、stddev_pop() 和 var_pop()。time 和 timetz 值中小数部分大于 24:00:00 的情况。EXPLAIN 问题,包括报告当计划使用并行工作进程与“Gather Merge”节点时资源使用情况的问题。ALTER TABLE 中约束重新验证的时序问题,该问题可能导致出现奇怪的错误。pg_control 可能以不一致的校验和写入的问题,这可能导致数据库在下次 pg_control 更新前崩溃时无法重启。pg_dump 和 pg_basebackup 中正确报告磁盘空间不足错误。pg_restore 问题,包括修复了在具有表级别和列级别特权的表上进行并行恢复的问题。pg_upgrade 以确保其在 vacuum_defer_cleanup_age 设置为 0 时运行。pg_rewind 处理源数据目录中刚删除的文件方式。contrib/dblink 中本地状态初始化失败的问题,该问题可能导致 dblink_close() 在远程服务器上发出意外的 COMMIT。contrib/amcheck 以便不报告已删除且为空的索引页,因为这在 WAL 重放期间是正常的。有关所有可用更改的完整列表,请参阅 发行说明。
所有 PostgreSQL 更新版本都是累积的。与其他次要版本一样,用户不需要转储和重新加载数据库或使用 pg_upgrade 来应用此更新版本;您可以直接关闭 PostgreSQL 并更新其二进制文件。
跳过了一个或多个更新版本的用户可能需要执行额外的、更新后的步骤;有关详细信息,请参阅早期版本的发布说明。
有关更多详细信息,请参阅 发行说明。
注意:PostgreSQL 9.5 将于 2021 年 2 月 11 日停止接收修复。有关更多信息,请参阅我们的 版本策略。
PostgreSQL 13 Beta 3 引入了一个新的配置参数 hash_mem_multiplier,它允许用户调整分配给哈希聚合的内存量。这使用户能够更好地控制哈希聚合是使用磁盘存储还是保留在内存中,后者是 PostgreSQL 13 之前的唯一选项。
PostgreSQL 13 Beta 3 还移除了 hashagg_avoid_disk_plan 配置参数,该参数之前也称为 enable_hashagg_disk。
要查看 PostgreSQL 13 Beta 3 中包含的更改列表,请查阅 未解决问题 页面。
https://wiki.postgresql.ac.cn/wiki/PostgreSQL_13_Open_Items#resolved_before_13beta3
要从 Beta 2、Beta 1 或早期版本的 PostgreSQL 升级到 PostgreSQL 13 Beta 3,您需要使用类似于从 PostgreSQL 主版本之间升级的策略(例如,使用 pg_upgrade 或 pg_dump / pg_restore)。有关更多信息,请访问关于 升级 的文档部分。
每个 PostgreSQL 版本的稳定性在很大程度上取决于您,社区,在 PostgreSQL 13 正式发布之前,通过您的工作负载和测试工具测试即将发布的版本,以发现错误和回归。由于这是一个 Beta 版本,数据库行为、功能细节和 API 仍有可能发生细微更改。您的反馈和测试将有助于确定新功能的最终调整,因此请尽快进行测试。用户测试的质量决定了我们何时可以进行最终发布。
PostgreSQL wiki 上公开提供了 未解决问题 的列表。您可以使用 PostgreSQL 网站上的此表单 报告错误。
https://postgresql.ac.cn/account/submitbug/
这是 13 版本的第三个 Beta 版本。PostgreSQL 项目将根据测试需要发布额外的 Beta 版本,然后发布一个或多个候选版本,直到 2020 年底的最终发布。有关更多信息,请参阅 Beta 测试 页面。