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

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

文档版本对比

POSTGRESQL · VERSION COMPARE

PostgreSQL 13.0 的版本变更

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

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

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

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

本次发布的全部变更

13.0

2020-09-24

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

13.0 历史版本维护截止 2025-11-13

PostgreSQL 13.0

升级与兼容性说明

对于希望从任何先前版本迁移数据的用户,需要使用pg_dumpall进行导出/恢复,或使用pg_upgrade或逻辑复制。有关迁移到新主版本的一般信息,请参见第 18.6 节。

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

兼容性变化将 SIMILAR TO ... ESCAPE NULL 改为返回 NULL

兼容性

将 SIMILAR TO ... ESCAPE NULL 改为返回 NULL(Tom Lane)§

这一新行为符合 SQL 规范。以前,ESCAPE 为空值时,被解释为使用默认转义字符串(反斜杠字符)。这也适用于 substring(text FROM pattern ESCAPE text)。通过保持原函数不变,在旧视图中保留了以前的行为。

兼容性变化使 json[b]_to_tsvector() 完整检查其 string 选项的拼写

兼容性

使 json[b]_to_tsvector() 完整检查其 string 选项的拼写(Dominik Czarnota)§

兼容性变化改变非默认的effective_io_concurrency值影响并发度的方式

兼容性

改变非默认的effective_io_concurrency值影响并发度的方式(Thomas Munro)§

以前,该值在用于设置并发请求数之前会经过调整。现在直接使用该值。可以通过以下方式将旧值转换为新值:

SELECT round(sum(OLDVALUE / n::float)) AS newvalue FROM generate_series(1, OLDVALUE) s(n);
兼容性变化不再在pg_stat_ssl和pg_stat_gssapi系统视图中显示辅助进程

兼容性

不再在pg_stat_ssl和pg_stat_gssapi系统视图中显示辅助进程(Euler Taveira)§

如果查询将这些视图与pg_stat_activity连接,并希望看到辅助进程,就需要使用左连接。

兼容性变化重命名多种等待事件以提高一致性

兼容性

重命名多种等待事件以提高一致性(Fujii Masao,Tom Lane)§ § § § §

兼容性变化修复 ALTER FOREIGN TABLE ... RENAME COLUMN,使其返回更合适的命令标签

兼容性

修复 ALTER FOREIGN TABLE ... RENAME COLUMN,使其返回更合适的命令标签(Fujii Masao)§

以前返回 ALTER TABLE;现在返回 ALTER FOREIGN TABLE。

关联记录(1)

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

兼容性变化修复 ALTER MATERIALIZED VIEW ... RENAME COLUMN,使其返回更合适的命令标签

兼容性

修复 ALTER MATERIALIZED VIEW ... RENAME COLUMN,使其返回更合适的命令标签(Fujii Masao)§

以前返回 ALTER TABLE;现在返回 ALTER MATERIALIZED VIEW。

关联记录(1)

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

兼容性变化将配置参数 wal_keep_segments 重命名为wal_keep_size

兼容性

将配置参数 wal_keep_segments 重命名为wal_keep_size(Fujii Masao)§

这决定为备库保留多少 WAL。它以 MB 为单位指定,而旧参数以文件数量指定。如果以前使用 wal_keep_segments,以下公式可以得到大致等价的设置:

wal_keep_size = wal_keep_segments * wal_segment_size (typically 16MB)
兼容性变化移除使用 PostgreSQL 8.0 之前的语法定义操作符类的支持

兼容性

移除使用 PostgreSQL 8.0 之前的语法定义操作符类的支持(Daniel Gustafsson)§

兼容性变化移除使用 PostgreSQL 7.3 之前的语法定义外键约束的支持

兼容性

移除使用 PostgreSQL 7.3 之前的语法定义外键约束的支持(Daniel Gustafsson)§

兼容性变化移除对 PostgreSQL 7.3 之前的服务器所使用的 "opaque" 伪类型的支持

兼容性

移除对 PostgreSQL 7.3 之前的服务器所使用的 "opaque" 伪类型的支持(Daniel Gustafsson)§

兼容性变化移除对升级未打包扩展(9.1 之前的扩展)的支持

兼容性

移除对升级未打包扩展(9.1 之前的扩展)的支持(Tom Lane)§

CREATE EXTENSION 不再支持 FROM 选项。任何仍使用未打包扩展的安装实例,都应在更新到 PostgreSQL 13 之前,将这些扩展升级为已打包的版本。

兼容性变化移除对时区数据库中 posixrules 文件的支持

兼容性

移除对时区数据库中 posixrules 文件的支持(Tom Lane)§

IANA 的时区工作组已弃用此特性,这意味着它将在未来几年中逐渐从系统的时区数据库中消失。为避免时区数据更新意外引发行为变化,我们从版本 13 开始移除了 PostgreSQL 对此特性的支持。这只影响缺少显式夏令时切换规则的 POSIX 风格时区指定的行为;以前可以通过安装自定义 posixrules 文件来确定切换规则,现在则使用硬编码规则。对于受影响的安装实例,建议改用地理时区名称。

兼容性变化在ltree中,当 lquery 模式包含相邻的带花括号星号时,例如 *{2}.*{3},将其正确解释为 *{5}

兼容性

在ltree中,当 lquery 模式包含相邻的带花括号星号时,例如 *{2}.*{3},将其正确解释为 *{5}(Nikita Glukhov)§

兼容性变化修复pageinspect的 bt_metap(),使其返回更合适、不易溢出的数据类型

兼容性

修复pageinspect的 bt_metap(),使其返回更合适、不易溢出的数据类型(Peter Geoghegan)§

新功能允许在更多情况下进行分区剪枝

服务器 / 分区

允许在更多情况下进行分区剪枝(Yuzuko Hosoya,Amit Langote,Álvaro Herrera)§ §

新功能允许在更多情况下进行逐分区连接

服务器 / 分区

允许在更多情况下进行逐分区连接(Ashutosh Bapat,Etsuro Fujita,Amit Langote,Tom Lane)§ §

例如,即使分区边界并不完全匹配,现在也可以在分区表之间进行逐分区连接。

新功能支持分区表上的行级 BEFORE 触发器

服务器 / 分区

支持分区表上的行级 BEFORE 触发器(Álvaro Herrera)§

但是,不允许此类触发器改变目标分区。

新功能允许通过发布对分区表进行逻辑复制

服务器 / 分区

允许通过发布对分区表进行逻辑复制(Amit Langote)§ §

以前,必须逐个复制分区。现在可以显式发布分区表,从而自动发布其所有分区。添加或移除分区时,也会将其相应地添加到发布或从发布中移除。CREATE PUBLICATION 的 publish_via_partition_root 选项控制分区变更是作为分区自身的变更发布,还是作为父表的变更发布。

新功能允许逻辑复制写入订阅者上的分区表

服务器 / 分区

允许逻辑复制写入订阅者上的分区表(Amit Langote)§

以前,订阅者只能将接收到的行写入非分区表。

新功能允许在分区表达式中使用整行变量(即 table.*)

服务器 / 分区

允许在分区表达式中使用整行变量(即 table.*)(Amit Langote)§

新功能更高效地存储 B-树索引中的重复项

服务器 / 索引

更高效地存储 B-树索引中的重复项(Anastasia Lubennikova,Peter Geoghegan)§

这通过只存储一次重复键,使低基数列能够高效地使用 B-树索引。使用pg_upgrade升级的用户,需要执行 REINDEX 才能让现有索引使用这一特性。

新功能允许 box 列上的 GiST 和 SP-GiST 索引支持 ORDER BY box <-> point 查询

服务器 / 索引

允许 box 列上的 GiST 和 SP-GiST 索引支持 ORDER BY box <-> point 查询(Nikita Glukhov)§ §

新功能允许 GIN 索引更高效地处理 tsquery 搜索中的 !(NOT)子句

服务器 / 索引

允许 GIN 索引更高效地处理 tsquery 搜索中的 !(NOT)子句(Nikita Glukhov,Alexander Korotkov,Tom Lane,Julien Rouhaud)§

新功能允许索引操作符类接受参数

服务器 / 索引

允许索引操作符类接受参数(Nikita Glukhov)§

关联记录(1)

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

新功能允许 CREATE INDEX 指定 GiST 签名长度和整数范围的最大数量

服务器 / 索引

允许 CREATE INDEX 指定 GiST 签名长度和整数范围的最大数量(Nikita Glukhov)§

在四字节和八字节整数数组、tsvector、pg_trgm、ltree和hstore列上创建的索引,现在可以控制这些 GiST 索引参数,而不再只能使用默认值。

关联记录(1)

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

新功能禁止将使用非默认排序规则的索引添加为表的唯一约束或主键约束

服务器 / 索引

禁止将使用非默认排序规则的索引添加为表的唯一约束或主键约束(Tom Lane)§

索引的排序规则必须与底层列的排序规则匹配,但 ALTER TABLE 以前未检查这一点。

新功能改进优化器对包含和匹配操作符的选择率估计

服务器 / 优化器

改进优化器对包含和匹配操作符的选择率估计(Tom Lane)§

新功能允许为扩展统计信息设置统计目标

服务器 / 优化器

允许为扩展统计信息设置统计目标(Tomas Vondra)§

这通过新的命令选项 ALTER STATISTICS ... SET STATISTICS 控制。以前,它基于更通用的统计目标设置计算得出。

新功能允许在单个查询中使用多个扩展统计对象

服务器 / 优化器

允许在单个查询中使用多个扩展统计对象(Tomas Vondra)§ §

新功能允许将扩展统计对象用于 OR 子句和 IN/ANY 常量列表

服务器 / 优化器

允许将扩展统计对象用于 OR 子句和 IN/ANY 常量列表(Pierre Ducroquet,Tomas Vondra)§ § §

新功能如果 FROM 子句中的函数求值为常量,则允许将其上拉(内联)

服务器 / 优化器

如果 FROM 子句中的函数求值为常量,则允许将其上拉(内联)(Alexander Kuzmenkov,Aleksandr Parfenov)§ §

性能改进实现增量排序

服务器 / 一般性能

实现增量排序(James Coleman,Alexander Korotkov,Tomas Vondra)§ §

如果已知查询的中间结果按照所需排序顺序的一个或多个前导键排好序,则可以将前导键相同的行分批排序,只考虑剩余键即可完成额外的排序。

如有需要,可以使用enable_incremental_sort控制此行为。

性能改进提高 inet 值的排序性能

服务器 / 一般性能

提高 inet 值的排序性能(Brandur Leach)§

性能改进允许hash 聚合对大型聚合结果集使用磁盘存储

服务器 / 一般性能

允许hash 聚合对大型聚合结果集使用磁盘存储(Jeff Davis)§ § §

以前,如果预计 hash 聚合使用的内存会超过work_mem,就会避免使用它。现在,即使如此也可以选择 hash 聚合计划。如果 hash 表超过 work_mem 乘以hash_mem_multiplier的大小,就会溢写到磁盘。

这一行为通常优于旧行为:以前,一旦选择了 hash 聚合,无论 hash 表增长到多大,都会一直保留在内存中;如果规划器估计有误,它可能变得非常大。如有需要,可以通过增大 hash_mem_multiplier 来获得类似旧行为的效果。

性能改进允许插入操作也触发自动清理中的清理活动,而不再仅由更新和删除触发

服务器 / 一般性能

允许插入操作也触发自动清理中的清理活动,而不再仅由更新和删除触发(Laurenz Albe,Darafei Praliaskouski)§

以前,仅有插入活动时会触发自动分析,但不会触发自动清理,理由是不存在需要移除的死元组。然而,清理扫描还有其他有益的副作用,例如设置页面全可见位,从而提高仅索引扫描的效率。另外,让仅插入的表接受周期性清理,有助于分散“冻结”旧元组的工作量,避免整个表同时达到防回卷阈值时,突然需要执行大量冻结工作。

如有需要,可以通过新参数autovacuum_vacuum_insert_threshold和autovacuum_vacuum_insert_scale_factor,或等价的表存储选项来调整此行为。

性能改进增加maintenance_io_concurrency参数,以控制维护操作的 I/O 并发度

服务器 / 一般性能

增加maintenance_io_concurrency参数,以控制维护操作的 I/O 并发度(Thomas Munro)§

性能改进如果wal_level为 minimal,则允许在创建或重写关系的事务期间跳过 WAL 写入

服务器 / 一般性能

如果wal_level为 minimal,则允许在创建或重写关系的事务期间跳过 WAL 写入(Kyotaro Horiguchi)§

对于大于wal_skip_threshold的关系,会对其文件执行 fsync,而不生成 WAL。以前,只有 COPY 操作会这样处理,但其实现有一个缺陷,可能在崩溃恢复期间导致数据丢失。

性能改进提高使用大量表空间时重放 DROP DATABASE 命令的性能

服务器 / 一般性能

提高使用大量表空间时重放 DROP DATABASE 命令的性能(Fujii Masao)§

性能改进提高截断超大关系的性能

服务器 / 一般性能

提高截断超大关系的性能(Kirk Jamison)§

性能改进改进对经过 TOAST 处理的值的起始字节的获取

服务器 / 一般性能

改进对经过 TOAST 处理的值的起始字节的获取(Binguo Bao,Andrey Borodin)§

以前,即使已知只需要起始的一部分字节,也会完整获取压缩的行外 TOAST 值。现在,只获取足以生成结果的数据。

性能改进提高 LISTEN/NOTIFY 的性能

服务器 / 一般性能

提高 LISTEN/NOTIFY 的性能(Martijn van Oosterhout,Tom Lane)§ § §

性能改进加快整数到文本的转换

服务器 / 一般性能

加快整数到文本的转换(David Fetter)§

性能改进减少包含大量 SQL 语句的查询字符串和扩展脚本的内存用量

服务器 / 一般性能

减少包含大量 SQL 语句的查询字符串和扩展脚本的内存用量(Amit Langote)§

新功能允许 EXPLAIN、auto_explain、自动清理和pg_stat_statements跟踪 WAL 使用统计信息

服务器 / 监控

允许 EXPLAIN、auto_explain、自动清理和pg_stat_statements跟踪 WAL 使用统计信息(Kirill Bychik,Julien Rouhaud)§ § §

新功能允许抽样记录 SQL 语句,而不必记录全部语句

服务器 / 监控

允许抽样记录 SQL 语句,而不必记录全部语句(Adrien Nayrat)§

对于耗时超过log_min_duration_sample的语句,将按log_statement_sample_rate指定的比例记录日志。

新功能将后端类型添加到 csvlog 日志输出中,并允许选择将其加入log_line_prefix日志输出

服务器 / 监控

将后端类型添加到 csvlog 日志输出中,并允许选择将其加入log_line_prefix日志输出(Peter Eisentraut)§

新功能改进对预备语句参数日志记录的控制

服务器 / 监控

改进对预备语句参数日志记录的控制(Alexey Bashtanov,Álvaro Herrera)§ §

GUC 设置log_parameter_max_length控制记录未出错语句时输出的参数值的最大长度,而log_parameter_max_length_on_error对出错语句的日志执行相同控制。以前,发生错误时从不记录预备语句的参数。

新功能允许在出错后记录函数调用回溯

服务器 / 监控

允许在出错后记录函数调用回溯(Peter Eisentraut,Álvaro Herrera)§ §

新参数backtrace_functions指定哪些 C 函数应在出错时生成回溯。

BUG 修复将清理的缓冲区计数器扩为 64 位,以避免溢出

服务器 / 监控

将清理的缓冲区计数器扩为 64 位,以避免溢出(Álvaro Herrera)§

新功能向pg_stat_activity添加 leader_pid,以报告并行工作进程的领导者进程

服务器 / 系统视图

向pg_stat_activity添加 leader_pid,以报告并行工作进程的领导者进程(Julien Rouhaud)§

新功能增加系统视图 pg_stat_progress_basebackup,以报告流式基础备份的进度

服务器 / 系统视图

增加系统视图 pg_stat_progress_basebackup,以报告流式基础备份的进度(Fujii Masao)§

新功能增加系统视图 pg_stat_progress_analyze,以报告 ANALYZE 进度

服务器 / 系统视图

增加系统视图 pg_stat_progress_analyze,以报告 ANALYZE 进度(Álvaro Herrera,Tatsuro Yamada,Vinayak Pokale)§

新功能增加系统视图 pg_shmem_allocations,以显示共享内存使用情况

服务器 / 系统视图

增加系统视图 pg_shmem_allocations,以显示共享内存使用情况(Andres Freund,Robert Haas)§

新功能增加系统视图 pg_stat_slru,以监控内部 SLRU 缓存

服务器 / 系统视图

增加系统视图 pg_stat_slru,以监控内部 SLRU 缓存(Tomas Vondra)§

新功能允许将track_activity_query_size设置为最高 1MB

服务器 / 系统视图

允许将track_activity_query_size设置为最高 1MB(Vyacheslav Makarov)§

以前的最大值为 100kB。

新功能使用 posix_fallocate() 创建 DSM 段时报告等待事件

服务器 / 等待事件

使用 posix_fallocate() 创建 DSM 段时报告等待事件(Thomas Munro)§

新功能增加等待事件 VacuumDelay,以报告基于代价的清理延迟

服务器 / 等待事件

增加等待事件 VacuumDelay,以报告基于代价的清理延迟(Justin Pryzby)§

新功能为 WAL 归档和恢复暂停增加等待事件

服务器 / 等待事件

为 WAL 归档和恢复暂停增加等待事件(Fujii Masao)§

新增事件为 BackupWaitWalArchive 和 RecoveryPause。

新功能增加等待事件 RecoveryConflictSnapshot 和 RecoveryConflictTablespace,以监控恢复冲突

服务器 / 等待事件

增加等待事件 RecoveryConflictSnapshot 和 RecoveryConflictTablespace,以监控恢复冲突(Masahiko Sawada)§

性能改进提高基于 BSD 的系统上的等待事件性能

服务器 / 等待事件

提高基于 BSD 的系统上的等待事件性能(Thomas Munro)§

新功能只允许超级用户查看ssl_passphrase_command设置

服务器 / Authentication

只允许超级用户查看ssl_passphrase_command设置(Insung Moon)§

此项修改出于安全考虑。

新功能将服务器加密连接默认允许的最低 TLS 版本从 1.0 改为 1.2

服务器 / Authentication

将服务器加密连接默认允许的最低 TLS 版本从 1.0 改为 1.2(Peter Eisentraut)§

可以通过ssl_min_protocol_version控制这一选择。

新功能收紧关于只读事务模式下允许执行哪些实用命令的规则

服务器 / 服务器配置

收紧关于只读事务模式下允许执行哪些实用命令的规则(Robert Haas)§

此项修改还增加了可在并行查询中运行的实用命令数量。

新功能允许在服务器启动后修改allow_system_table_mods

服务器 / 服务器配置

允许在服务器启动后修改allow_system_table_mods(Peter Eisentraut)§

新功能在设置allow_system_table_mods时,禁止非超级用户修改系统表

服务器 / 服务器配置

在设置allow_system_table_mods时,禁止非超级用户修改系统表(Peter Eisentraut)§

以前,如果在服务器启动时设置了allow_system_table_mods,非超级用户就可以对系统表执行 INSERT/UPDATE/DELETE 命令。

新功能在 Windows 上启用 Unix 域套接字支持

服务器 / 服务器配置

在 Windows 上启用 Unix 域套接字支持(Peter Eisentraut)§

新功能允许通过重载更改流复制配置设置

流复制和恢复

允许通过重载更改流复制配置设置(Sergei Kornilov)§

以前,更改primary_conninfo和primary_slot_name需要重启服务器。

新功能允许 WAL 接收进程在未指定永久复制槽时使用临时复制槽

流复制和恢复

允许 WAL 接收进程在未指定永久复制槽时使用临时复制槽(Peter Eisentraut,Sergei Kornilov)§ §

可以使用wal_receiver_create_temp_slot启用此行为。

新功能允许通过max_slot_wal_keep_size限制复制槽的 WAL 存储量

流复制和恢复

允许通过max_slot_wal_keep_size限制复制槽的 WAL 存储量(Kyotaro Horiguchi)§

需要超过此值的复制槽会被标记为无效。

新功能允许备库提升取消任何已请求的暂停

流复制和恢复

允许备库提升取消任何已请求的暂停(Fujii Masao)§

以前,备库处于暂停状态时无法提升。

新功能如果恢复未到达指定的恢复目标,则产生错误

流复制和恢复

如果恢复未到达指定的恢复目标,则产生错误(Leif Gunnar Erlandsen,Peter Eisentraut)§

以前,即使未到达目标,备库也会在到达 WAL 末尾时自行提升。

新功能允许控制逻辑解码在溢写到磁盘之前可以使用多少内存

流复制和恢复

允许控制逻辑解码在溢写到磁盘之前可以使用多少内存(Tomas Vondra,Dilip Kumar,Amit Kapila)§

这由logical_decoding_work_mem控制。

新功能允许在 WAL 引用无效页面时仍继续恢复

流复制和恢复

允许在 WAL 引用无效页面时仍继续恢复(Fujii Masao)§

可以使用ignore_invalid_pages启用此功能。

新功能允许 VACUUM 并行处理一个表的各个索引

工具命令

允许 VACUUM 并行处理一个表的各个索引(Masahiko Sawada,Amit Kapila)§

新增的 PARALLEL 选项控制此行为。

新功能允许 FETCH FIRST 使用 WITH TIES 返回与最后一个结果行的排序值相同的所有额外行

工具命令

允许 FETCH FIRST 使用 WITH TIES 返回与最后一个结果行的排序值相同的所有额外行(Surafel Temesgen)§

新功能在 EXPLAIN 的 BUFFER 输出中报告规划期间的缓冲区使用情况

工具命令

在 EXPLAIN 的 BUFFER 输出中报告规划期间的缓冲区使用情况(Julien Rouhaud)§

新功能使 CREATE TABLE LIKE 将 CHECK 约束的 NO INHERIT 属性传递给所创建的表

工具命令

使 CREATE TABLE LIKE 将 CHECK 约束的 NO INHERIT 属性传递给所创建的表(Ildar Musin,Chris Travers)§

新功能对分区表使用 LOCK TABLE 时,不检查子表上的权限

工具命令

对分区表使用 LOCK TABLE 时,不检查子表上的权限(Amit Langote)§

新功能允许向标识列插入时使用 OVERRIDING USER VALUE

工具命令

允许向标识列插入时使用 OVERRIDING USER VALUE(Dean Rasheed)§

新功能增加 ALTER TABLE ... DROP EXPRESSION,以允许移除列的 GENERATED 属性

工具命令

增加 ALTER TABLE ... DROP EXPRESSION,以允许移除列的 GENERATED 属性(Peter Eisentraut)§

BUG 修复修复多步骤 ALTER TABLE 命令中的缺陷

工具命令

修复多步骤 ALTER TABLE 命令中的缺陷(Tom Lane)§

IF NOT EXISTS 子句现在按预期工作:如果列已存在,就不会执行派生操作(例如创建索引)。另外,将相关操作合并到一条 ALTER TABLE 中的某些情况,以前无法正常工作,现在也已可用。

新功能增加用于重命名视图列的 ALTER VIEW 语法

工具命令

增加用于重命名视图列的 ALTER VIEW 语法(Fujii Masao)§

以前已经可以重命名视图列,但必须写成 ALTER TABLE RENAME COLUMN,这令人困惑。

新功能增加 ALTER TYPE 选项,以修改基础类型的 TOAST 属性和支持函数

工具命令

增加 ALTER TYPE 选项,以修改基础类型的 TOAST 属性和支持函数(Tomas Vondra,Tom Lane)§

新功能增加 CREATE DATABASE 的 LOCALE 选项

工具命令

增加 CREATE DATABASE 的 LOCALE 选项(Peter Eisentraut)§

这将现有的 LC_COLLATE 和 LC_CTYPE 选项合并为单个选项。

新功能允许 DROP DATABASE 断开正在使用目标数据库的会话,以使删除成功

工具命令

允许 DROP DATABASE 断开正在使用目标数据库的会话,以使删除成功(Pavel Stehule,Amit Kapila)§

这通过 FORCE 选项启用。

新功能增加结构成员 tg_updatedcols,使 C 语言更新触发器能够知道哪些列被更新

工具命令

增加结构成员 tg_updatedcols,使 C 语言更新触发器能够知道哪些列被更新(Peter Eisentraut)§

新功能增加多态数据类型,供要求参数类型兼容的函数使用

数据类型

增加多态数据类型,供要求参数类型兼容的函数使用(Pavel Stehule)§

新增数据类型为 anycompatible、anycompatiblearray、anycompatiblenonarray 和 anycompatiblerange。

新功能增加 SQL 数据类型 xid8,以对外提供 FullTransactionId

数据类型

增加 SQL 数据类型 xid8,以对外提供 FullTransactionId(Thomas Munro)§

现有的 xid 数据类型只有四字节,因此不包含事务纪元。

新功能增加数据类型 regcollation 及相关函数,以表示排序规则对象的 OID

数据类型

增加数据类型 regcollation 及相关函数,以表示排序规则对象的 OID(Julien Rouhaud)§

新功能在某些情况下使用 glibc 版本作为排序规则版本标识符

数据类型

在某些情况下使用 glibc 版本作为排序规则版本标识符(Thomas Munro)§

如果 glibc 版本发生变化,将发出警告,提示依赖排序规则的索引可能损坏。

新功能增加 Windows 上的排序规则版本支持

数据类型

增加 Windows 上的排序规则版本支持(Thomas Munro)§

新功能允许通过后缀记法提取 ROW 表达式的成员

数据类型

允许通过后缀记法提取 ROW 表达式的成员(Tom Lane)§

例如,(ROW(4, 5.0)).f1 现在返回 4。

新功能增加 jsonb_set() 的另一个版本,改进对 NULL 的处理

函数

增加 jsonb_set() 的另一个版本,改进对 NULL 的处理(Andrew Dunstan)§

新函数 jsonb_set_lax() 根据请求处理值为 NULL 的新值:将指定键设为 JSON null、删除该键、抛出异常,或返回未经修改的 jsonb 值。

新功能增加 jsonpath 的 .datetime() 方法

函数

增加 jsonpath 的 .datetime() 方法(Nikita Glukhov,Teodor Sigaev,Oleg Bartunov,Alexander Korotkov)§

此函数允许将 JSON 值转换为时间戳,随后即可在 jsonpath 表达式中处理这些时间戳。此项修改还增加了支持时区感知输出的 jsonpath 函数。

新功能增加 SQL 函数 NORMALIZE(),以规范化 Unicode 字符串,并增加 IS NORMALIZED 来检查是否已规范化

函数

增加 SQL 函数 NORMALIZE(),以规范化 Unicode 字符串,并增加 IS NORMALIZED 来检查是否已规范化(Peter Eisentraut)§

新功能为 pg_lsn 增加 min() 和 max() 聚合

函数

为 pg_lsn 增加 min() 和 max() 聚合(Fabrízio de Royes Mello)§

这些聚合在监控查询中特别有用。

新功能允许Unicode 转义,例如 E'\unnnn' 或 U&'\nnnn',指定数据库编码中可用的任何字符,即使数据库编码不是 UTF-8

函数

允许Unicode 转义,例如 E'\unnnn' 或 U&'\nnnn',指定数据库编码中可用的任何字符,即使数据库编码不是 UTF-8(Tom Lane)§

新功能允许 to_date() 和 to_timestamp() 识别非英语的月份名和星期名

函数

允许 to_date() 和 to_timestamp() 识别非英语的月份名和星期名(Juan José Santamaría Flecha,Tom Lane)§

可识别的名称与 to_char() 使用相同格式模式输出的名称相同。

新功能增加日期时间格式模式 FF1 – FF6,以指定输入或输出 1 到 6 位小数秒

函数

增加日期时间格式模式 FF1 – FF6,以指定输入或输出 1 到 6 位小数秒(Alexander Korotkov,Nikita Glukhov,Teodor Sigaev,Oleg Bartunov)§

这些模式可用于 to_char()、to_timestamp() 和 jsonpath 的 .datetime()。

新功能增加日期时间格式模式 SSSSS,作为 SSSS 的 SQL 标准别名

函数

增加日期时间格式模式 SSSSS,作为 SSSS 的 SQL 标准别名(Nikita Glukhov,Alexander Korotkov)§

新功能增加函数 gen_random_uuid(),以生成版本 4 UUID

函数

增加函数 gen_random_uuid(),以生成版本 4 UUID(Peter Eisentraut)§

以前,UUID 生成函数只在外部模块uuid-ossp和pgcrypto中提供。

新功能增加最大公约数(gcd)和最小公倍数(lcm)函数

函数

增加最大公约数(gcd)和最小公倍数(lcm)函数(Vik Fearing)§

性能改进提高 numeric 类型的平方根(sqrt)和自然对数(ln)函数的性能与精度

函数

提高 numeric 类型的平方根(sqrt)和自然对数(ln)函数的性能与精度(Dean Rasheed)§ §

新功能增加函数 min_scale(),返回完整精确表示 numeric 值所需的小数点右侧位数

函数

增加函数 min_scale(),返回完整精确表示 numeric 值所需的小数点右侧位数(Pavel Stehule)§

关联记录(1)

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

新功能增加函数 trim_scale(),通过移除尾随零来减少 numeric 值的小数位数

函数

增加函数 trim_scale(),通过移除尾随零来减少 numeric 值的小数位数(Pavel Stehule)§

关联记录(1)

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

新功能增加距离操作符的交换子

函数

增加距离操作符的交换子(Nikita Glukhov)§

例如,以前只支持 point <-> line,现在 line <-> point 也可以使用。

新功能为所有事务 ID 函数创建 xid8 版本

函数

为所有事务 ID 函数创建 xid8 版本(Thomas Munro)§

为保持向后兼容,基于 xid 的旧函数仍然存在。

新功能允许 get_bit() 和 set_bit() 设置 bytea 值前 256MB 之外的位

函数

允许 get_bit() 和 set_bit() 设置 bytea 值前 256MB 之外的位(Movead Li)§

关联记录(5)

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

新功能允许在某些并行操作中使用咨询锁函数

函数

允许在某些并行操作中使用咨询锁函数(Tom Lane)§

新功能增加移除对象对扩展依赖的能力

函数

增加移除对象对扩展依赖的能力(Álvaro Herrera)§

对象可以是函数、物化视图、索引或触发器。语法为 ALTER .. NO DEPENDS ON。

性能改进提高简单 PL/pgSQL 表达式的性能

PL/pgSQL

提高简单 PL/pgSQL 表达式的性能(Tom Lane,Amit Langote)§

性能改进提高使用不可变表达式的 PL/pgSQL 函数的性能

PL/pgSQL

提高使用不可变表达式的 PL/pgSQL 函数的性能(Konstantin Knizhnik)§

新功能允许 libpq 客户端要求加密连接使用通道绑定

客户端接口

允许 libpq 客户端要求加密连接使用通道绑定(Jeff Davis)§

使用 libpq 连接参数 channel_binding,会强制 TLS 连接的另一端证明它知道用户的密码。这可以防止中间人攻击。

新功能增加 libpq 连接参数,以控制加密连接允许的最低和最高 TLS 版本

客户端接口

增加 libpq 连接参数,以控制加密连接允许的最低和最高 TLS 版本(Daniel Gustafsson)§ § §

这些设置为ssl_min_protocol_version和ssl_max_protocol_version。默认最低 TLS 版本为 1.2(这与以前的发行版相比是行为上的变化)。

新功能允许使用密码解锁客户端证书

客户端接口

允许使用密码解锁客户端证书(Craig Ringer,Andrew Dunstan)§

这通过 libpq 的sslpassword连接参数启用。

关联记录(1)

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

新功能允许 libpq 使用 DER 编码的客户端证书

客户端接口

允许 libpq 使用 DER 编码的客户端证书(Craig Ringer,Andrew Dunstan)§

关联记录(1)

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

BUG 修复修复 ecpg 的 EXEC SQL elif 指令,使其正确工作

客户端接口

修复 ecpg 的 EXEC SQL elif 指令,使其正确工作(Tom Lane)§

以前,它的行为与 endif 后跟 ifdef 相同,因此即使同一 if 结构中的前一个分支已成功匹配,也不会阻止展开 elif 分支或后续分支。

新功能将事务状态(%x)添加到 psql 的默认提示符中

客户端应用程序 / psql

将事务状态(%x)添加到 psql 的默认提示符中(Vik Fearing)§

新功能允许 psql 的次级提示符为空白,但与主提示符具有相同宽度

客户端应用程序 / psql

允许 psql 的次级提示符为空白,但与主提示符具有相同宽度(Thomas Munro)§

这通过将 PROMPT2 设为 %w 实现。

新功能允许 psql 的 \g 和 \gx 命令只在该条命令执行期间更改 \pset 输出选项

客户端应用程序 / psql

允许 psql 的 \g 和 \gx 命令只在该条命令执行期间更改 \pset 输出选项(Tom Lane)§

此特性允许使用 \g (expand=on) 这样的语法,它等价于 \gx。

新功能增加用于显示操作符类和操作符族的 psql 命令

客户端应用程序 / psql

增加用于显示操作符类和操作符族的 psql 命令(Sergey Cherkashin,Nikita Glukhov,Alexander Korotkov)§

新增命令为 \dAc、\dAf、\dAo 和 \dAp。

新功能在 psql 的 \dt+ 及相关命令中显示表的持久性

客户端应用程序 / psql

在 psql 的 \dt+ 及相关命令中显示表的持久性(David Fetter)§

在详细模式下,表、索引和视图的显示会指出对象是永久的、临时的,还是不记录 WAL 的。

新功能改进 psql 的 \d 对 TOAST 表的输出

客户端应用程序 / psql

改进 psql 的 \d 对 TOAST 表的输出(Justin Pryzby)§

BUG 修复修复 psql 的 \e 命令之后的重新显示

客户端应用程序 / psql

修复 psql 的 \e 命令之后的重新显示(Tom Lane)§

退出编辑器时,如果查询不以分号或 \g 结尾,现在会显示查询缓冲区的内容。

新功能向 psql 增加 \warn 命令

客户端应用程序 / psql

向 psql 增加 \warn 命令(David Fetter)§

这与 \echo 类似,但文本发送到 stderr,而非 stdout。

新功能将 PostgreSQL 主页添加到命令行 --help 输出中

客户端应用程序 / psql

将 PostgreSQL 主页添加到命令行 --help 输出中(Peter Eisentraut)§

新功能允许 pgbench 对其 “accounts” 表进行分区

客户端应用程序 / pgbench

允许 pgbench 对其 “accounts” 表进行分区(Fabien Coelho)§

这使分区性能测试成为可能。

新功能增加 pgbench 命令 \aset,其行为类似 \gset,但适用于多个查询

客户端应用程序 / pgbench

增加 pgbench 命令 \aset,其行为类似 \gset,但适用于多个查询(Fabien Coelho)§

新功能允许 pgbench 在服务器端而非客户端生成初始数据

客户端应用程序 / pgbench

允许 pgbench 在服务器端而非客户端生成初始数据(Fabien Coelho)§

新功能允许 pgbench 使用 --show-script 选项显示脚本内容

客户端应用程序 / pgbench

允许 pgbench 使用 --show-script 选项显示脚本内容(Fabien Coelho)§

新功能为基础备份生成备份清单,并验证备份

服务器应用程序

为基础备份生成备份清单,并验证备份(Robert Haas)§ §

新工具pg_verifybackup可以验证备份。

新功能使pg_basebackup默认估计备份总大小

服务器应用程序

使pg_basebackup默认估计备份总大小(Fujii Masao)§

这一计算使 pg_stat_progress_basebackup 能够显示进度。如果不需要,可以使用 --no-estimate-size 选项禁用它。以前,只有使用 --progress 选项时才会进行这一计算。

新功能为pg_rewind增加配置备库的选项

服务器应用程序

为pg_rewind增加配置备库的选项(Paul Guo,Jimmy Yih,Ashwin Agrawal)§

这与pg_basebackup的 --write-recovery-conf 选项一致。

新功能允许 pg_rewind 使用目标集群的restore_command获取所需的 WAL

服务器应用程序

允许 pg_rewind 使用目标集群的restore_command获取所需的 WAL(Alexey Kondratov)§

这通过 -c/--restore-target-wal 选项启用。

新功能使 pg_rewind 在回退之前自动运行崩溃恢复

服务器应用程序

使 pg_rewind 在回退之前自动运行崩溃恢复(Paul Guo,Jimmy Yih,Ashwin Agrawal)§

可以使用 --no-ensure-shutdown 禁用此行为。

新功能增加 pg_waldump 报告的 PREPARE TRANSACTION 相关信息

服务器应用程序

增加 pg_waldump 报告的 PREPARE TRANSACTION 相关信息(Fujii Masao)§

新功能增加pg_waldump选项 --quiet,以抑制非错误输出

服务器应用程序

增加pg_waldump选项 --quiet,以抑制非错误输出(Andres Freund,Robert Haas)§

新功能增加pg_dump选项 --include-foreign-data,以转储外部服务器上的数据

服务器应用程序

增加pg_dump选项 --include-foreign-data,以转储外部服务器上的数据(Luis Carril)§

新功能允许 vacuumdb 运行的清理命令以并行模式执行

服务器应用程序

允许 vacuumdb 运行的清理命令以并行模式执行(Masahiko Sawada)§

这通过新增的 --parallel 选项启用。

新功能允许 reindexdb 并行运行

服务器应用程序

允许 reindexdb 并行运行(Julien Rouhaud)§

并行模式通过新增的 --jobs 选项启用。

新功能允许 dropdb 断开正在使用目标数据库的会话,以使删除成功

服务器应用程序

允许 dropdb 断开正在使用目标数据库的会话,以使删除成功(Pavel Stehule)§

这通过 -f 选项启用。

新功能从 createuser 中移除 --adduser 和 --no-adduser

服务器应用程序

从 createuser 中移除 --adduser 和 --no-adduser(Alexander Lakhin)§

长期以来,用于此目的的推荐选项是 --superuser 和 --no-superuser。

新功能运行 pg_upgrade 时,将pg_upgrade程序所在的目录用作默认的 --new-bindir 设置

服务器应用程序

运行 pg_upgrade 时,将pg_upgrade程序所在的目录用作默认的 --new-bindir 设置(Daniel Gustafsson)§

新功能向文档中增加术语表

文档

向文档中增加术语表(Corey Huinker,Jürgen Purtz,Roger Harkavy,Álvaro Herrera)§

新功能重新编排包含函数和操作符信息的表格,使其更加清晰

文档

重新编排包含函数和操作符信息的表格,使其更加清晰(Tom Lane)§

新功能升级为使用 DocBook 4.5

文档

升级为使用 DocBook 4.5(Peter Eisentraut)§

新功能增加使用 Visual Studio 2019 构建的支持

源代码

增加使用 Visual Studio 2019 构建的支持(Haribabu Kommi)§

关联记录(5)

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

新功能增加 MSYS2 构建支持

源代码

增加 MSYS2 构建支持(Peter Eisentraut)§

新功能为 Power PC 编译器增加 compare_exchange 和 fetch_add 的汇编代码

源代码

为 Power PC 编译器增加 compare_exchange 和 fetch_add 的汇编代码(Noah Misch)§

新功能更新全文检索使用的 Snowball 词干分析器词典

源代码

更新全文检索使用的 Snowball 词干分析器词典(Panagiotis Mavrogiorgos)§

这增加了希腊语词干提取,并改进了丹麦语和法语的词干提取。

新功能移除对 Windows 2000 的支持

源代码

移除对 Windows 2000 的支持(Michael Paquier)§

新功能移除对非 ELF 的 BSD 系统的支持

源代码

移除对非 ELF 的 BSD 系统的支持(Peter Eisentraut)§

新功能移除对 Python 2.5.X 及更早版本的支持

源代码

移除对 Python 2.5.X 及更早版本的支持(Peter Eisentraut)§

新功能移除对 OpenSSL 0.9.8 和 1.0.0 的支持

源代码

移除对 OpenSSL 0.9.8 和 1.0.0 的支持(Michael Paquier)§

新功能移除 configure 选项 --disable-float8-byval 和 --disable-float4-byval

源代码

移除 configure 选项 --disable-float8-byval 和 --disable-float4-byval(Peter Eisentraut)§ §

这些内容曾用于兼容某些版本零 C 函数,但那些函数已不再受支持。

新功能将查询字符串传递给规划器钩子函数

源代码

将查询字符串传递给规划器钩子函数(Pascal Legrand,Julien Rouhaud)§

新功能增加 TRUNCATE 命令钩子

源代码

增加 TRUNCATE 命令钩子(Yuli Khodorkovskiy)§

新功能增加 TLS 初始化钩子

源代码

增加 TLS 初始化钩子(Andrew Dunstan)§

新功能允许在不预定义 Unix 域套接字目录的情况下构建

源代码

允许在不预定义 Unix 域套接字目录的情况下构建(Peter Eisentraut)§

新功能降低 Unix 平台上 SysV 资源键冲突的概率

源代码

降低 Unix 平台上 SysV 资源键冲突的概率(Tom Lane)§

新功能使用操作系统函数可靠地擦除包含敏感信息的内存

源代码

使用操作系统函数可靠地擦除包含敏感信息的内存(Peter Eisentraut)§

例如,可用它清除存储在内存中的密码。

新功能增加 headerscheck 脚本以测试 C 头文件的兼容性

源代码

增加 headerscheck 脚本以测试 C 头文件的兼容性(Tom Lane)§

新功能将内部列表实现为数组,而不再采用单元链表

源代码

将内部列表实现为数组,而不再采用单元链表(Tom Lane)§

这提高了访问大量对象的查询的性能。

新功能修改 TS_execute() 的 API

源代码

修改 TS_execute() 的 API(Tom Lane,Pavel Borisov)§ §

TS_execute 回调现在必须提供三值(是、否、可能)逻辑。现在默认准确计算 NOT 查询。

新功能允许将扩展指定为可信

附加模块

允许将扩展指定为可信(Tom Lane)§

拥有数据库级 CREATE 权限的用户,即使不是超级用户,也可以在数据库中安装这类扩展。此项修改还移除了 pg_pltemplate 系统目录。

新功能允许非超级用户不使用密码就连接到postgres_fdw外部服务器

附加模块

允许非超级用户不使用密码就连接到postgres_fdw外部服务器(Craig Ringer)§

具体来说,允许超级用户将某个用户映射的 password_required 设置为 false。仍须注意防止非超级用户使用超级用户凭据连接到外部服务器。

新功能允许 postgres_fdw 使用证书认证

附加模块

允许 postgres_fdw 使用证书认证(Craig Ringer)§

不同用户可以使用不同证书。

新功能允许sepgsql控制对 TRUNCATE 命令的访问

附加模块

允许sepgsql控制对 TRUNCATE 命令的访问(Yuli Khodorkovskiy)§

新功能增加扩展bool_plperl,以在 SQL 布尔值和 PL/Perl 布尔值之间进行双向转换

附加模块

增加扩展bool_plperl,以在 SQL 布尔值和 PL/Perl 布尔值之间进行双向转换(Ivan Panchenko)§

新功能使pg_stat_statements将 SELECT ... FOR UPDATE 命令与不带 FOR UPDATE 的命令分别处理

附加模块

使pg_stat_statements将 SELECT ... FOR UPDATE 命令与不带 FOR UPDATE 的命令分别处理(Andrew Gierth,Vik Fearing)§

新功能允许 pg_stat_statements 选择性地跟踪语句的规划时间

附加模块

允许 pg_stat_statements 选择性地跟踪语句的规划时间(Julien Rouhaud,Pascal Legrand,Thomas Munro,Fujii Masao)§ §

以前只跟踪执行时间。

新功能全面修改ltree的 lquery 语法,使其对 NOT(!)的处理更符合逻辑

附加模块

全面修改ltree的 lquery 语法,使其对 NOT(!)的处理更符合逻辑(Filip Rembialkowski,Tom Lane,Nikita Glukhov)§ §

另外,允许非 * 查询使用数值范围({})指定匹配次数。

新功能增加ltree、lquery 和 ltxtquery 类型的二进制 I/O 支持

附加模块

增加ltree、lquery 和 ltxtquery 类型的二进制 I/O 支持(Nino Floris)§

新功能为dict_int增加忽略整数符号的选项

附加模块

为dict_int增加忽略整数符号的选项(Jeff Janes)§

新功能增加adminpack函数 pg_file_sync(),以允许对文件执行 fsync

附加模块

增加adminpack函数 pg_file_sync(),以允许对文件执行 fsync(Fujii Masao)§

新功能增加pageinspect函数,以人类可读的格式输出 t_infomask/t_infomask2 值

附加模块

增加pageinspect函数,以人类可读的格式输出 t_infomask/t_infomask2 值(Craig Ringer,Sawada Masahiko,Michael Paquier)§ §

新功能向 pageinspect 输出添加 B-树索引去重处理相关列

附加模块

向 pageinspect 输出添加 B-树索引去重处理相关列(Peter Geoghegan)§

这份对比如何生成?

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

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

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

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

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