PostgreSQL 全球开发组发布了我们数据库系统所有受支持版本的更新,包括 11.4、10.9、9.6.14、9.5.18 和 9.4.23,以及 PostgreSQL 12 的第二个测试版。自五月份上一次累积更新以来,本次发布修复了一个安全问题和超过 25 个 bug。
本次发布是在正常的更新发布周期之外进行的,因为安全漏洞被认为足够关键,需要尽快分发修复程序。正在运行 PostgreSQL 10、PostgreSQL 11 或 PostgreSQL 12 测试版的用户应尽快升级。
所有其他用户应计划在下次计划停机时应用此更新。
本次发布关闭了一个安全漏洞
受影响版本:10、11、12 测试版。
经过身份验证的用户可以通过将自己的密码更改为特意构造的值,导致基于堆栈的缓冲区溢出。除了可能导致 PostgreSQL 服务器崩溃之外,还可以被进一步利用,以 PostgreSQL 操作系统帐户的身份执行任意代码。
此外,在 SCRAM 身份验证过程中,恶意服务器可以发送一个经过特定构造的消息,导致启用 libpq 的客户端崩溃或以客户端操作系统帐户的身份执行任意代码。
通过升级并重新启动 PostgreSQL 服务器以及 libpq 安装可以修复此问题。所有运行 PostgreSQL 10、11 和 12 测试版的用户都应尽快升级。
PostgreSQL 项目感谢 Alexander Lakhin 报告此问题。
本次更新还修复了自五月份上一次累积更新以来超过 25 个 bug。其中一些问题仅影响版本 11,但许多问题影响所有受支持的版本。
部分修复包括:
pg_dump 现在使用 CREATE TABLE 和 ALTER TABLE .. ATTACH PARTITION 来重新创建表分区,而不是在创建命令中包含 PARTITION OFinitdb 在时区名称等效时确定所选系统时区的算法。还明确优先使用 UTC 而不是 UCTALTER TABLE .. ALTER COLUMN TYPE 失败的问题COMMENT 命令失败的问题json_to_record() 和 json_populate_record() 中将 JSON 字符串文字转换为 JSON 类型输出列的问题{1,1} 量词的错误优化INCLUDE 子句的列的边缘情况故障时的问题,该问题表现为 VACUUM 期间的错误。如果您受到此问题的影响,您需要重新索引特定的索引pg_dump 和 pg_dumpall 为数据库和表空间发出的 GRANT 命令的顺序reindexdb 误导性的错误报告vacuumdb 在使用并行作业时发生错误时返回正确的状态contrib/auto_explain 导致并行查询出现问题,从而导致“在 shm TOC 中找不到键 N”之类的失败contrib/postgres_fdw 中,考虑了本地 BEFORE ROW UPDATE 触发器可能进行的数据修改SQL_ASCII 并且我们尝试记录非 ASCII 字符串时,避免了失败所有 PostgreSQL 更新版本都是累积的。与其他次要版本一样,用户不需要转储和重新加载数据库或使用 pg_upgrade 来应用此更新版本;您可以直接关闭 PostgreSQL 并更新其二进制文件。
如果您使用了 INCLUDE 子句的 B 树索引受到了上述问题的影响,您需要重新索引任何受影响的索引。该问题表现为 VACUUM 期间发生的错误。您可以在此处阅读更多关于重新索引的信息
https://postgresql.ac.cn/docs/current/sql-reindex.html
跳过了一个或多个更新版本的用户可能需要执行额外的、更新后的步骤;有关详细信息,请参阅早期版本的发布说明。
PostgreSQL 9.4 将于 2020 年 2 月 13 日停止接收修复。请参阅我们的 版本策略 以获取更多信息。
这包括 12 版本的第二个测试版发布。PostgreSQL 项目将在需要进行测试时发布额外的测试版,然后发布一个或多个发布候选版,直到 2019 年底发布最终版本。有关更多信息,请参阅测试版测试页面。