由 PostgreSQL 全球开发组 发布于2024-08-08
原文链接:https://www.postgresql.org/about/news/postgresql-164-158-1413-1316-1220-and-17-beta-3-released-2910/
PostgreSQL 全球开发小组已发布所有受支持的 PostgreSQL 版本的更新,包括 16.4、15.8、14.13、13.16 和 12.20,以及 PostgreSQL 17 的第3个测试版。此版本修复了过去几个月报告的 1 个安全漏洞和 55 多个错误。
有关更改的完整列表,请查看 发行说明[1]。
[1] 发行说明:https://www.postgresql.org/docs/release/
PostgreSQL 12 EOL 公告
PostgreSQL 12 将于 2024 年 11 月 14 日停止接收修复。如果您在生产环境中运行 PostgreSQL 12,我们建议您制定计划升级到较新且受支持的 PostgreSQL 版本。请参阅我们的 版本控制政策[2] 了解更多信息。
[2]版本控制政策:https://www.postgresql.org/support/versioning/
安全问题
CVE-2024-7348:pg_dump执行任意 SQL期间的PostgreSQL 关系替换
CVSS v3.1 基本分数:8.8
受支持的、易受攻击的版本:12 - 16。
能够创建和删除非临时对象的攻击者可以注入SQL代码,这些代码将由并发pg_dump会话以运行pg_dump的角色(通常是超级用户)的权限执行。这种攻击包括将序列或类似对象替换为将执行恶意代码的视图或外部表。为了防止这种情况,引入一个新的服务器参数restrict_nonsystem_relation_kind,它可以禁用非内置视图的扩展以及对外部表的访问,并教会pg_dump在可用时设置它。注意,只有当pg_dump和它要转储的服务器都足够新,能够修复这个问题时,攻击才会被阻止。
PostgreSQL项目感谢 Noah Misch 报告此问题。
错误修复和改进
此次更新修复了过去几个月报告的55+个错误。下面列出的问题影响 PostgreSQL 16。其中一些问题也可能影响其他受支持的 PostgreSQL 版本。
1. 避免 "Merge Right Anti Join"计划的错误结果,如果内部关系已知具有唯一的连接键,则当外部关系中存在重复的连接键时,合并可能会出错。
2. 防止VACUUM中的无限循环。
3. 修复在ALTER TABLE DETACH ... PARTITION CONCURRENTLY过程中设置分区剪枝的问题。
4. 修复被用作CALL语句参数的稳定函数的行为。
5. pg_sequence_last_value()现在在备用服务器上的未记录序列和其他会话的临时序列上调用时返回NULL而不是抛出错误。
6. 修复了websearch_to_tsquery()中忽略运算符的解析。
7. 正确检查INSERT ... DEFAULT所针对的视图列的可更新性。
8. 在ALTER TABLE…设置登录| UNLOGGED。
9. 在ALTER TABLE ... SET LOGGED|UNLOGGED期间锁定表所拥有的序列。
10. 如果队列AFTER触发器不再存在,则不抛出错误。
11. 修复INSERT ... ON CONFLICT 时选择仲裁索引的问题。当期望的索引具有表达式或谓词时,例如通过可更新视图。
12. 拒绝用ALTER TABLE修改另一个会话的临时表。
13. 修复在CREATE TABLE ... LIKE STATISTICS中对表达式的扩展统计信息的处理。
14. 修复了从MIN()或MAX()聚合重新计算生成子查询失败的问题。
15. 禁止位置参数中使用下划线。
16. 避免在jit内联后端函数抛出错误时崩溃。
17. 修复了启动热备服务器时准备事务的子事务的处理。
18. 防止逻辑复制槽位初始化错误。
19. 修复在将更改发布到分区表(其分区的行类型与表的物理类型不同)时逻辑复制WAL发送器中的内存泄漏。
20. 禁用OpenSSL创建有状态TLS会话票据。
21. 修复PL/pgSQL如何处理包含下划线的整数范围(例如,FOR i IN 1_001..1_002)。
22. 修复了PL/Perl和Perl 5.40之间的不兼容。
23. 几个与PL/Python递归函数和触发器相关的修复。
24. 确保pg_restore -l正确报告相关的目录条目。
25. pg_stat_statements现在为出现在sql语言函数中的实用程序(非select INSERT/UPDATE)语句传递一个查询ID。
26. 修复了postgres_fdw将外表映射到重要远程视图时的问题。
27. postgres_fdw不再向远程服务器发送FETCH FIRST WITH TIES子句。
28. 修复PL/pgSQL如何处理包含下划线的整数范围(例如FOR i IN 1_001..1_002)。
29. 修复PL/Perl和 Perl 5.40之间的不兼容性。
30. 与递归PL/Python函数和触发器相关的一些修复。
31. 确保pg_restore -l报告依赖的目录条目正确。
32. pg_stat_statements现在为出现在SQL语言函数中的非SELECT/INSERT/UPDATE(实用)语句传递查询ID。
33. 修复了postgres_fdw将外表映射到重要远程视图时的问题。
34. postgres_fdw不再向远程服务器发送FETCH FIRST WITH TIES子句。
更新
所有 PostgreSQL 更新版本都是累积的。与其他次要版本一样,用户无需转储并重新加载其数据库或使用pg_upgrade即可应用此更新版本;您只需关闭 PostgreSQL 并更新其二进制文件即可。
跳过一个或多个更新版本的用户可能需要运行额外的更新后步骤;请参阅早期版本的发行说明了解详细信息。
欲了解更多详细信息,请参阅 发行说明[3]。
[3]发行说明:https://www.postgresql.org/docs/release/
关于 PostgreSQL 17 Beta 的说明
此版本标志着 PostgreSQL 17 的第3个测试版本,并使社区距离预计在第三季度末推出的全面上市版本更近了一步。
本着开源 PostgreSQL 社区的精神,我们强烈建议您在您的系统上测试 PostgreSQL 17 的新功能,以帮助我们消除可能存在的错误或其他问题。虽然我们不建议您在生产环境中运行 PostgreSQL 17 Beta 3,但我们鼓励您找到针对此测试版运行典型应用程序工作负载的方法。
您的测试和反馈将帮助社区确保 PostgreSQL 17 版本符合我们的标准,即提供世界上最先进的开源关系数据库的稳定、可靠版本。请阅读有关我们的beta 测试流程以及您如何做出贡献的更多信息:
https://www.postgresql.org/developer/beta/
升级到 PostgreSQL 17 Beta 3
要从早期版本的 PostgreSQL 升级到 PostgreSQL 17 Beta 3,您需要使用类似于在 PostgreSQL 主要版本之间升级的策略(例如pg_upgrade或pg_dump)。有关更多信息,请访问有关升级[4]的pg_restore文档部分 。
[4]升级:https://www.postgresql.org/docs/17/static/upgrading.html
自 Beta 2 版以来的变化
PostgreSQL 17 Beta 3 中的修复和更改包括:
1. 将参数standby_slot_names重命名为synchronized_standby_slots。
2. 修复了几项 SQL/JSON。
3. 修复pg_combinebackup --clone。
4. 修复了pg_createsubscriber包含空格的数据库名称的问题。
5. 现在在目标数据库上运行pg_createsubscriber时会删除预先存在的订阅。
6. 提高在pg_upgrade期间检索订阅信息的效率。
7. 在sslmode=prefer中修复TLS回退行为,当服务器在启动过程中发送错误时出错。
8. 在备服务器上立即执行pg_basebackup增量备份时,记录一个错误情况。
9. 修复了pg_upgrade——transaction-size可能导致后端使用更多RAM的问题。
请参阅发行说明 以获取新功能和更改功能的完整列表,并参阅 PostgreSQL 17 未完成项目[5] 以获取有关修复和更改的更多详细信息。
[5]PostgreSQL 17未完成项目:https://wiki.postgresql.org/wiki/PostgreSQL_17_Open_Items
测试错误和兼容性
每个 PostgreSQL 版本的稳定性很大程度上取决于您(社区)使用工作负载和测试工具测试即将发布的版本,以便在 PostgreSQL 17 正式发布之前发现错误和回归问题。由于这是 Beta 版,因此仍有可能对数据库行为、功能细节和 API 进行微小更改。您的反馈和测试将有助于确定新功能的最终调整,因此请在不久的将来进行测试。用户测试的质量有助于确定我们何时可以发布最终版本。
PostgreSQL wiki 中公开提供了 未解决问题列表。您可以使用 PostgreSQL 网站上的此表单报告错误[6]:
[6]报告错误:https://www.postgresql.org/account/submitbug/
链接
下载:https://www.postgresql.org/download/
发行说明:https://www.postgresql.org/docs/release/
安全:https://www.postgresql.org/support/security/
版本控制策略:https://www.postgresql.org/support/versioning/
Beta 测试信息:https://www.postgresql.org/developer/beta/
PostgreSQL 17 Beta 版本说明:https://www.postgresql.org/docs/17/release-17.html
PostgreSQL 17 未解决的问题:https://wiki.postgresql.org/wiki/PostgreSQL_17_Open_Items
功能列表:https://www.postgresql.org/about/featurematrix/
提交 Bug:https://www.postgresql.org/account/submitbug/
在 X/Twitter 上关注 @postgresql:https://twitter.com/postgresql
捐赠:https://www.postgresql.org/about/donate/
如果您对此发布公告有任何更正或建议,请发送至pgsql-www@lists.postgresql.org公共 邮件列表(https://www.postgresql.org/list/)。