↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

文档版本对比

POSTGRESQL · VERSION COMPARE

PostgreSQL 17.0 的版本变更

本次发布的完整功能、修复与兼容性说明,以及它们在其他版本中的关联记录。

查看该版本全部变更
查看该版本全部变更

从起始版本之后,看到目标版本为止。大版本名称代表该系列首个正式版本。

收录 PostgreSQL 9.0 起的 17 个大版本、352 份发布说明;数据更新于 2026-09-26。

本次发布的全部变更

17.0

2024-09-26

导出 JSON
182项变更功能、修复与改进
1次版本发布按发行版本归档
0个 CVE本版说明中提及的漏洞编号

17.0 受支持版本维护截止 2029-11-08

PostgreSQL 17.0

升级与兼容性说明

对于希望从任何以前的版本迁移数据的人来说,需要使用pg_dumpall进行转储/恢复,或者使用pg_upgrade或逻辑复制。有关迁移到新主要版本的通用信息,请参阅第 18.6 节。

版本 17 包含许多可能影响与以前版本兼容性的更改。请注意以下不兼容项:

兼容性变化更改函数,使其在维护操作期间使用安全的search_path

兼容性

更改函数,使其在维护操作期间使用安全的search_path(Jeff Davis)§ §

这可防止维护操作(ANALYZE、CLUSTER、CREATE INDEX、CREATE MATERIALIZED VIEW、REFRESH MATERIALIZED VIEW、REINDEX 或 VACUUM)执行不安全的访问。表达式索引和物化视图中使用、且需要引用非默认 schema 的函数,必须在创建函数时指定 search path。

兼容性变化限制 ago 只能出现在 interval 值的末尾

兼容性

限制 ago 只能出现在 interval 值的末尾(Joseph Koshakow)§ §

同时,禁止空 interval 单位出现多次。

兼容性变化移除服务器变量 old_snapshot_threshold

兼容性

移除服务器变量 old_snapshot_threshold(Thomas Munro)§

该变量允许 vacuum 移除对正在运行事务而言理论上仍可能可见的行,从而在之后访问时引发“snapshot too old”错误。如果将来找到改进的实现方式,此功能可能会重新加入 PostgreSQL。

兼容性变化更改 SET SESSION AUTHORIZATION 对初始会话用户超级用户状态的处理方式

兼容性

更改 SET SESSION AUTHORIZATION 对初始会话用户超级用户状态的处理方式(Joseph Koshakow)§

新行为基于发出 SET SESSION AUTHORIZATION 命令时会话用户的超级用户状态,而不是其连接建立时的超级用户状态。

兼容性变化移除模拟每数据库用户的功能

兼容性

移除模拟每数据库用户的功能(Nathan Bossart)§

该功能即 db_user_namespace,使用得很少。

兼容性变化移除 contrib 扩展 adminpack

兼容性

移除 contrib 扩展 adminpack(Daniel Gustafsson)§

它曾由现已终止支持的 pgAdmin III 使用。

兼容性变化在 Windows 上移除wal_sync_method的 fsync_writethrough 值

兼容性

在 Windows 上移除wal_sync_method的 fsync_writethrough 值(Thomas Munro)§

该值在 Windows 上与 fsync 相同。

兼容性变化更改两个 WAL 文件名函数对文件边界的处理方式

兼容性

更改两个 WAL 文件名函数对文件边界的处理方式(Kyotaro Horiguchi, Andres Freund, Bruce Momjian)§

当 LSN 位于文件段边界时,pg_walfile_name() 和 pg_walfile_name_offset() 过去会报告前一个 LSN 段号;现在则返回当前的 LSN 段。

兼容性变化移除已不再需要的服务器变量 trace_recovery_messages

兼容性

移除已不再需要的服务器变量 trace_recovery_messages(Bharath Rupireddy)§

兼容性变化移除 information schema 列 element_types.domain_default

兼容性

移除 information schema 列 element_types.domain_default(Peter Eisentraut)§

兼容性变化更改 pgrowlocks 的锁模式输出标签

兼容性

更改 pgrowlocks 的锁模式输出标签(Bruce Momjian)§

兼容性变化从 pg_stat_bgwriter 中移除 buffers_backend 和 buffers_backend_fsync

兼容性

从 pg_stat_bgwriter 中移除 buffers_backend 和 buffers_backend_fsync(Bharath Rupireddy)§

这些字段被认为与 pg_stat_io 中的类似列重复。

兼容性变化重命名 pg_stat_statements 的 I/O 块读/写耗时统计列

兼容性

重命名 pg_stat_statements 的 I/O 块读/写耗时统计列(Nazir Bilal Yavuz)§

即将 blk_read_time 重命名为 shared_blk_read_time,并将 blk_write_time 重命名为 shared_blk_write_time。

兼容性变化将 pg_attribute.attstattarget 和 pg_statistic_ext.stxstattarget 表示默认统计目标的方式更改为 NULL

兼容性

将 pg_attribute.attstattarget 和 pg_statistic_ext.stxstattarget 表示默认统计目标的方式更改为 NULL(Peter Eisentraut)§ §

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

兼容性变化将 pg_collation.colliculocale 重命名为 colllocale,并将 pg_database.daticulocale 重命名为 datlocale

兼容性

将 pg_collation.colliculocale 重命名为 colllocale,并将 pg_database.daticulocale 重命名为 datlocale(Jeff Davis)§

兼容性变化将 pg_stat_progress_vacuum 的列 max_dead_tuples 重命名为 max_dead_tuple_bytes,将 num_dead_tuples 重命名为 num_dead_item_ids,并新增 dead_tuple_bytes

兼容性

将 pg_stat_progress_vacuum 的列 max_dead_tuples 重命名为 max_dead_tuple_bytes,将 num_dead_tuples 重命名为 num_dead_item_ids,并新增 dead_tuple_bytes(Masahiko Sawada)§ §

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

兼容性变化重命名系统视图 pg_stat_slru 中的 SLRU 列

兼容性

重命名系统视图 pg_stat_slru 中的 SLRU 列(Alvaro Herrera)§

pg_stat_reset_slru() 接受的列名也随之更改。

新功能允许优化器通过考虑较早行输出子句中所引用列的统计信息和排序顺序来改进 CTE 计划

服务器 / 优化器

允许优化器通过考虑较早行输出子句中所引用列的统计信息和排序顺序来改进 CTE 计划(Jian Guo, Richard Guo, Tom Lane)§ §

新功能改进对 IS NOT NULL 和 IS NULL 查询限制条件的优化

服务器 / 优化器

改进对 IS NOT NULL 和 IS NULL 查询限制条件的优化(David Rowley, Richard Guo, Andy Fan)§ §

从对 NOT NULL 列的查询中移除 IS NOT NULL 限制条件,并在指定 IS NULL 时消除对 NOT NULL 列的扫描。

新功能允许在布尔列的 IS [NOT] UNKNOWN 条件下进行分区剪枝

服务器 / 优化器

允许在布尔列的 IS [NOT] UNKNOWN 条件下进行分区剪枝(David Rowley)§

新功能改进在使用包含操作符 <@ 和 @> 时对范围值的优化

服务器 / 优化器

改进在使用包含操作符 <@ 和 @> 时对范围值的优化(Kim Johan Andersson, Jian He)§

新功能允许将相关 IN 子查询转换为连接

服务器 / 优化器

允许将相关 IN 子查询转换为连接(Andy Fan, Tom Lane)§

新功能改进在分区表、继承父表以及 UNION ALL 查询上对 LIMIT 子句的优化

服务器 / 优化器

改进在分区表、继承父表以及 UNION ALL 查询上对 LIMIT 子句的优化(Andy Fan, David Rowley)§

新功能允许在更多情况下并行运行查询节点

服务器 / 优化器

允许在更多情况下并行运行查询节点(Tom Lane)§

新功能允许在内部重新排列 GROUP BY 列,以匹配 ORDER BY

服务器 / 优化器

允许在内部重新排列 GROUP BY 列,以匹配 ORDER BY(Andrei Lepikhov, Teodor Sigaev)§

这可使用服务器变量enable_group_by_reordering禁用。

新功能允许 UNION(不带 ALL)使用 MergeAppend

服务器 / 优化器

允许 UNION(不带 ALL)使用 MergeAppend(David Rowley)§

BUG 修复修复 MergeAppend 计划,使其更准确地计算需要排序的行数

服务器 / 优化器

修复 MergeAppend 计划,使其更准确地计算需要排序的行数(Alexander Kuzmenkov)§

新功能允许 GiST 和 SP-GiST 索引参与增量排序

服务器 / 优化器

允许 GiST 和 SP-GiST 索引参与增量排序(Miroslav Bendik)§

这对于首列具有 GiST 或 SP-GiST 索引而其他列没有的 ORDER BY 子句尤其有用。

新功能向 pg_stats 添加列,以报告范围类型的直方图信息

服务器 / 优化器

向 pg_stats 添加列,以报告范围类型的直方图信息(Egor Rogov, Soumyadeep Chakraborty)§

新功能允许 B-树索引更高效地查找一组值,例如使用常量的 IN 子句所提供的值

服务器 / 索引

允许 B-树索引更高效地查找一组值,例如使用常量的 IN 子句所提供的值(Peter Geoghegan, Matthias van de Meent)§

新功能允许使用并行工作进程创建 BRIN 索引

服务器 / 索引

允许使用并行工作进程创建 BRIN 索引(Tomas Vondra, Matthias van de Meent)§

性能改进允许 vacuum 更高效地移除和冻结元组

服务器 / 一般性能

允许 vacuum 更高效地移除和冻结元组(Melanie Plageman, Heikki Linnakangas)§

vacuum 产生的 WAL 流量也更紧凑。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

性能改进允许 vacuum 更高效地存储元组引用

服务器 / 一般性能

允许 vacuum 更高效地存储元组引用(Masahiko Sawada, John Naylor)§ § § §

此外,当maintenance_work_mem或autovacuum_work_mem更高时,vacuum 不再被静默限制为最多使用 1 GB 内存。

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

性能改进优化对没有索引的关系执行 vacuum

服务器 / 一般性能

优化对没有索引的关系执行 vacuum(Melanie Plageman)§

性能改进将vacuum_buffer_usage_limit的默认值提高到 2MB

服务器 / 一般性能

将vacuum_buffer_usage_limit的默认值提高到 2MB(Thomas Munro)§

性能改进改进在检查具有大量成员关系的角色时的性能

服务器 / 一般性能

改进在检查具有大量成员关系的角色时的性能(Nathan Bossart)§

性能改进改进高竞争情况下 WAL 写入的性能

服务器 / 一般性能

改进高竞争情况下 WAL 写入的性能(Bharath Rupireddy)§

性能改进改进向客户端传输大块数据时的性能

服务器 / 一般性能

改进向客户端传输大块数据时的性能(Melih Mutlu)§

性能改进允许使用新的系统变量io_combine_limit对文件系统读取进行分组

服务器 / 一般性能

允许使用新的系统变量io_combine_limit对文件系统读取进行分组(Thomas Munro, Andres Freund, Melanie Plageman, Nazir Bilal Yavuz)§ § §

新功能创建系统视图 pg_stat_checkpointer

服务器 / 监控

创建系统视图 pg_stat_checkpointer(Bharath Rupireddy, Anton A. Melnikov, Alexander Korotkov)§ § §

已将相关列从 pg_stat_bgwriter 中移除,并加入这个新系统视图。

新功能改进对重置统计信息的控制

服务器 / 监控

改进对重置统计信息的控制(Atsushi Torikoshi, Bharath Rupireddy)§ § §

允许 pg_stat_reset_shared()(无参数)和 pg_stat_reset_shared(NULL) 重置所有共享统计信息。允许 pg_stat_reset_shared('slru') 和 pg_stat_reset_slru()(无参数)重置 SLRU 统计信息,而这在以前只能通过 pg_stat_reset_slru(NULL) 实现。

新功能添加与从备份恢复 WAL 相关的日志消息

服务器 / 监控

添加与从备份恢复 WAL 相关的日志消息(Andres Freund)§

关联记录(2)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

新功能为 trust 连接添加log_connections日志行

服务器 / 监控

为 trust 连接添加log_connections日志行(Jacob Champion)§

新功能添加日志消息以报告 walsender 获取和释放复制槽

服务器 / 监控

添加日志消息以报告 walsender 获取和释放复制槽(Bharath Rupireddy)§

这由服务器变量log_replication_commands启用。

新功能添加用于报告等待事件类型的系统视图 pg_wait_events

服务器 / 监控

添加用于报告等待事件类型的系统视图 pg_wait_events(Bertrand Drouvot)§

这有助于为 pg_stat_activity 中报告的等待事件补充描述。

新功能为检查点延迟添加等待事件

服务器 / 监控

为检查点延迟添加等待事件(Thomas Munro)§

新功能允许 vacuum 报告索引处理进度

服务器 / 监控

允许 vacuum 报告索引处理进度(Sami Imseih)§

这显示在系统视图 pg_stat_progress_vacuum 的 indexes_total 和 indexes_processed 列中。

新功能允许授予执行维护操作的权限

服务器 / 权限

允许授予执行维护操作的权限(Nathan Bossart)§

该权限可以通过 MAINTAIN 权限按表授予,也可以通过预定义角色 pg_maintain 按角色授予。允许的操作包括 VACUUM、ANALYZE、REINDEX、REFRESH MATERIALIZED VIEW、CLUSTER 和 LOCK TABLE。

新功能允许拥有 pg_monitor 成员资格的角色执行 pg_current_logfile()

服务器 / 权限

允许拥有 pg_monitor 成员资格的角色执行 pg_current_logfile()(Pavlo Golub, Nathan Bossart)§

新功能添加系统变量allow_alter_system,以禁止 ALTER SYSTEM

服务器 / 服务器配置

添加系统变量allow_alter_system,以禁止 ALTER SYSTEM(Jelte Fennema-Nio, Gabriele Bartolini)§

新功能允许 ALTER SYSTEM 设置未识别的自定义服务器变量

服务器 / 服务器配置

允许 ALTER SYSTEM 设置未识别的自定义服务器变量(Tom Lane)§

这也可以通过 GRANT ON PARAMETER 实现。

新功能添加服务器变量transaction_timeout,以限制事务持续时间

服务器 / 服务器配置

添加服务器变量transaction_timeout,以限制事务持续时间(Andrey Borodin, Japin Li, Junwang Zhao, Alexander Korotkov)§ § §

新功能添加内置的平台无关排序规则提供者

服务器 / 服务器配置

添加内置的平台无关排序规则提供者(Jeff Davis)§ § § §

这支持 C 和 C.UTF-8 排序规则。

新功能添加服务器变量huge_pages_status,用于报告 Postgres 对 huge pages 的使用情况

服务器 / 服务器配置

添加服务器变量huge_pages_status,用于报告 Postgres 对 huge pages 的使用情况(Justin Pryzby)§

当huge_pages设置为 try 时,这很有用。

新功能添加用于禁用事件触发器的服务器变量

服务器 / 服务器配置

添加用于禁用事件触发器的服务器变量(Daniel Gustafsson)§

该设置event_triggers允许为调试目的临时禁用事件触发器。

新功能允许配置 SLRU 缓存大小

服务器 / 服务器配置

允许配置 SLRU 缓存大小(Andrey Borodin, Dilip Kumar, Alvaro Herrera)§

新的服务器变量包括commit_timestamp_buffers、multixact_member_buffers、multixact_offset_buffers、notify_buffers、serializable_buffers、subtransaction_buffers和transaction_buffers。commit_timestamp_buffers、transaction_buffers以及subtransaction_buffers会随着shared_buffers自动扩展。

新功能添加对增量文件系统备份的支持

服务器 / 流复制与恢复

添加对增量文件系统备份的支持(Robert Haas, Jakub Wartak, Tomas Vondra)§ §

可使用pg_basebackup的新 --incremental 选项创建增量备份。新的应用程序pg_combinebackup允许处理基础和增量文件系统备份。

新功能允许创建 WAL 摘要文件

服务器 / 流复制与恢复

允许创建 WAL 摘要文件(Robert Haas, Nathan Bossart, Hubert Depesz Lubaczewski)§ § § §

这些文件记录某个 LSN 范围内发生变化的块号,对增量文件系统备份很有用。这由服务器变量summarize_wal和wal_summary_keep_time控制,并可通过 pg_available_wal_summaries()、pg_wal_summary_contents() 和 pg_get_wal_summarizer_state() 进行查看。

新功能将系统标识符添加到文件系统 backup manifest 文件中

服务器 / 流复制与恢复

将系统标识符添加到文件系统 backup manifest 文件中(Amul Sul)§

这有助于检测无效的 WAL 使用。

新功能允许在pg_basebackup将连接信息写入 postgresql.auto.conf 时写入连接字符串值 dbname

服务器 / 流复制与恢复

允许在pg_basebackup将连接信息写入 postgresql.auto.conf 时写入连接字符串值 dbname(Vignesh C, Hayato Kuroda)§

新功能添加列 pg_replication_slots.invalidation_reason,用于报告复制槽失效的原因

服务器 / 流复制与恢复

添加列 pg_replication_slots.invalidation_reason,用于报告复制槽失效的原因(Shveta Malik, Bharath Rupireddy)§ §

新功能添加列 pg_replication_slots.inactive_since,用于报告复制槽的不活动持续时间

服务器 / 流复制与恢复

添加列 pg_replication_slots.inactive_since,用于报告复制槽的不活动持续时间(Bharath Rupireddy)§ § §

新功能添加函数 pg_sync_replication_slots(),用于同步逻辑复制槽

服务器 / 流复制与恢复

添加函数 pg_sync_replication_slots(),用于同步逻辑复制槽(Hou Zhijie, Shveta Malik, Ajin Cherian, Peter Eisentraut)§ §

新功能为复制协议添加 failover 属性

服务器 / 流复制与恢复

为复制协议添加 failover 属性(Hou Zhijie, Shveta Malik)§

新功能添加应用程序pg_createsubscriber,用于从物理备库创建逻辑副本

服务器 / 逻辑复制

添加应用程序pg_createsubscriber,用于从物理备库创建逻辑副本(Euler Taveira)§

新功能让pg_upgrade迁移有效的逻辑槽和订阅

服务器 / 逻辑复制

让pg_upgrade迁移有效的逻辑槽和订阅(Hayato Kuroda, Hou Zhijie, Vignesh C, Julien Rouhaud, Shlok Kyal)§ §

这使逻辑复制能够在升级后快速继续。此功能仅适用于版本为 17 或更高的旧 PostgreSQL 集簇。

新功能启用逻辑槽的故障切换

服务器 / 逻辑复制

启用逻辑槽的故障切换(Hou Zhijie, Shveta Malik, Ajin Cherian)§

这由 pg_create_logical_replication_slot() 的可选第五个参数控制。

新功能添加服务器变量sync_replication_slots,以启用故障切换逻辑槽同步

服务器 / 逻辑复制

添加服务器变量sync_replication_slots,以启用故障切换逻辑槽同步(Shveta Malik, Hou Zhijie, Peter Smith)§ §

新功能为 CREATE/ALTER SUBSCRIPTION 添加逻辑复制故障切换控制

服务器 / 逻辑复制

为 CREATE/ALTER SUBSCRIPTION 添加逻辑复制故障切换控制(Shveta Malik, Hou Zhijie, Ajin Cherian)§ §

新功能允许逻辑复制变更的应用在订阅端使用 hash 索引

服务器 / 逻辑复制

允许逻辑复制变更的应用在订阅端使用 hash 索引(Hayato Kuroda)§

以前只有 B-树索引可用于此目的。

性能改进改进在存在大量子事务时逻辑解码的性能

服务器 / 逻辑复制

改进在存在大量子事务时逻辑解码的性能(Masahiko Sawada)§

新功能如果撤销订阅所有者的超级用户权限,则重启应用工作进程

服务器 / 逻辑复制

如果撤销订阅所有者的超级用户权限,则重启应用工作进程(Vignesh C)§

这会强制重新认证。

新功能为 pg_logical_emit_message() 添加 flush 选项

服务器 / 逻辑复制

为 pg_logical_emit_message() 添加 flush 选项(Michael Paquier)§

这会使该消息具有持久性。

新功能允许指定在对订阅者可见之前必须先完成同步的物理备库

服务器 / 逻辑复制

允许指定在对订阅者可见之前必须先完成同步的物理备库(Hou Zhijie, Shveta Malik)§ §

新的服务器变量是synchronized_standby_slots。

新功能为 pg_stat_subscription 添加工作进程类型列

服务器 / 逻辑复制

为 pg_stat_subscription 添加工作进程类型列(Peter Smith)§

新功能添加新的 COPY 选项 ON_ERROR ignore,用于丢弃错误行

工具命令

添加新的 COPY 选项 ON_ERROR ignore,用于丢弃错误行(Damir Belyalov, Atsushi Torikoshi, Alex Shulgin, Jian He, Yugo Nagata)§ § § §

默认行为是 ON_ERROR stop。

新功能添加新的 COPY 选项 LOG_VERBOSITY,用于报告 COPY FROM 忽略的错误行

工具命令

添加新的 COPY 选项 LOG_VERBOSITY,用于报告 COPY FROM 忽略的错误行(Bharath Rupireddy)§

新功能允许 COPY FROM 在处理期间报告被跳过的行数

工具命令

允许 COPY FROM 在处理期间报告被跳过的行数(Atsushi Torikoshi)§

这显示在系统视图列 pg_stat_progress_copy.tuples_skipped 中。

新功能在 COPY FROM 中,允许方便地指定所有列都应被强制设为 null 或 not null

工具命令

在 COPY FROM 中,允许方便地指定所有列都应被强制设为 null 或 not null(Zhang Mingli)§

新功能允许分区表拥有标识列

工具命令

允许分区表拥有标识列(Ashutosh Bapat)§

新功能允许在分区表上使用排他约束

工具命令

允许在分区表上使用排他约束(Paul A. Jungwirth)§

只要排他约束以相等比较分区键列,其他列就可以使用排他约束特有的比较方式。

新功能为将列设置为默认统计目标添加更清晰的 ALTER TABLE 方法

工具命令

为将列设置为默认统计目标添加更清晰的 ALTER TABLE 方法(Peter Eisentraut)§

新语法是 ALTER TABLE ... SET STATISTICS DEFAULT;仍然支持使用 SET STATISTICS -1。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

新功能允许 ALTER TABLE 更改列的生成表达式

工具命令

允许 ALTER TABLE 更改列的生成表达式(Amul Sul)§

语法为 ALTER TABLE ... ALTER COLUMN ... SET EXPRESSION。

新功能允许在分区表上指定表访问方法

工具命令

允许在分区表上指定表访问方法(Justin Pryzby, Soumyadeep Chakraborty, Michael Paquier)§ §

新功能为 ALTER TABLE .. SET ACCESS METHOD 添加 DEFAULT 设置

工具命令

为 ALTER TABLE .. SET ACCESS METHOD 添加 DEFAULT 设置(Michael Paquier)§

新功能添加对在连接时触发的事件触发器的支持

工具命令

添加对在连接时触发的事件触发器的支持(Konstantin Knizhnik, Mikhail Gribkov)§

新功能为 REINDEX 添加事件触发器支持

工具命令

为 REINDEX 添加事件触发器支持(Garrett Thornburg, Jian He)§

新功能如果未指定表名,则允许 CLUSTER 选项使用带括号的语法

工具命令

如果未指定表名,则允许 CLUSTER 选项使用带括号的语法(Nathan Bossart)§

新功能允许 EXPLAIN 报告优化器内存使用情况

工具命令 / EXPLAIN

允许 EXPLAIN 报告优化器内存使用情况(Ashutosh Bapat)§

该选项名为 MEMORY。

新功能添加 EXPLAIN 选项 SERIALIZE,用于报告为网络传输转换数据的代价

工具命令 / EXPLAIN

添加 EXPLAIN 选项 SERIALIZE,用于报告为网络传输转换数据的代价(Stepan Rutz, Matthias van de Meent)§

新功能为 EXPLAIN 的 BUFFERS 输出添加本地 I/O 块读/写耗时统计信息

工具命令 / EXPLAIN

为 EXPLAIN 的 BUFFERS 输出添加本地 I/O 块读/写耗时统计信息(Nazir Bilal Yavuz)§

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

新功能改进 EXPLAIN 对 SubPlan 节点和输出参数的显示

工具命令 / EXPLAIN

改进 EXPLAIN 对 SubPlan 节点和输出参数的显示(Tom Lane, Dean Rasheed)§

新功能为 EXPLAIN 添加 JIT deform_counter 细节

工具命令 / EXPLAIN

为 EXPLAIN 添加 JIT deform_counter 细节(Dmitry Dolgov)§

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

新功能允许 interval 数据类型支持 +/-infinity 值

数据类型

允许 interval 数据类型支持 +/-infinity 值(Joseph Koshakow, Jian He, Ashutosh Bapat)§

新功能如果该类型是在同一事务中创建的,则允许使用通过 ALTER TYPE 新增的 ENUM 值

数据类型

如果该类型是在同一事务中创建的,则允许使用通过 ALTER TYPE 新增的 ENUM 值(Tom Lane)§

这在以前是不允许的。

新功能允许 MERGE 修改可更新视图

MERGE

允许 MERGE 修改可更新视图(Dean Rasheed)§

新功能为 MERGE 添加 WHEN NOT MATCHED BY SOURCE

MERGE

为 MERGE 添加 WHEN NOT MATCHED BY SOURCE(Dean Rasheed)§

以前已经支持在目标行上使用 WHEN NOT MATCHED。

新功能允许 MERGE 使用 RETURNING 子句

MERGE

允许 MERGE 使用 RETURNING 子句(Dean Rasheed)§

新的 RETURNING 函数 merge_action() 会报告生成该行的 DML 操作。

新功能添加函数 JSON_TABLE(),用于将 JSON 数据转换为表表示形式

函数

添加函数 JSON_TABLE(),用于将 JSON 数据转换为表表示形式(Nikita Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander Korotkov, Andrew Dunstan, Amit Langote, Jian He)§ §

该函数可在 SELECT 查询的 FROM 子句中用作元组源。

新功能添加 SQL/JSON 构造函数 JSON()、JSON_SCALAR() 和 JSON_SERIALIZE()

函数

添加 SQL/JSON 构造函数 JSON()、JSON_SCALAR() 和 JSON_SERIALIZE()(Nikita Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander Korotkov, Andrew Dunstan, Amit Langote)§

新功能添加 SQL/JSON 查询函数 JSON_EXISTS()、JSON_QUERY() 和 JSON_VALUE()

函数

添加 SQL/JSON 查询函数 JSON_EXISTS()、JSON_QUERY() 和 JSON_VALUE()(Nikita Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander Korotkov, Andrew Dunstan, Amit Langote, Peter Eisentraut, Jian He)§ § § § §

新功能添加 jsonpath 方法,用于将 JSON 值转换为其他数据类型

函数

添加 jsonpath 方法,用于将 JSON 值转换为其他数据类型(Jeevan Chalke)§

这些 jsonpath 方法包括 .bigint()、.boolean()、.date()、.decimal([precision [, scale]])、.integer()、.number()、.string()、.time()、.time_tz()、.timestamp()、以及 .timestamp_tz()。

新功能为 to_timestamp() 添加时区格式说明符

函数

为 to_timestamp() 添加时区格式说明符(Tom Lane)§

TZ 接受时区缩写或数字偏移,而 OF 只接受数字偏移。

新功能允许通过 AT LOCAL 指定会话时区

函数

允许通过 AT LOCAL 指定会话时区(Vik Fearing)§

这在为时间戳值添加或移除时区,而不是显式指定会话时区字面量时很有用。

新功能添加函数 uuid_extract_timestamp() 和 uuid_extract_version(),用于返回 UUID 信息

函数

添加函数 uuid_extract_timestamp() 和 uuid_extract_version(),用于返回 UUID 信息(Andrey Borodin)§

新功能添加用于在指定范围内生成随机数的函数

函数

添加用于在指定范围内生成随机数的函数(Dean Rasheed)§

这些函数是 random(min, max),其参数可为 integer、bigint 和 numeric 类型的值。

新功能添加将整数转换为二进制和八进制字符串的函数

函数

添加将整数转换为二进制和八进制字符串的函数(Eric Radman, Nathan Bossart)§

这些函数是 to_bin() 和 to_oct()。

新功能添加 Unicode 信息函数

函数

添加 Unicode 信息函数(Jeff Davis)§

函数 unicode_version() 返回 Unicode 版本,icu_unicode_version() 返回 ICU 版本,而 unicode_assigned() 返回字符是否已分配 Unicode 代码点。

新功能添加函数 xmltext(),用于将文本转换为单个 XML 文本节点

函数

添加函数 xmltext(),用于将文本转换为单个 XML 文本节点(Jim Jones)§

新功能添加函数 to_regtypemod(),用于返回类型说明的类型修饰符

函数

添加函数 to_regtypemod(),用于返回类型说明的类型修饰符(David Wheeler, Erik Wienhold)§

新功能添加函数 pg_basetype(),用于返回域的基础类型

函数

添加函数 pg_basetype(),用于返回域的基础类型(Steve Chavez)§

新功能添加函数 pg_column_toast_chunk_id(),用于返回某个值的 TOAST 标识符

函数

添加函数 pg_column_toast_chunk_id(),用于返回某个值的 TOAST 标识符(Yugo Nagata)§

如果该值未存储在 TOAST 中,则返回 NULL。

新功能允许 plpgsql 的 %TYPE 和 %ROWTYPE 说明表示非数组类型的数组

PL/pgSQL

允许 plpgsql 的 %TYPE 和 %ROWTYPE 说明表示非数组类型的数组(Quan Zongliang, Pavel Stehule)§

新功能允许 plpgsql 的 %TYPE 说明引用复合列

PL/pgSQL

允许 plpgsql 的 %TYPE 说明引用复合列(Tom Lane)§

新功能添加用于更改角色密码的 libpq 函数

libpq

添加用于更改角色密码的 libpq 函数(Joe Conway)§

新函数 PQchangePassword() 会在将新密码发送到服务器之前先对其进行 hash 运算。

新功能添加用于关闭 portal 和预备语句的 libpq 函数

libpq

添加用于关闭 portal 和预备语句的 libpq 函数(Jelte Fennema-Nio)§

这些函数是 PQclosePrepared()、PQclosePortal()、PQsendClosePrepared() 以及 PQsendClosePortal()。

新功能添加 libpq API,允许发起阻塞和非阻塞的取消请求,并在已启用加密时使用加密

libpq

添加 libpq API,允许发起阻塞和非阻塞的取消请求,并在已启用加密时使用加密(Jelte Fennema-Nio)§

先前只支持阻塞且未加密的取消请求。

新功能添加 libpq 函数 PQsocketPoll(),以允许对网络套接字进行轮询

libpq

添加 libpq 函数 PQsocketPoll(),以允许对网络套接字进行轮询(Tristan Partin, Tom Lane)§ §

新功能添加 libpq 函数 PQsendPipelineSync(),用于发送管道同步点

libpq

添加 libpq 函数 PQsendPipelineSync(),用于发送管道同步点(Anton Kirilov)§

这与 PQpipelineSync() 类似,但除非达到输出缓冲区的大小阈值,否则不会将数据刷新到服务器。

新功能添加 libpq 函数 PQsetChunkedRowsMode(),以允许分块获取结果

libpq

添加 libpq 函数 PQsetChunkedRowsMode(),以允许分块获取结果(Daniel Vérité)§

新功能允许 TLS 连接无需网络往返协商

libpq

允许 TLS 连接无需网络往返协商(Greg Stark, Heikki Linnakangas, Peter Eisentraut, Michael Paquier, Daniel Gustafsson)§ § § § § § § §

这通过客户端选项 sslnegotiation=direct,启用,需要 ALPN,并且仅适用于 PostgreSQL 17 及更高版本的服务器。

新功能改进 psql 对默认权限和空权限的显示

psql

改进 psql 对默认权限和空权限的显示(Erik Wienhold, Laurenz Albe)§

\dp 命令现在对空权限显示 (none);默认权限仍显示为空。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

新功能使反斜杠命令遵循 \pset null

psql

使反斜杠命令遵循 \pset null(Erik Wienhold, Laurenz Albe)§

先前 \pset null 会被忽略。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

新功能允许 psql 的 \watch 在返回行数达到最小值后停止

psql

允许 psql 的 \watch 在返回行数达到最小值后停止(Greg Sabino Mullane)§

该参数是 min_rows。

新功能允许使用 control-C 取消 psql 的连接尝试

psql

允许使用 control-C 取消 psql 的连接尝试(Tristan Partin)§

新功能允许 psql 在非 SELECT 查询中遵循 FETCH_COUNT

psql

允许 psql 在非 SELECT 查询中遵循 FETCH_COUNT(Daniel Vérité)§

新功能改进 psql 的 Tab 补全

psql

改进 psql 的 Tab 补全(Dagfinn Ilmari Mannsåker, Gilles Darold, Christoph Heiss, Steve Chavez, Vignesh C, Pavel Borisov, Jian He)§ § § § § § § §

新功能添加应用程序pg_walsummary,用于转储 WAL 摘要文件

服务器应用

添加应用程序pg_walsummary,用于转储 WAL 摘要文件(Robert Haas)§

新功能允许pg_dump的大型对象分批恢复

服务器应用

允许pg_dump的大型对象分批恢复(Tom Lane)§

这使大量大型对象的恢复能够避开事务限制,并支持并行恢复。

新功能添加 pg_dump 选项 --exclude-extension

服务器应用

添加 pg_dump 选项 --exclude-extension(Ayush Vatsa)§

新功能允许pg_dump、pg_dumpall和pg_restore在文件中指定要包含或排除的对象

服务器应用

允许pg_dump、pg_dumpall和pg_restore在文件中指定要包含或排除的对象(Pavel Stehule, Daniel Gustafsson)§

该选项名为 --filter。

新功能为多个客户端应用程序添加 --sync-method 参数

服务器应用

为多个客户端应用程序添加 --sync-method 参数(Justin Pryzby, Nathan Bossart)§

这些应用程序是initdb、pg_basebackup、pg_checksums、pg_dump、pg_rewind和pg_upgrade。

新功能为pg_restore添加 --transaction-size 选项,允许按事务批次恢复对象

服务器应用

为pg_restore添加 --transaction-size 选项,允许按事务批次恢复对象(Tom Lane)§

这既能获得事务批处理的性能收益,又能避免事务块过大的问题。

新功能将pgbench的调试模式选项从 -d 改为 --debug

服务器应用

将pgbench的调试模式选项从 -d 改为 --debug(Greg Sabino Mullane)§

-d 现在用于数据库名,同时也可以使用新的 --dbname 选项。

新功能添加 pgbench 选项 --exit-on-abort,以便在任一客户端中止后退出

服务器应用

添加 pgbench 选项 --exit-on-abort,以便在任一客户端中止后退出(Yugo Nagata)§

新功能添加 pgbench 命令 \syncpipeline,用于发送同步消息

服务器应用

添加 pgbench 命令 \syncpipeline,用于发送同步消息(Anthonin Bonnefoy)§

新功能允许pg_archivecleanup删除备份历史文件

服务器应用

允许pg_archivecleanup删除备份历史文件(Atsushi Torikoshi)§

该选项是 --clean-backup-history。

新功能为 pg_archivecleanup 添加一些长选项

服务器应用

为 pg_archivecleanup 添加一些长选项(Atsushi Torikoshi)§

这些长选项是 --debug、--dry-run 和 --strip-extension。

新功能允许pg_basebackup和pg_receivewal在其连接字符串中使用 dbname

服务器应用

允许pg_basebackup和pg_receivewal在其连接字符串中使用 dbname(Jelte Fennema-Nio)§

这对那些对数据库名敏感的连接池很有用。

新功能添加pg_upgrade选项 --copy-file-range

服务器应用

添加pg_upgrade选项 --copy-file-range(Thomas Munro)§

这在 Linux 和 FreeBSD 上受支持。

新功能允许reindexdb的 --index 并行处理来自不同表的索引

服务器应用

允许reindexdb的 --index 并行处理来自不同表的索引(Maxim Orlov, Svetlana Derevyanko, Alexander Korotkov)§

新功能允许 reindexdb、vacuumdb 和 clusterdb 在所有匹配模式的数据库中处理对象

服务器应用

允许 reindexdb、vacuumdb 和 clusterdb 在所有匹配模式的数据库中处理对象(Nathan Bossart)§ § §

新选项 --all 控制此行为。

新功能移除对 OpenSSL 1.0.1 的支持

源代码

移除对 OpenSSL 1.0.1 的支持(Michael Paquier)§

新功能允许测试在 OpenSSL FIPS 模式下通过

源代码

允许测试在 OpenSSL FIPS 模式下通过(Peter Eisentraut)§ §

新功能使用 CPU AVX-512 指令进行位计数

源代码

使用 CPU AVX-512 指令进行位计数(Paul Amonson, Nathan Bossart, Ants Aasma)§ §

新功能要求 LLVM 版本为 10 或更高

源代码

要求 LLVM 版本为 10 或更高(Thomas Munro)§

新功能在 64 位 LoongArch CPU 上使用原生 CRC 指令

源代码

在 64 位 LoongArch CPU 上使用原生 CRC 指令(Xudong Yang)§

新功能移除对 AIX 的支持

源代码

移除对 AIX 的支持(Heikki Linnakangas)§

新功能移除 Microsoft Visual Studio 专用的 PostgreSQL 构建选项

源代码

移除 Microsoft Visual Studio 专用的 PostgreSQL 构建选项(Michael Paquier)§

Meson 现在是 Visual Studio 构建的唯一可用方法。

新功能移除 configure 选项 --disable-thread-safety

源代码

移除 configure 选项 --disable-thread-safety(Thomas Munro, Heikki Linnakangas)§ §

我们现在假定所有受支持的平台都具有足够的线程支持。

新功能移除 configure 选项 --with-CC

源代码

移除 configure 选项 --with-CC(Heikki Linnakangas)§

现在指定编译器的唯一受支持方法是设置 CC 环境变量。

新功能用户定义的数据类型接收函数将不再接收到以空字符终止的数据

源代码

用户定义的数据类型接收函数将不再接收到以空字符终止的数据(David Rowley)§

新功能添加增量式 JSON 解析器,以用于超大的 JSON 文档

源代码

添加增量式 JSON 解析器,以用于超大的 JSON 文档(Andrew Dunstan)§

新功能将顶层 README 文件转换为 Markdown

源代码

将顶层 README 文件转换为 Markdown(Nathan Bossart)§

新功能移除不再需要的顶层 INSTALL 文件

源代码

移除不再需要的顶层 INSTALL 文件(Tom Lane)§

新功能移除 make 的 distprep 选项

源代码

移除 make 的 distprep 选项(Peter Eisentraut)§

新功能为 make 添加对 Android 共享库的支持

源代码

为 make 添加对 Android 共享库的支持(Peter Eisentraut)§

新功能添加后端对注入点的支持

源代码

添加后端对注入点的支持(Michael Paquier)§ § § §

这用于服务器调试,并且必须在服务器编译时启用。

新功能添加动态共享内存注册表

源代码

添加动态共享内存注册表(Nathan Bossart)§

这使得那些未在启动时初始化的共享库也能够协调对动态共享内存的访问。

BUG 修复修复 emit_log_hook,使其对同一查询使用与其他日志记录相同的时间值

源代码

修复 emit_log_hook,使其对同一查询使用与其他日志记录相同的时间值(Kambam Vinay, Michael Paquier)§

新功能改进关于使用 jsonpath 进行谓词检查的文档

源代码

改进关于使用 jsonpath 进行谓词检查的文档(David Wheeler)§

新功能允许将带有非连接限制条件的连接下推到外部服务器和自定义扫描中

附加模块

允许将带有非连接限制条件的连接下推到外部服务器和自定义扫描中(Richard Guo, Etsuro Fujita)§

外部数据包装器和自定义扫描需要修改才能处理这些情况。

新功能允许将 EXISTS 和 IN 子查询下推到postgres_fdw外部服务器

附加模块

允许将 EXISTS 和 IN 子查询下推到postgres_fdw外部服务器(Alexander Pyhalov)§

新功能提高默认的外部数据包装器元组代价

附加模块

提高默认的外部数据包装器元组代价(David Rowley, Umair Shahid)§ §

该值由优化器使用。

新功能允许中断dblink的数据库操作

附加模块

允许中断dblink的数据库操作(Noah Misch)§

新功能允许在 ltree 列上创建 hash 索引

附加模块

允许在 ltree 列上创建 hash 索引(Tommy Pavlicek)§

这也使得能够在 ltree 列上进行哈希连接和 hash 聚合。

新功能允许 unaccent 的字符转换规则包含空白字符和引号

附加模块

允许 unaccent 的字符转换规则包含空白字符和引号(Michael Paquier)§

unaccent.rules 文件的语法已更改。

新功能允许 amcheck 使用新选项 --checkunique 检查唯一约束违反

附加模块

允许 amcheck 使用新选项 --checkunique 检查唯一约束违反(Anastasia Lubennikova, Pavel Borisov, Maxim Orlov)§

新功能允许 citext 的测试在 OpenSSL FIPS 模式下通过

附加模块

允许 citext 的测试在 OpenSSL FIPS 模式下通过(Peter Eisentraut)§

新功能允许 pgcrypto 的测试在 OpenSSL FIPS 模式下通过

附加模块

允许 pgcrypto 的测试在 OpenSSL FIPS 模式下通过(Peter Eisentraut)§

新功能移除一些未使用的 SPI 宏

附加模块

移除一些未使用的 SPI 宏(Bharath Rupireddy)§

新功能允许 ALTER OPERATOR 设置更多优化属性

附加模块

允许 ALTER OPERATOR 设置更多优化属性(Tommy Pavlicek)§

这对扩展很有用。

新功能允许扩展定义自定义等待事件

附加模块

允许扩展定义自定义等待事件(Masahiro Ikeda)§ § § §

已为 postgres_fdw 和 dblink 添加自定义等待事件。

新功能添加 pg_buffercache 函数 pg_buffercache_evict(),以允许逐出共享缓冲区

附加模块

添加 pg_buffercache 函数 pg_buffercache_evict(),以允许逐出共享缓冲区(Palak Chaturvedi, Thomas Munro)§

这对测试很有用。

新功能将 pg_stat_statements 中 CALL 的参数替换为占位符

附加模块 / pg_stat_statements

将 pg_stat_statements 中 CALL 的参数替换为占位符(Sami Imseih)§

新功能将存储在 pg_stat_statements 中的保存点名称替换为占位符

附加模块 / pg_stat_statements

将存储在 pg_stat_statements 中的保存点名称替换为占位符(Greg Sabino Mullane)§

这会大幅减少记录 SAVEPOINT、RELEASE SAVEPOINT 和 ROLLBACK TO SAVEPOINT 命令所需的条目数量。

新功能将存储在 pg_stat_statements 中的两阶段提交 GID 替换为占位符

附加模块 / pg_stat_statements

将存储在 pg_stat_statements 中的两阶段提交 GID 替换为占位符(Michael Paquier)§

这会大幅减少记录 PREPARE TRANSACTION、COMMIT PREPARED 和 ROLLBACK PREPARED 所需的条目数量。

新功能在 pg_stat_statements 中跟踪 DEALLOCATE

附加模块 / pg_stat_statements

在 pg_stat_statements 中跟踪 DEALLOCATE(Dagfinn Ilmari Mannsåker, Michael Paquier)§

DEALLOCATE 名称在 pg_stat_statements 中存储为占位符。

新功能为 pg_stat_statements 添加本地 I/O 块读/写耗时统计列

附加模块 / pg_stat_statements

为 pg_stat_statements 添加本地 I/O 块读/写耗时统计列(Nazir Bilal Yavuz)§ §

新列是 local_blk_read_time 和 local_blk_write_time。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

新功能为 pg_stat_statements 添加 JIT deform_counter 细节

附加模块 / pg_stat_statements

为 pg_stat_statements 添加 JIT deform_counter 细节(Dmitry Dolgov)§

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

新功能为 pg_stat_statements_reset() 添加可选的第四个参数(minmax_only),以允许仅重置最小/最大统计信息

附加模块 / pg_stat_statements

为 pg_stat_statements_reset() 添加可选的第四个参数(minmax_only),以允许仅重置最小/最大统计信息(Andrei Zubkov)§

该参数默认为 false。

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

新功能为 pg_stat_statements 添加列 stats_since 和 minmax_stats_since,用于跟踪条目创建时间以及上次最小/最大值重置时间

附加模块 / pg_stat_statements

为 pg_stat_statements 添加列 stats_since 和 minmax_stats_since,用于跟踪条目创建时间以及上次最小/最大值重置时间(Andrei Zubkov)§

关联记录(1)

“同一变更”有完整对应证据;“相关提交”可能包含多个独立事项、部分回补或后续调整,各版本说明分别保留。

这份对比如何生成?

对比以 PostgreSQL 发行说明为依据,汇总起始版本之后、目标版本及之前的变更,支持同一大版本内的小版本更新,以及跨大版本升级。跨大版本时,旧分支的维护记录只纳入到下一大版本首次发布之日,所有记录均不晚于目标版本的发布日期。大版本名称(如 18)指首个正式版本(18.0);测试版与开发快照会单独标注。

条目正文来自本站中文手册,版本清单、条目覆盖与提交依据逐一核对上游英文原文。每条变更保留完整说明与原文链接;分类用于辅助浏览,具体影响、适用条件与升级操作请阅读条目正文和各版本的升级说明。

同一修复可能回补到多个版本分支。对比会保守合并可确认相同的条目,并保留各分支完整说明;已知由起始版本包含的修复会排除。一条说明包含多个独立修复时,只有全部已包含才排除。大版本新功能不因与旧版补丁存在提交关联而合并,不能确认相同的条目继续保留。这是发行说明的累计差异,不能覆盖二进制程序之间的每一处代码变化。

CVE 独立依据 PostgreSQL 官方安全公告与漏洞记录计算:起始版本受影响、目标版本已修复或不受影响的漏洞才计入,按编号去重。目标版本仍受影响的漏洞另行提示;安全变更条数与 CVE 数量分别统计。

交互参考 pgversions.com 与 pgversionreport,内容来自 PostgreSQL 发行说明。更多历史资料见发行说明归档。