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 测试页面。