PostgreSQL 全球开发组发布了我们数据库系统所有受支持版本的更新,包括 12.2、11.7、10.12、9.6.17、9.5.21 和 9.4.26。本次发布修复了一个 PostgreSQL 服务器中的安全问题以及过去三个月报告的 75 个以上错误。
用户应尽快计划更新。
这是 PostgreSQL 9.4 的最后一个版本,它将不再接收安全更新和错误修复。 PostgreSQL 9.4 引入了新功能,例如 JSONB 支持、ALTER SYSTEM 命令、将逻辑更改流式传输到输出插件的能力,以及更多。
虽然我们对这个版本非常自豪,但这些功能在更新版本的 PostgreSQL 中也同样存在。许多功能也得到了改进,并且根据我们的版本策略,是时候淘汰 PostgreSQL 9.4 了。
为了获得持续支持,我们建议您计划升级到更新的、受支持的 PostgreSQL 版本。请参阅 PostgreSQL 版本策略以获取更多信息。
ALTER ... DEPENDS ON EXTENSION 缺少授权检查。受影响版本:9.6 - 12
ALTER ... DEPENDS ON EXTENSION 子命令不执行授权检查,这可能允许未授权用户在某些条件下删除任何函数、过程、物化视图、索引或触发器。如果管理员已安装了扩展,并且未授权用户可以 CREATE,或者扩展所有者以可预测的方式执行 DROP EXTENSION 或被说服执行 DROP EXTENSION,则此攻击是可能的。
PostgreSQL 项目感谢 Tom Lane 报告此问题。
此次更新还修复了过去几个月报告的 75 个以上错误。其中一些问题仅影响版本 12,但也可能影响所有受支持的版本。
部分修复包括:
TRUNCATE ... CASCADE 不会删除所有数据。如果您之前在带有外键引用的分区表上使用了 TRUNCATE ... CASCADE,请参阅“更新”部分进行验证和清理。RECORD)的分区键表达式。UPDATE 触发器的问题。REPLICA IDENTITY FULL 提高了逻辑复制的效率。pg_replication_slot_advance() 会在重启后持久化更改。CONCURRENTLY 选项。box、range 和 inet 数据类型时可能发生的崩溃。GENERATED 表达式中引用的列在同一 ALTER TABLE 语句中更早地添加或更改类型时,ALTER TABLE 发生的失败。AFTER ROW 触发器的问题。EXTRACT(ISOYEAR FROM timestamp) 对于公元前日期的偏移量计算错误。pg_hba.conf 文件中的 RADIUS 认证参数被意外小写和截断。pg_dump 和 pg_restore 的几项问题。postgres_fdw 尝试在远程服务器上执行远程查询(例如 UPDATE remote_tab SET (x,y) = (SELECT ...))时发生的崩溃。contrib/tablefunc 的 crosstab() 函数中使用 NULL 类别值,以防止崩溃。NOTIFY 出现时序问题的竞争条件。有关所有可用更改的完整列表,请参阅 发行说明。
所有 PostgreSQL 更新版本都是累积的。与其他次要版本一样,用户不需要转储和重新加载数据库或使用 pg_upgrade 来应用此更新版本;您可以直接关闭 PostgreSQL 并更新其二进制文件。
跳过了一个或多个更新版本的用户可能需要执行额外的、更新后的步骤;有关详细信息,请参阅早期版本的发布说明。
如果您之前在分区表的子分区上执行了 TRUNCATE ... CASCADE,并且该分区表有来自另一个表的 istore 键引用,您可能需要对另一个表执行 TRUNCATE,或者如果您在运行 TRUNCATE ... CASCADE 后添加了行,则执行 DELETE。导致此问题的已在此版本中修复,但您需要执行此步骤以确保所有数据都已清理。
有关更多详细信息,请参阅 发行说明。