文档版本比较
POSTGRESQL · VERSION COMPARE
PostgreSQL 15.0 发布变化
此版本的完整功能、修复与兼容性说明,以及其他版本的关联记录。
包括起始版本之后至目标版本的变化。大版本号表示该分支的首个版本。
从数据库输出识别起始版本
完整发布变化
15.0
2022-10-13
15.0stable支持截止 2027-11-11
安全变化
| CVE / 问题 | 严重程度 | 修复版本 | 所选版本状态 |
|---|---|---|---|
| CVE-2018-1058 移除 public 模式对 PUBLIC 的创建权限 | 已记录修复 |
PostgreSQL 15.0
迁移与兼容性
对于希望从任何以前的版本迁移数据的人来说,需要使用pg_dumpall进行转储/恢复,或者使用pg_upgrade或逻辑复制。有关迁移到新主要版本的通用信息,请参阅第 19.6 节。
版本 15 包含多项可能影响与先前版本兼容性的变更。请注意以下不兼容之处:
安全移除 public 模式对 PUBLIC 的创建权限
兼容性将 public 模式的所有者更改为新的 pg_database_owner 角色
兼容性
将 public 模式的所有者更改为新的 pg_database_owner 角色(Noah Misch)§
这使每个数据库的所有者都能对其数据库中的 public 模式行使所有者权限。此前,该模式由引导超级用户拥有,因此非超级用户的数据库所有者无法对其执行任何操作。
此变更适用于新的数据库集簇和现有集簇中新创建的数据库。升级集簇或恢复数据库导出将保留 public 的现有所有权设置。
关联记录 (1)
兼容性移除长期弃用的独占备份模式
兼容性将 hash_mem_multiplier 默认值增加到 2.0
兼容性
将 hash_mem_multiplier 默认值增加到 2.0(Peter Geoghegan)§
这允许查询 hash 操作使用比其他操作更多的 work_mem 内存。
兼容性移除服务器端语言 plpython2u 和通用 Python 语言 plpythonu
兼容性
移除服务器端语言 plpython2u 和通用 Python 语言 plpythonu(Andres Freund)§
Python 2.x 已不再受支持。虽然 plpythonu 最初的意图是最终可以指向 plpython3u,但现在更改它似乎更可能造成问题而非解决问题,因此它被直接移除。
兼容性如果向 array_to_tsvector() 传递空字符串数组元素,则生成错误
兼容性
如果向 array_to_tsvector() 传递空字符串数组元素,则生成错误(Jean-Christophe Arnu)§
这是被禁止的,因为词位不应为空。先前 Postgres 版本的用户应确认未存储空词位,因为它们可能导致导出/恢复失败和结果不一致。
兼容性防止 CREATE OR REPLACE VIEW 更改输出列的排序规则
兼容性
防止 CREATE OR REPLACE VIEW 更改输出列的排序规则(Tom Lane)§
兼容性禁止零长度的 Unicode 标识符,例如 U&""
兼容性
禁止零长度的 Unicode 标识符,例如 U&""(Peter Eisentraut)§
非 Unicode 的零长度标识符已经被禁止。
兼容性防止数字字面量具有非数字的尾随字符
兼容性调整 JSON 数字字面量处理以匹配 SQL/JSON 标准
兼容性当 interval 输入为大于月的单位提供小数值时,将其舍入到最接近的整数月数
兼容性改进带有尾随句点的 interval 解析的一致性
兼容性
改进带有尾随句点的 interval 解析的一致性(Tom Lane)§
带有尾随句点的数字在某些平台上被拒绝。
兼容性将 interval 输出函数标记为 stable 而非 immutable,因为它依赖于 IntervalStyle
兼容性
将 interval 输出函数标记为 stable 而非 immutable,因为它依赖于 IntervalStyle(Tom Lane)§
例如,这将导致依赖于 interval 值文本输出的索引创建失败。
兼容性在间隔调整函数中检测整数溢出
兼容性更改类型 "char" 非 ASCII 字符的 I/O 格式
兼容性移除登录角色对其自身角色成员资格的默认 ADMIN OPTION 权限
兼容性
移除登录角色对其自身角色成员资格的默认 ADMIN OPTION 权限(Robert Haas)§
以前,登录角色即使没有 ADMIN OPTION 权限也可以添加/移除其自身角色的成员。
兼容性允许逻辑复制以订阅的所有者身份运行
兼容性防止在订阅所有者对表没有 SELECT 权限的表上执行 UPDATE 和 DELETE 逻辑复制操作
兼容性当 EXPLAIN 引用会话的临时对象模式时,将其称为 pg_temp
兼容性修复 pg_statio_all_tables 以在 TOAST 表具有多个索引的罕见情况下求和值
兼容性
修复 pg_statio_all_tables 以在 TOAST 表具有多个索引的罕见情况下求和值(Andrei Zubkov)§
以前这种情况会为每个索引显示一行。
兼容性禁止设置与已安装扩展名称匹配但不是该扩展声明的变量之一的自定义选项
兼容性移除过时的服务器变量 stats_temp_directory
兼容性
移除过时的服务器变量 stats_temp_directory(Andres Freund,Kyotaro Horiguchi)§
兼容性改进用于计算 random() 的算法
兼容性libpq 的 PQsendQuery() 函数在管道模式下不再被支持
兼容性
libpq 的 PQsendQuery() 函数在管道模式下不再被支持(Álvaro Herrera)§
使用该组合的应用程序需要修改为使用 PQsendQueryParams() 代替。
兼容性在非 Windows 平台上,查询 HOME 环境变量以查找用户的主目录
兼容性
在非 Windows 平台上,查询 HOME 环境变量以查找用户的主目录(Anders Kaseorg)§
如果 HOME 为空或未设置,则回退到先前的方法,检查 <pwd.h> 数据库。此变更影响 libpq(例如,在查找 ~/.pgpass 时)以及各种客户端应用程序。
兼容性移除pg_dump的 --no-synchronized-snapshots 选项
兼容性在psql的 --single-transaction 模式中检测到错误后,仅在设置了 ON_ERROR_STOP 时才将最终的 COMMIT 命令更改为 ROLLBACK
兼容性避免在 postgres_fdw 发送的查询中对常量进行不必要的类型转换
兼容性
避免在 postgres_fdw 发送的查询中对常量进行不必要的类型转换(Dian Fay)§
当本地和远程数据库之间的列类型故意不同时,这种类型转换可能会导致错误。
兼容性移除 xml2 的 xml_is_well_formed() 函数
新功能记录并检查每个数据库的排序规则版本
新功能允许将 ICU 排序规则设置为集簇和数据库的默认值
新功能增加系统视图 pg_ident_file_mappings 以报告 pg_ident.conf 信息
服务器
增加系统视图 pg_ident_file_mappings 以报告 pg_ident.conf 信息(Julien Rouhaud)§
新功能改进引用分区表的查询的规划时间
服务器 / 分区
改进引用分区表的查询的规划时间(David Rowley)§
此变更在只有少数分区相关时有所帮助。
新功能允许分区的有序扫描在更多情况下避免排序
服务器 / 分区
允许分区的有序扫描在更多情况下避免排序(David Rowley)§
以前,具有 DEFAULT 分区或包含多个值的 LIST 分区的分区表不能用于有序分区扫描。现在,如果这些分区在规划期间被剪枝,则可以使用它们。
新功能改进在分区表上执行将行在分区之间移动的更新时的外键行为
服务器 / 分区
改进在分区表上执行将行在分区之间移动的更新时的外键行为(Amit Langote)§
以前,这样的更新在源分区上运行删除操作,在目标分区上运行插入操作。PostgreSQL 现在将在分区根上运行更新操作,提供更清晰的语义。
问题修复修复分区表上的 ALTER TRIGGER RENAME 以正确重命名所有分区上的触发器
服务器 / 分区
修复分区表上的 ALTER TRIGGER RENAME 以正确重命名所有分区上的触发器(Arne Roland,Álvaro Herrera)§
同时禁止重命名克隆的触发器。
新功能允许系统表和 TOAST 表上的 B-树索引高效存储重复项
性能改进使用排序构建的 GiST 索引的查找性能
新功能允许唯一约束和索引将 NULL 值视为不唯一
服务器 / 索引
允许唯一约束和索引将 NULL 值视为不唯一(Peter Eisentraut)§
以前 NULL 条目总是被视为不同的值,但现在可以通过使用 UNIQUE NULLS NOT DISTINCT 创建约束和索引来更改此行为。
新功能允许 ^@ 起始匹配操作符和 starts_with() 函数在使用 C 排序规则时使用 B-树索引
新功能允许扩展统计记录父表及其所有子表的统计信息
新功能增加服务器变量 recursive_worktable_factor 以允许用户指定递归查询工作表的预期大小
服务器 / 优化器
增加服务器变量 recursive_worktable_factor 以允许用户指定递归查询工作表的预期大小(Simon Riggs)§
性能允许对包含许多常量的 NOT IN 子句使用 hash 查找
性能允许 SELECT DISTINCT 并行化
服务器 / 一般性能
允许 SELECT DISTINCT 并行化(David Rowley)§
性能通过每次处理 16 字节来加速 UTF-8 文本的编码验证
性能改进超过 work_mem 的排序性能
性能改进内存排序的性能并减少内存消耗
性能允许 WAL 全页写入使用 LZ4 和 Zstandard 压缩
服务器 / 一般性能
允许 WAL 全页写入使用 LZ4 和 Zstandard 压缩(Andrey Borodin,Justin Pryzby)§ §
这由 wal_compression 服务器设置控制。
性能增加在 macOS 上使用直接 I/O 写入 WAL 的支持
性能改进使用 row_number()、rank()、dense_rank() 和 count() 的窗口函数的性能
性能改进高核心数 ARM64 系统上自旋锁的性能
服务器 / 一般性能
改进高核心数 ARM64 系统上自旋锁的性能(Geoffrey Blake)§
新功能启用检查点和慢速自动清理操作的默认日志记录
服务器 / 监控
启用检查点和慢速自动清理操作的默认日志记录(Bharath Rupireddy)§
这将 log_checkpoints 的默认值更改为 on,将 log_autovacuum_min_duration 的默认值更改为 10 分钟。这将导致即使是空闲的服务器也会生成一些日志输出,这在没有日志文件轮转的资源受限服务器上可能会造成问题。在这种情况下应更改这些默认值。
新功能在服务器缓慢启动期间在服务器日志中生成进度消息
服务器 / 监控
在服务器缓慢启动期间在服务器日志中生成进度消息(Nitin Jadhav,Robert Haas)§ §
消息报告延迟的原因。通知的时间间隔由新的服务器变量 log_startup_progress_interval 控制。
新功能将累计统计系统数据存储在共享内存中
新功能增加临时文件块 I/O 的 EXPLAIN (BUFFERS) 输出
服务器 / 监控
增加临时文件块 I/O 的 EXPLAIN (BUFFERS) 输出(Masahiko Sawada)§
新功能允许以 JSON 格式进行日志输出
新功能允许 pg_stat_reset_single_table_counters() 重置所有数据库间共享的关系的计数器
服务器 / 监控
允许 pg_stat_reset_single_table_counters() 重置所有数据库间共享的关系的计数器(Sadhuprasad Patro)§
新功能为本地 shell 命令增加等待事件
新功能允许通过视图进行的表访问可选择性地由视图调用者的权限控制
新功能允许 pg_write_server_files 预定义角色的成员执行服务器端基础备份
服务器 / 权限
允许 pg_write_server_files 预定义角色的成员执行服务器端基础备份(Dagfinn Ilmari Mannsåker)§
以前只有超级用户可以执行此类备份。
新功能允许 GRANT 授予通过 SET 和 ALTER SYSTEM 更改单个服务器变量的权限
新功能增加预定义角色 pg_checkpoint,允许其成员运行 CHECKPOINT
服务器 / 权限
增加预定义角色 pg_checkpoint,允许其成员运行 CHECKPOINT(Jeff Davis)§ §
以前只有超级用户可以运行检查点。
新功能允许 pg_read_all_stats 预定义角色的成员访问 pg_backend_memory_contexts 和 pg_shmem_allocations 视图
服务器 / 权限
允许 pg_read_all_stats 预定义角色的成员访问 pg_backend_memory_contexts 和 pg_shmem_allocations 视图(Bharath Rupireddy)§
以前这些视图只能由超级用户访问。
新功能允许 GRANT 授予 pg_log_backend_memory_contexts() 的权限
服务器 / 权限
允许 GRANT 授予 pg_log_backend_memory_contexts() 的权限(Jeff Davis)§
以前此函数只能由超级用户运行。
新功能增加服务器变量 shared_memory_size 以报告已分配共享内存的大小
服务器 / 服务器配置
增加服务器变量 shared_memory_size 以报告已分配共享内存的大小(Nathan Bossart)§ §
新功能增加服务器变量 shared_memory_size_in_huge_pages 以报告所需的大内存页数量
服务器 / 服务器配置
增加服务器变量 shared_memory_size_in_huge_pages 以报告所需的大内存页数量(Nathan Bossart)§ §
这仅在 Linux 上受支持。
新功能在单用户模式下遵守服务器变量 shared_preload_libraries
服务器 / 服务器配置
在单用户模式下遵守服务器变量 shared_preload_libraries(Jeff Davis)§
此变更支持使用 shared_preload_libraries 加载自定义访问方法和 WAL 资源管理器,即使在单用户模式下这对数据库访问也是必需的。
新功能在 Solaris 上,将 dynamic_shared_memory_type 的默认设置设为 sysv
服务器 / 服务器配置
在 Solaris 上,将 dynamic_shared_memory_type 的默认设置设为 sysv(Thomas Munro)§
之前的默认选择 posix 可能导致此平台上的虚假失败。
新功能允许 postgres -C 正确报告运行时计算的值
服务器 / 服务器配置
允许 postgres -C 正确报告运行时计算的值(Nathan Bossart)§
以前,运行时计算的值 data_checksums、wal_segment_size 和 data_directory_mode 会报告在运行中的服务器上不准确的值。但是,这在运行中的服务器上不起作用。
新功能增加对服务器端基础备份的 LZ4 和 Zstandard 压缩支持
流复制与恢复
新功能在崩溃恢复期间运行检查点进程和后台写入进程
流复制与恢复
在崩溃恢复期间运行检查点进程和后台写入进程(Thomas Munro)§
这有助于加速长时间的崩溃恢复。
新功能允许 WAL 处理预取所需的文件内容
流复制与恢复
允许 WAL 处理预取所需的文件内容(Thomas Munro)§
这由服务器变量 recovery_prefetch 控制。
新功能允许通过可加载模块进行归档
流复制与恢复
允许通过可加载模块进行归档(Nathan Bossart)§
以前,归档只能通过调用 shell 命令完成。新的服务器变量 archive_library 可以设置为指定用于归档的库。
关联记录 (1)
新功能不再要求在 START_REPLICATION 之前运行 IDENTIFY_SYSTEM
流复制与恢复
不再要求在 START_REPLICATION 之前运行 IDENTIFY_SYSTEM(Jeff Davis)§
新功能允许发布模式中的所有表
新功能允许使用 WHERE 子句过滤发布内容
新功能允许将发布内容限制为特定列
流复制与恢复 / 逻辑复制
允许将发布内容限制为特定列(Tomas Vondra,Álvaro Herrera,Rahila Syed)§
新功能允许使用 ALTER SUBSCRIPTION ... SKIP 在订阅者上跳过事务
流复制与恢复 / 逻辑复制
允许使用 ALTER SUBSCRIPTION ... SKIP 在订阅者上跳过事务(Masahiko Sawada)§
新功能为逻辑复制增加预备(两阶段)事务支持
流复制与恢复 / 逻辑复制
为逻辑复制增加预备(两阶段)事务支持(Peter Smith,Ajin Cherian,Amit Kapila,Nikhil Sontakke,Stas Kelvich)§ § §
新的 CREATE_REPLICATION_SLOT 选项称为 TWO_PHASE。pg_recvlogical 现在在创建槽时支持新的 --two-phase 选项。
新功能防止空事务的逻辑复制
流复制与恢复 / 逻辑复制
防止空事务的逻辑复制(Ajin Cherian,Hou Zhijie,Euler Taveira)§
以前,如果订阅的表没有被修改,发布者会向订阅者发送空事务。
新功能增加 SQL 函数来监控逻辑复制槽的目录内容
流复制与恢复 / 逻辑复制
增加 SQL 函数来监控逻辑复制槽的目录内容(Bharath Rupireddy)§
新函数是 pg_ls_logicalsnapdir()、pg_ls_logicalmapdir() 和 pg_ls_replslotdir()。它们可以由预定义的 pg_monitor 角色的成员运行。
新功能允许订阅者在出错时停止应用逻辑复制变更
流复制与恢复 / 逻辑复制
允许订阅者在出错时停止应用逻辑复制变更(Osumi Takamichi,Mark Dilger)§
这通过订阅者选项 disable_on_error 启用,避免流应用期间可能的无限错误循环。
新功能调整订阅者服务器变量以匹配发布者,使 datetime 和 float8 值被一致地解释
流复制与恢复 / 逻辑复制
调整订阅者服务器变量以匹配发布者,使 datetime 和 float8 值被一致地解释(Japin Li)§
某些发布者可能依赖于不一致的行为。
新功能增加系统视图 pg_stat_subscription_stats 以报告订阅者活动
流复制与恢复 / 逻辑复制
增加系统视图 pg_stat_subscription_stats 以报告订阅者活动(Masahiko Sawada)§ §
新函数 pg_stat_reset_subscription_stats() 允许重置这些统计计数器。
新功能在 pg_publication_tables 系统视图中抑制重复条目
流复制与恢复 / 逻辑复制
在 pg_publication_tables 系统视图中抑制重复条目(Hou Zhijie)§
在某些情况下,一个分区可能出现多次。
新功能增加 SQL MERGE 命令以调整一个表使其与另一个表匹配
新功能增加 COPY 文本格式中 HEADER 选项的支持
新功能增加新的 WAL 日志记录方法用于数据库创建
新功能允许 CREATE DATABASE 设置数据库 OID
工具命令
允许 CREATE DATABASE 设置数据库 OID(Shruthi Gowda,Antonin Houska)§
新功能防止 DROP DATABASE、DROP TABLESPACE 和 ALTER DATABASE SET TABLESPACE 在 Windows 上并发使用时偶尔失败
工具命令
防止 DROP DATABASE、DROP TABLESPACE 和 ALTER DATABASE SET TABLESPACE 在 Windows 上并发使用时偶尔失败(Thomas Munro)§
新功能允许外键 ON DELETE SET 操作仅影响指定的列
工具命令
允许外键 ON DELETE SET 操作仅影响指定的列(Paul Martinez)§
以前,外键中的所有列总是受到影响。
新功能允许 ALTER TABLE 修改表的 ACCESS METHOD
工具命令
允许 ALTER TABLE 修改表的 ACCESS METHOD(Justin Pryzby,Jeff Davis)§
新功能当 ALTER TABLE 导致表重写时正确调用对象访问钩子
工具命令
当 ALTER TABLE 导致表重写时正确调用对象访问钩子(Michael Paquier)§
新功能跟踪返回复合类型的函数结果中各个列的依赖关系
工具命令
跟踪返回复合类型的函数结果中各个列的依赖关系(Tom Lane)§
以前,如果视图或规则包含对返回复合类型的函数结果中特定列的引用,这不会被记录为依赖关系;视图或规则仅被认为依赖于整个复合类型。这意味着允许删除单个列,从而在以后使用视图或规则时造成问题。现在也记录了列级依赖关系,因此除非更改或删除视图,否则删除此类列将被拒绝。
新功能允许 numeric 值的精度为负数或大于其精度
新功能更改类型 "char" 非 ASCII 字符的 I/O 格式
新功能更新现代 Unicode 字符(如表情符号)的显示宽度信息
新功能为 range_agg() 增加多范围输入
函数
为 range_agg() 增加多范围输入(Paul Jungwirth)§
新功能增加正则表达式函数以与其他关系系统兼容
函数
增加正则表达式函数以与其他关系系统兼容(Gilles Darold,Tom Lane)§
新函数是 regexp_count()、regexp_instr()、regexp_like() 和 regexp_substr()。还为 regexp_replace() 增加了一些新的可选参数。
新功能当将 AT TIME ZONE 应用于 time with time zone 值时,使用事务开始时间而不是挂钟时间来确定是否适用夏令时
函数
当将 AT TIME ZONE 应用于 time with time zone 值时,使用事务开始时间而不是挂钟时间来确定是否适用夏令时(Aleksander Alekseev,Tom Lane)§
这允许将转换视为稳定的而不是易变的,并且每次调用节省一次内核调用。
新功能在带数组参数的 ts_delete() 和 setweight() 函数中忽略 NULL 数组元素
函数
在带数组参数的 ts_delete() 和 setweight() 函数中忽略 NULL 数组元素(Jean-Christophe Arnu)§
这些函数实际上会忽略空字符串数组元素(因为它们永远不会匹配有效的词素)。让它们也忽略 NULL 元素而不是失败似乎是一致的。
新功能为 pg_size_pretty() 和 pg_size_bytes() 增加 PB 单位支持
函数
为 pg_size_pretty() 和 pg_size_bytes() 增加 PB 单位支持(David Christensen)§
新功能更改 pg_event_trigger_ddl_commands() 以使用实际模式名称输出对其他会话临时模式的引用
函数
更改 pg_event_trigger_ddl_commands() 以使用实际模式名称输出对其他会话临时模式的引用(Tom Lane)§
以前此函数将所有临时模式报告为 pg_temp,但对当前会话的临时模式以外的任何模式使用该名称是有误导性的。
问题修复修复 PL/pgSQL 变量 CONSTANT 标记的强制执行
新功能允许 IP 地址与服务器证书的主体替代名称进行匹配
libpq
允许 IP 地址与服务器证书的主体替代名称进行匹配(Jacob Champion)§
新功能允许 PQsslAttribute() 在不需要 libpq 连接的情况下报告 SSL 库类型
libpq
允许 PQsslAttribute() 在不需要 libpq 连接的情况下报告 SSL 库类型(Jacob Champion)§
新功能更改客户端发送的查询取消以使用与正常客户端连接相同的 TCP 设置
libpq
更改客户端发送的查询取消以使用与正常客户端连接相同的 TCP 设置(Jelte Fennema)§
这允许配置的 TCP 超时应用到查询取消连接。
性能通过以更大的块发送数据来改进 psql 的 \copy 命令的性能
客户端应用 / psql
通过以更大的块发送数据来改进 psql 的 \copy 命令的性能(Heikki Linnakangas)§
新功能增加 \dconfig 命令以报告服务器变量
新功能增加 \getenv 命令以将环境变量的值赋给 psql 变量
客户端应用 / psql
增加 \getenv 命令以将环境变量的值赋给 psql 变量(Tom Lane)§
新功能为 \lo_list 和 \dl 命令增加 + 选项以显示大对象权限
客户端应用 / psql
为 \lo_list 和 \dl 命令增加 + 选项以显示大对象权限(Pavel Luzanov)§
新功能为 \watch 命令增加分页器选项
客户端应用 / psql
为 \watch 命令增加分页器选项(Pavel Stehule,Thomas Munro)§
这仅在 Unix 上受支持,由 PSQL_WATCH_PAGER 环境变量控制。
新功能使 psql 在发送到服务器的查询中包含查询内的双连字符注释
新功能调整 psql,使 Readline 的 meta-# 命令插入双连字符注释标记
客户端应用 / psql
调整 psql,使 Readline 的 meta-# 命令插入双连字符注释标记(Tom Lane)§
以前会插入井号标记,除非用户费心配置了非默认的注释标记。
新功能使 psql 在一次向服务器传递多个查询时输出所有结果
客户端应用 / psql
使 psql 在一次向服务器传递多个查询时输出所有结果(Fabien Coelho)§
以前只显示最后一个查询结果。可以通过将 SHOW_ALL_RESULTS psql 变量设置为 off 来恢复旧行为。
新功能在 --single-transaction 模式中检测到错误后,仅在设置了 ON_ERROR_STOP 时才将最终的 COMMIT 命令更改为 ROLLBACK
客户端应用 / psql
在 --single-transaction 模式中检测到错误后,仅在设置了 ON_ERROR_STOP 时才将最终的 COMMIT 命令更改为 ROLLBACK(Michael Paquier)§
以前,在 -c 命令或 -f 脚本文件中检测到错误会导致在最后发出 ROLLBACK,而不管 ON_ERROR_STOP 的值如何。
新功能改进 psql 的 Tab 补全
新功能将 psql 反斜杠命令的支持限制为运行 PostgreSQL 9.2 或更高版本的服务器
客户端应用 / psql
将 psql 反斜杠命令的支持限制为运行 PostgreSQL 9.2 或更高版本的服务器(Tom Lane)§
移除仅在与较旧服务器一起运行时使用的代码。与 9.2 相比不需要任何特定版本调整的命令仍然可以工作。
性能改进导出包含许多对象的数据库的性能
客户端应用 / pg_dump
改进导出包含许多对象的数据库的性能(Tom Lane)§ § §
这也将改进pg_upgrade的性能。
性能改进并行 pg_dump 对具有大型 TOAST 表的表的性能
客户端应用 / pg_dump
改进并行 pg_dump 对具有大型 TOAST 表的表的性能(Tom Lane)§
新功能增加导出/恢复选项 --no-table-access-method 以强制恢复仅使用默认表访问方法
客户端应用 / pg_dump
增加导出/恢复选项 --no-table-access-method 以强制恢复仅使用默认表访问方法(Justin Pryzby)§
新功能将 pg_dump 和pg_dumpall的支持限制为运行 PostgreSQL 9.2 或更高版本的服务器
客户端应用 / pg_dump
将 pg_dump 和pg_dumpall的支持限制为运行 PostgreSQL 9.2 或更高版本的服务器(Tom Lane)§
新功能为pg_basebackup增加新选项 --target 以控制基础备份位置
服务器应用
为pg_basebackup增加新选项 --target 以控制基础备份位置(Robert Haas)§
新选项是 server(在本地写入备份)和 blackhole(丢弃备份,用于测试)。
新功能允许 pg_basebackup 对基础备份文件进行服务器端 gzip、LZ4 和 Zstandard 压缩以及客户端 LZ4 和 Zstandard 压缩
新功能允许 pg_basebackup 在服务器端压缩并在客户端存储之前解压缩
服务器应用
允许 pg_basebackup 在服务器端压缩并在客户端存储之前解压缩(Dipesh Pandit)§
这通过指定服务器端压缩和纯文本输出格式来实现。
新功能允许 pg_basebackup 的 --compress 选项控制压缩位置(服务器或客户端)、压缩方法和压缩选项
服务器应用
新功能为pg_receivewal增加 LZ4 压缩方法
服务器应用
为pg_receivewal增加 LZ4 压缩方法(Georgios Kokolatos)§ §
这通过 --compress=lz4 启用,需要使用 --with-lz4 构建二进制文件。
新功能为 pg_receivewal 的 --compress 选项增加额外功能
服务器应用
为 pg_receivewal 的 --compress 选项增加额外功能(Georgios Kokolatos)§
新功能改进 pg_receivewal 在正确的 WAL 位置重新启动的能力
服务器应用
改进 pg_receivewal 在正确的 WAL 位置重新启动的能力(Ronan Dunklau)§
以前,pg_receivewal 会基于存储在本地归档目录中的 WAL 文件启动,或从发送服务器的当前 WAL 刷新位置启动。通过此变更,如果发送服务器运行 Postgres 15 或更高版本,本地归档目录为空,并且指定了复制槽,则将使用复制槽的重新启动点。
新功能为pg_rewind增加选项 --config-file 以简化服务器配置文件存储在数据目录之外时的使用
新功能将 pg_upgrade 的日志和临时文件存储在新集簇的名为 pg_upgrade_output.d 的子目录中
新功能如果输出不是终端,则在 pg_upgrade 操作期间禁用默认状态报告
服务器应用 / pg_upgrade
如果输出不是终端,则在 pg_upgrade 操作期间禁用默认状态报告(Andres Freund)§
可以通过使用 --verbose 为非终端使用启用状态报告输出。
新功能使 pg_upgrade 报告所有具有无效连接设置的数据库
服务器应用 / pg_upgrade
使 pg_upgrade 报告所有具有无效连接设置的数据库(Jeevan Ladhe)§
以前只报告第一个具有无效连接设置的数据库。
新功能使 pg_upgrade 保留表空间和数据库 OID,以及关系的 relfilenode 编号
服务器应用 / pg_upgrade
关联记录 (1)
新功能为 pg_upgrade 增加 --no-sync 选项
服务器应用 / pg_upgrade
为 pg_upgrade 增加 --no-sync 选项(Michael Paquier)§
这仅推荐用于测试。
新功能将 pg_upgrade 的支持限制为运行 PostgreSQL 9.2 或更高版本的旧服务器
服务器应用 / pg_upgrade
将 pg_upgrade 的支持限制为运行 PostgreSQL 9.2 或更高版本的旧服务器(Tom Lane)§
新功能允许按关系文件节点、块号、分支编号和整页镜像过滤 pg_waldump 输出
新功能使 pg_waldump 在被中断退出之前报告统计信息
服务器应用 / pg_waldump
使 pg_waldump 在被中断退出之前报告统计信息(Bharath Rupireddy)§
例如,在运行 pg_waldump --stats --follow 的终端中按 Ctrl-C 将在退出前报告当前统计信息。这在 Windows 上不起作用。
新功能改进 pg_waldump 报告的某些事务 WAL 记录的描述
服务器应用 / pg_waldump
改进 pg_waldump 报告的某些事务 WAL 记录的描述(Masahiko Sawada,Michael Paquier)§
新功能允许 pg_waldump 转储多个资源管理器的信息
服务器应用 / pg_waldump
允许 pg_waldump 转储多个资源管理器的信息(Heikki Linnakangas)§
这通过多次指定 --rmgr 选项来启用。
新功能增加 pg_encoding_to_char() 和 pg_char_to_encoding() 的文档
文档
增加 pg_encoding_to_char() 和 pg_char_to_encoding() 的文档(Ian Lawrence Barwick)§
新功能增加使用 cirrus-ci 进行持续集成测试的支持
源代码
增加使用 cirrus-ci 进行持续集成测试的支持(Andres Freund,Thomas Munro,Melanie Plageman)§
新功能增加配置选项 --with-zstd 以启用 Zstandard 构建
源代码
增加配置选项 --with-zstd 以启用 Zstandard 构建(Jeevan Ladhe,Robert Haas,Michael Paquier)§
新功能在可加载库的魔术块中增加 ABI 标识符字段,允许非社区 PostgreSQL 发行版识别与其他构建不兼容的库
源代码
在可加载库的魔术块中增加 ABI 标识符字段,允许非社区 PostgreSQL 发行版识别与其他构建不兼容的库(Peter Eisentraut)§
ABI 字段不匹配将在加载时生成错误。
新功能为 "char" 创建新的 pg_type.typcategory 值
源代码
为 "char" 创建新的 pg_type.typcategory 值(Tom Lane)§
一些其他仅供内部使用的类型也已被分配到此类别。
新功能增加新的协议消息 TARGET 以指定用于基础备份的新 COPY 方法
源代码
增加新的协议消息 TARGET 以指定用于基础备份的新 COPY 方法(Robert Haas)§
pg_basebackup 现在使用此方法。
新功能增加新的协议消息 COMPRESSION 和 COMPRESSION_DETAIL 以指定压缩方法和选项
源代码
增加新的协议消息 COMPRESSION 和 COMPRESSION_DETAIL 以指定压缩方法和选项(Robert Haas)§ §
新功能增加扩展设置自定义备份目标的支持
源代码
增加扩展设置自定义备份目标的支持(Robert Haas)§
新功能允许扩展定义自定义 WAL 资源管理器
源代码
允许扩展定义自定义 WAL 资源管理器(Jeff Davis)§
新功能增加函数 pg_settings_get_flags() 以获取服务器变量的标志
源代码
增加函数 pg_settings_get_flags() 以获取服务器变量的标志(Justin Pryzby)§
新功能在 Windows 上,使用 PGDLLIMPORT 标记导出服务器的所有全局变量
源代码
在 Windows 上,使用 PGDLLIMPORT 标记导出服务器的所有全局变量(Robert Haas)§
以前,在 Windows 上只有特定变量可供扩展访问。
新功能构建 PostgreSQL 需要 GNU make 3.81 或更高版本
源代码
构建 PostgreSQL 需要 GNU make 3.81 或更高版本(Tom Lane)§
新功能需要 Perl 5.8.3 或更高版本
源代码
需要 Perl 5.8.3 或更高版本(Dagfinn Ilmari Mannsåker)§
新功能需要 Python 3.2 或更高版本
源代码
需要 Python 3.2 或更高版本(Andres Freund)§
新功能改进 amcheck 对 TOAST 表的完整性检查
附加模块
改进 amcheck 对 TOAST 表的完整性检查(Mark Dilger)§
新功能增加新模块 basebackup_to_shell 作为自定义备份目标的示例
附加模块
增加新模块 basebackup_to_shell 作为自定义备份目标的示例(Robert Haas)§ §
新功能增加新模块basic_archive作为通过库执行归档的示例
新功能允许在布尔列上创建btree_gist索引
附加模块
允许在布尔列上创建btree_gist索引(Emre Hasegeli)§ § §
这些可以用于排除约束。
问题修复修复pageinspect的 page_header() 以处理 32KB 页面大小
附加模块
修复pageinspect的 page_header() 以处理 32KB 页面大小(Quan Zongliang)§
以前,在某些情况下可能返回不正确的负值。
新功能为pg_stat_statements增加临时文件块 I/O 的计数器
附加模块
为pg_stat_statements增加临时文件块 I/O 的计数器(Masahiko Sawada)§
新功能为 pg_stat_statements 增加 JIT 计数器
附加模块
为 pg_stat_statements 增加 JIT 计数器(Magnus Hagander)§
新功能增加新模块pg_walinspect
附加模块
增加新模块pg_walinspect(Bharath Rupireddy)§
这提供了类似于pg_waldump的 SQL 级别输出。
新功能允许 postgres_fdw 下推 CASE 表达式
附加模块 / postgres_fdw
允许 postgres_fdw 下推 CASE 表达式(Alexander Pyhalov)§
新功能增加服务器变量 postgres_fdw.application_name 以控制 postgres_fdw 连接的应用程序名称
附加模块 / postgres_fdw
增加服务器变量 postgres_fdw.application_name 以控制 postgres_fdw 连接的应用程序名称(Hayato Kuroda)§ § §
以前远程会话的 application_name 只能在远程服务器上设置或通过 postgres_fdw 连接规范设置。postgres_fdw.application_name 支持一些用于自定义的转义序列,使得在远程服务器上更容易区分这些连接。
新功能允许在 postgres_fdw 服务器上进行并行提交
附加模块 / postgres_fdw
允许在 postgres_fdw 服务器上进行并行提交(Etsuro Fujita)§
这通过 CREATE SERVER 选项 parallel_commit 启用。
没有匹配的变化
尝试其他关键词,或 .
如何生成比较结果?
比较依据起始版本之后至目标版本的 PostgreSQL 发布说明。经核实的回补重复项会谨慎合并,保留每条原始说明;相关提交可能涉及独立变化,仍作为不同记录保留。
发布快照: 2026-09-26 · 安全快照: 2026-09-26
内容来自 PostgreSQL 发布说明。交互方式参考 pgversions.com 与 pgversionreport.