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
数据类型中使用 BRIN 索引操作时可能发生的崩溃。ALTER TABLE
语句中,当 GENERATED
表达式中引用的列在之前添加或更改类型时 ALTER TABLE
中发生的故障。AFTER ROW
触发器的处理。EXTRACT(ISOYEAR FROM timestamp)
结果的偏差。pg_hba.conf
文件中不必要地将 RADIUS 身份验证参数转换为小写并截断。pg_dump
和 pg_restore
的一些修复。UPDATE remote_tab SET (x,y) = (SELECT ...)
时 postgres_fdw
发生的崩溃。contrib/tablefunc
的 crosstab()
函数中的 NULL 类别值。NOTIFY
出现定时异常的竞争条件。有关可用更改的完整列表,请查看发行说明。
所有 PostgreSQL 更新版本都是累积的。与其他次要版本一样,用户无需转储并重新加载其数据库或使用 pg_upgrade
来应用此更新版本;您可以简单地关闭 PostgreSQL 并更新其二进制文件。
跳过一个或多个更新版本的用户可能需要运行额外的更新后步骤;请参阅早期版本的发行说明以了解详细信息。
如果您之前在分区表的子分区上执行过 TRUNCATE ... CASCADE
,并且该分区表具有来自另一个表的外键引用,您可能需要在另一个表上执行 TRUNCATE
,或者如果您在运行 TRUNCATE ... CASCADE
后添加了行,则需要执行 DELETE
。导致此问题的错误已在此版本中修复,但您必须执行此步骤以确保所有数据都已清理。
有关更多详细信息,请参阅发行说明。