PostgreSQL 全球开发组发布了对所有支持版本数据库系统的更新,包括 10.5、9.6.10、9.5.14、9.4.19、9.3.24。本次发布修复了两个安全问题以及过去三个月报告的 bug。
如果您有不受信任的用户访问您的系统,并且您正在运行 PostgreSQL 9.5 或更新版本,或者已经安装了 dblink 或 postgres_fdw 扩展,则必须尽快应用此更新。所有其他用户可以在下次方便的停机时间进行升级。
请注意,PostgreSQL 在 10.0 版本发布后更改了其版本号方案,因此从任何 10.x 版本更新到 10.5 版本被视为小版本更新。
PostgreSQL 全球开发组还宣布,PostgreSQL 11 的第三个 beta 版本现已可供下载。此版本包含了 PostgreSQL 11 最终版本中所有功能(尽管发布的一些细节在最终版本之前可能会有所更改),以及在第二个 beta 版本期间报告的 bug 修复。
本次发布解决了两个安全漏洞
libpq 是 PostgreSQL 的客户端连接 API,也被其他连接库使用,存在一个内部问题,在尝试重新连接时不会重置所有连接状态变量。特别是,决定连接是否需要密码的状态变量不会被重置,这可能允许使用需要 libpq 的功能(如 dblink 或 postgres_fdw 扩展)的用户登录他们本不应访问的服务器。
您可以通过在 PostgreSQL shell 中运行以下命令来检查您的数据库是否安装了任一扩展
\dx dblink|postgres_fdw
建议用户尽快升级其 libpq 安装。
PostgreSQL 全球开发组感谢 Andrew Krasichkov 报告此问题。
INSERT ... ON CONFLICT DO UPDATE
中的内存泄露和授权缺失能够发出 CREATE TABLE 的攻击者可以使用 upsert (INSERT ... ON CONFLICT DO UPDATE
) 查询读取服务器内存中的任意字节。默认情况下,任何用户都可以利用这一点。拥有特定 INSERT 权限和给定表上至少一个列的 UPDATE 权限的用户也可以使用视图和 upsert 查询来更新其他列。
此更新还修复了过去几个月报告的 40 多个 bug。其中一些问题仅影响版本 10,但许多问题影响所有支持的版本。
这些修复包括
VACUUM
相关的修复,包括可能导致某些系统目录表数据损坏的问题variance
和类似的聚合函数在并行查询执行时返回准确结果SHOW ALL
以向允许读取所有设置的角色显示超级用户配置设置COPY FROM .. WITH HEADER
在处理 4,294,967,296 行后会丢弃一行的错误xpath
和 xpath_exists
函数,以及 XMLTABLE
hostaddr
的情况下的问题pg_dump
的修复,包括正确输出约束索引的 REPLICA IDENTITY
属性pg_upgrade
检查旧服务器是否已干净关闭此更新还包含 tzdata 版本 2018e,并对朝鲜进行了更新。2018e 版本还重新引入了最初在 2018a 版本中引入的负 DST 更改,这会影响爱尔兰(1971-)的历史和当前时间戳,以及纳米比亚(1994-2017)和前捷克斯洛伐克(1946-1947)的历史时间戳。如果您的应用程序存储了受影响日期范围内的这些时区的时间戳,我们要求您进行测试,以确保您的应用程序按预期运行。
PostgreSQL 11 Beta 3 包含了累积发布中的适用 bug 修复以及其自身的 20 多个修复。有关 PostgreSQL 11 Beta 3 修复的完整列表,请访问 待处理项目页面。
PostgreSQL 9.3 将在下一次计划于 11 月发布的版本后生命周期结束。我们敦促用户尽快开始计划升级到更新版本的 PostgreSQL。有关更多信息,请参阅我们的版本策略。
所有 PostgreSQL 更新版本都是累积的。与其他次要版本一样,用户不需要转储和重新加载数据库或使用 pg_upgrade
来应用此更新版本;您可以直接关闭 PostgreSQL 并更新其二进制文件。
跳过了一个或多个更新版本的用户可能需要执行额外的、更新后的步骤;有关详细信息,请参阅早期版本的发布说明。
要从 Beta 1 或 2 或早期版本的 PostgreSQL 升级到 PostgreSQL 11 Beta 3,您需要使用与升级 PostgreSQL 主版本(例如 pg_upgrade
或 pg_dump
/ pg_restore
)类似的策略。有关更多信息,请访问关于 升级的文档部分。
这是 11 版本的第三个 beta 版本。PostgreSQL 项目将在需要时发布其他 beta 版本进行测试,然后发布一个或多个候选版本,直到 2018 年底最终发布。有关更多信息,请参阅 Beta 测试页面。
每个 PostgreSQL 版本的稳定性在很大程度上取决于您——社区——通过您的工作负载和测试工具测试即将发布的版本,以便在 PostgreSQL 11 发布之前找出 bug 和回归。我们非常感谢迄今为止所做的所有测试,随着我们越来越接近最终发布。您的反馈和测试将有助于确定新功能的最终微调,请继续进行测试。用户测试的质量有助于决定我们何时可以进行最终发布。
PostgreSQL wiki 上公开提供了一个 待处理项目列表。您可以使用 PostgreSQL 网站上的此表单 报告 bug。
https://postgresql.ac.cn/account/submitbug/