发布日期:. 2025-09-25
PostgreSQL 18 包含许多新特性和增强,其中包括:
一个异步 I/O(AIO)子系统,可以提升顺序扫描、位图堆扫描、清理等操作的性能。
pg_upgrade 现在会保留优化器统计信息。
支持“skip scan”查找,从而可以在更多情况下使用多列 B-tree 索引。
虚拟生成列会在读取操作期间计算其取值。这现在是生成列的默认形式。
支持OAuth 认证。
针对 PRIMARY KEY、 UNIQUE 和 FOREIGN KEY 约束的时间约束(即范围上的约束)。
上述项目以及 PostgreSQL 18 的其他新特性将在下文的章节中更详细地说明。
对于希望从任何先前发行版迁移数据的用户,需要使用pg_dumpall进行转储/恢复,或使用pg_upgrade或逻辑复制。有关迁移到新主版本的一般信息,请参见Section 18.6。
版本 18 包含许多可能影响与先前发行版兼容性的变更。请注意以下不兼容之处:
更改initdb的默认设置以启用数据校验和(Greg Sabino Mullane) §
可以使用新的 initdb 选项
--no-data-checksums 来禁用校验和。pg_upgrade要求集簇的校验和设置相匹配,因此这个新选项对于升级未启用校验和的旧集簇很有用。
更改时区缩写的处理方式(Tom Lane) §
系统现在会优先使用当前会话的时区缩写,之后才会检查服务器变量timezone_abbreviations。以前会首先检查 timezone_abbreviations。
对 MD5 密码的支持将在未来的主版本中被移除。CREATE ROLE和ALTER ROLE现在在设置 MD5 密码时会发出弃用警告。将md5_password_warnings参数设置为
off 即可禁用这些警告。
更改VACUUM和ANALYZE使其处理父表的继承子表(Michael Harris) §
以前的行为可以通过使用新的
ONLY 选项来实现。
防止 COPY FROM
在读取 CSV 文件时把 \.
当作文件结束标记(Daniel Vérité, Tom Lane)
§
§
当从 STDIN 读取 CSV 文件时,psql仍会把 \. 当作文件结束标记。连接 PostgreSQL 18
服务器的较旧 psql 客户端可能会遇到
\copy
问题。本发行版还强制要求 \. 必须单独出现在一行上。
禁止非日志(unlogged)分区表(Michael Paquier) §
以前,ALTER TABLE SET
[UN]LOGGED 不会做任何事情,而且创建非日志分区表也不会使其子分区变为非日志。
以触发事件入队时处于活动状态的角色执行
AFTER 触发器(Laurenz Albe)
§
以前,这类触发器是以触发器执行时(例如执行COMMIT时)处于活动状态的角色运行的。对于在入队和事务提交之间角色发生变更的情形,这一点非常重要。
移除 GRANT/REVOKE 中无实际功能的规则权限支持(Fujii Masao) §
自 PostgreSQL 8.2 以来它们就一直不起作用。
移除列 pg_backend_memory_contexts.parent
(Melih Mutlu)
§
自 pg_backend_memory_contexts.path
列加入后,该列已无必要。
将
pg_backend_memory_contexts.level
和 pg_log_backend_memory_contexts()
改为从 1 开始编号(Melih Mutlu, Atsushi Torikoshi, David Rowley,
Fujii Masao)
§
§
§
它们以前是从 0 开始编号的。
更改全文搜索,使其在读取配置文件和词典时使用集簇的默认排序规则提供者,而不是总是使用 libc(Peter Eisentraut) §
对于默认使用非 libc 排序规则提供者(例如 ICU、builtin)且这些提供者对 LC_CTYPE 所处理字符的行为与 libc 不同的集簇,某些全文搜索函数以及pg_trgm扩展的行为可能会发生变化。使用pg_upgrade升级这类集簇时,建议在升级后重建所有与全文搜索和 pg_trgm 相关的索引。
以下详细介绍了 PostgreSQL 18 与上一个主要版本之间的更改。
自动移除一些不必要的表自连接(Andrey Lepikhov, Alexander Kuzmenkov, Alexander Korotkov, Alena Rybakina) §
可以通过服务器变量enable_self_join_elimination禁用此优化。
将一些 IN (VALUES
...) 转换为 x = ANY ...,以获得更好的优化器统计信息(Alena Rybakina, Andrei Lepikhov)
§
允许将 OR
子句转换为数组,以加快索引处理(Alexander Korotkov,
Andrey Lepikhov)
§
加速 INTERSECT、
EXCEPT、窗口聚合和视图列别名的处理(Tom Lane, David Rowley)
§
§
§
§
允许对 SELECT
DISTINCT 的键进行内部重排以避免排序(Richard Guo)
§
可以使用enable_distinct_reordering禁用此优化。
忽略在功能上依赖于其他列的
GROUP BY
列(Zhang Mingli, Jian He, David Rowley)
§
如果 GROUP BY 子句包含某个唯一索引的全部列以及同一张表的其他列,那么这些其他列就是冗余的,可以从分组中去除。对于非延迟主键,这本来就已成立。
允许将 HAVING
子句中作用于 GROUPING
SETS 的一些子句下推到
WHERE
子句(Richard Guo)
§
§
§
§
这可以更早地进行行过滤。本发布还修复了一些
GROUPING SETS 查询以前返回错误结果的问题。
改进对使用 numeric
和 timestamp
值的 generate_series()
的行数估算(David Rowley, Song Jinzhou)
§
§
允许优化器使用 Right Semi Join 计划(Richard Guo)
§
半连接用于需要判断是否至少存在一个匹配的情形。
提升对访问大量分区的查询进行规划的效率(Ashutosh Bapat, Yuya Watari, David Rowley) § §
在更多情况下允许按分区连接,并减少其内存使用(Richard Guo, Tom Lane, Ashutosh Bapat) § §
改进分区查询的代价估算(Nikita Malakhov, Andrei Lepikhov) §
改进对已禁用的优化器特性的处理(Robert Haas) §
新增异步 I/O 子系统(Andres Freund, Thomas Munro, Nazir Bilal Yavuz, Melanie Plageman) § § § § § § § § § § §
此特性允许后端排队多个读请求,从而使顺序扫描、位图堆扫描、清理等操作更加高效。它由服务器变量io_method启用,并新增了用于控制它的服务器变量io_combine_limit和io_max_combine_limit。对于不支持 fadvise() 的系统,这也使effective_io_concurrency和maintenance_io_concurrency可以取大于零的值。新增的系统视图
pg_aios
显示正在用于异步 I/O 的文件句柄。
提升访问大量关系的查询的锁性能(Tomas Vondra) §
提升哈希连接和 GROUP BY
的性能并减少其内存使用(David Rowley, Jeff Davis)
§
§
§
§
§
这也改进了 EXCEPT
所使用的哈希集合操作,以及子计划值的哈希查找。
允许普通清理冻结某些页面,即使这些页面已经是全部可见的(Melanie Plageman) § §
这减少了以后整表冻结的开销。此行为的激进程度可以通过服务器变量和每表设置vacuum_max_eager_freeze_failure_rate来控制。以前,在需要冻结之前,清理从不处理全部可见的页面。
新增服务器变量vacuum_truncate,用于控制VACUUM期间的文件截断(Nathan Bossart, Gurjeet Singh) §
之前已经存在一个名称和行为相同的存储层级参数。
将服务器变量effective_io_concurrency和maintenance_io_concurrency的默认值增加到 16(Melanie Plageman) § §
这更准确地反映了现代硬件的情况。
提高服务器变量log_connections的日志记录粒度(Melanie Plageman) §
此服务器变量以前只能取布尔值,这种形式目前仍然受支持。
新增 log_connections 选项,用于报告连接各阶段所花费的时间(Melanie Plageman)
§
为log_line_prefix新增转义序列
%L,用于输出客户端的
IP 地址(Greg Sabino Mullane)
§
新增服务器变量log_lock_failures,用于记录锁获取失败(Yuki Seino, Fujii Masao) § §
具体来说,它报告 SELECT
... NOWAIT 的锁获取失败。
修改 pg_stat_all_tables
及其变体,报告花费在VACUUM、ANALYZE以及它们的自动变体上的时间(Sami Imseih)
§
新增的列是 total_vacuum_time、
total_autovacuum_time、
total_analyze_time 和
total_autoanalyze_time。
为VACUUM和ANALYZE新增延迟时间报告(Bertrand Drouvot, Nathan Bossart) § §
此信息出现在服务器日志、系统视图 pg_stat_progress_vacuum
和 pg_stat_progress_analyze,以及VACUUM和ANALYZE以 VERBOSE 模式运行时的输出中;必须通过服务器变量track_cost_delay_timing启用跟踪。
为 ANALYZE VERBOSE 新增
WAL、CPU 和平均读取统计信息输出(Anthonin Bonnefoy)
§
§
在 VACUUM/ANALYZE (VERBOSE)
和自动清理的日志输出中新增已满
WAL 缓冲区计数(Bertrand Drouvot)
§
新增每后端 I/O 统计信息报告(Bertrand Drouvot) § §
这些统计信息可通过 pg_stat_get_backend_io()
访问。每后端 I/O 统计信息可以通过 pg_stat_reset_backend_stats() 清除。
为 pg_stat_io
新增以字节为单位报告 I/O 活动的列(Nazir Bilal Yavuz)
§
新增的列是 read_bytes、
write_bytes 和
extend_bytes。原来总是等于
BLCKSZ
的 op_bytes 列已被移除。
在 pg_stat_io 中新增
WAL I/O 活动行(Nazir Bilal Yavuz, Bertrand
Drouvot, Michael Paquier)
§
§
§
这包括 WAL 接收器活动以及这类写入的等待事件。
更改服务器变量track_wal_io_timing,使其控制在 pg_stat_io 而不是
pg_stat_wal
中跟踪 WAL 计时(Bertrand Drouvot)
§
从 pg_stat_wal 中移除 read/sync 列(Bertrand Drouvot)
§
§
这移除了列 wal_write、
wal_sync、
wal_write_time 和
wal_sync_time。
新增函数 pg_stat_get_backend_wal(),用于返回每后端 WAL 统计信息(Bertrand Drouvot)
§
每后端 WAL 统计信息可以通过 pg_stat_reset_backend_stats()
清除。
新增函数 pg_ls_summariesdir(),用于专门列出 PGDATA/pg_wal/summaries
的内容(Yushi Ogiwara)
§
新增列 pg_stat_checkpointer.num_done,用于报告已完成检查点的数量(Anton A. Melnikov)
§
列 num_timed 和
num_requested 统计的是已完成和已跳过的检查点。
新增列
pg_stat_checkpointer.slru_written,用于报告写入的 SLRU 缓冲区(Nitin Jadhav)
§
此外,还修改了检查点的服务器日志消息,以分别报告共享缓冲区和 SLRU 缓冲区的数值。
为 pg_stat_database
新增报告并行工作进程活动的列(Benoit Lobréau)
§
新增的列是
parallel_workers_to_launch 和
parallel_workers_launched。
使查询 id 对常量列表的计算只考虑第一个和最后一个常量(Dmitry Dolgov, Sami Imseih) § § §
pg_stat_statements 会使用这种查询搅混(jumbling)处理。
调整查询 id 计算,把使用相同关系名的查询归为一组(Michael Paquier, Sami Imseih) §
即使不同模式中的表具有不同的列名,情况也是如此。
新增列 pg_backend_memory_contexts.type,用于报告内存上下文的类型(David Rowley)
§
新增列
pg_backend_memory_contexts.path,用于显示内存上下文的父上下文(Melih Mutlu)
§
新增函数 pg_get_acl(),用于检索数据库访问控制详情(Joel Jacobson)
§
§
新增函数 has_largeobject_privilege(),用于检查大对象权限(Yugo Nagata)
§
允许ALTER DEFAULT PRIVILEGES定义大对象默认权限(Takatsuka Haruka, Yugo Nagata, Laurenz Albe) §
新增预定义角色 pg_signal_autovacuum_worker
(Kirill Reshke)
§
这允许向自动清理工作进程发送信号。
新增对 OAuth 认证方法的支持(Jacob Champion, Daniel Gustafsson, Thomas Munro) §
这为 pg_hba.conf
新增了 oauth 认证方法、libpq OAuth 选项、用于加载令牌验证库的服务器变量oauth_validator_libraries,以及用于添加所需编译期库的配置选项 --with-libcurl。
新增服务器变量ssl_tls13_ciphers,允许指定多个以冒号分隔的 TLSv1.3 加密套件(Erica Zhang, Daniel Gustafsson) §
更改服务器变量ssl_groups的默认值,使其包含椭圆曲线 X25519(Daniel Gustafsson, Jacob Champion) §
将服务器变量 ssl_ecdh_curve 重命名为ssl_groups,并允许指定多个以冒号分隔的
ECDH 曲线(Erica Zhang,
Daniel Gustafsson)
§
以前的名称仍然有效。
将取消请求密钥设为 256 位(Heikki Linnakangas, Jelte Fennema-Nio) § §
只有当服务器和客户端都支持本发布中引入的线协议版本 3.2 时才能这样做。
新增服务器变量autovacuum_worker_slots,用于指定后台工作进程的最大数量(Nathan Bossart) §
设置此变量后,autovacuum_max_workers可以在运行时调整到不超过此最大值,而无需重启服务器。
允许指定将触发自动清理的死元组固定数量(Nathan Bossart, Frédéric Yhuel) §
该服务器变量是autovacuum_vacuum_max_threshold。触发时仍然使用百分比。
更改服务器变量max_files_per_process,使其仅限制由后端打开的文件(Andres Freund) §
以前,由 postmaster 打开的文件也被计入此限制。
新增服务器变量num_os_semaphores,用于报告所需的信号量数量(Nathan Bossart) §
这对操作系统配置很有用。
新增服务器变量extension_control_path,用于指定扩展控制文件的位置(Peter Eisentraut, Matheus Alcantara) § §
允许使用服务器变量idle_replication_slot_timeout自动失效不活动的复制槽(Nisha Moond, Bharath Rupireddy) §
新增服务器变量max_active_replication_origins,用于控制活动复制源的最大数量(Euler Taveira) §
以前这由max_replication_slots控制,但这一新设置允许在需要较少槽的情况下使用更多的复制源数量。
允许对生成列的值进行逻辑复制(Shubham Khanna, Vignesh C, Zhijie Hou, Shlok Kyal, Peter Smith) § § § §
如果发布指定了列列表,则所有指定的列(无论是否为生成列)都会被发布。如果没有指定列列表,则由发布选项
publish_generated_columns 控制是否发布生成列。以前生成列不会被复制,订阅者必须自行计算这些值(如果可能的话);这对于缺乏这种能力的非
PostgreSQL 订阅者特别有用。
将CREATE SUBSCRIPTION的 streaming 选项默认值从 off 改为 parallel
(Vignesh C)
§
允许ALTER SUBSCRIPTION更改复制槽的两阶段提交行为(Hayato Kuroda, Ajin Cherian, Amit Kapila, Zhijie Hou) § §
在应用逻辑复制变更时记录冲突(Zhijie Hou, Nisha Moond) § § § § §
还会在 pg_stat_subscription_stats 的新列中进行报告。
允许生成列为虚拟,并将其设为默认 (Peter Eisentraut, Jian He, Richard Guo, Dean Rasheed) § § §
虚拟生成列在读取列时生成其值,而不是在写入时。仍然可以通过
STORED 选项指定写入行为。
为 DML 查询中的 RETURNING 添加
OLD/NEW 支持 (Dean Rasheed)
§
以前 RETURNING 只为INSERT和UPDATE返回新值,而为DELETE返回旧值;MERGE则会为其执行的内部查询返回相应的值。这一新语法允许
INSERT/UPDATE/DELETE/MERGE
的 RETURNING 列表使用特殊别名 old 和
new 显式返回旧值和新值。这些别名可以重命名,以避免标识符冲突。
允许像现有的本地表一样创建外部表 (Zhang Mingli) §
允许文本位置搜索函数使用非确定性排序规则 (Peter Eisentraut) §
这些操作以前会生成一个错误。
添加内建排序规则提供程序 PG_UNICODE_FAST
(Jeff Davis)
§
此区域设置支持大小写映射,但按码位顺序排序,而不是按自然语言顺序。
允许VACUUM和ANALYZE处理分区表而不处理其子表 (Michael Harris) §
通过新的 ONLY 选项启用。由于自动清理不会处理分区表本身,而只处理其子表,因此这很有用。
添加用于修改每关系和每列优化器统计信息的函数 (Corey Huinker) § § §
这些函数是 pg_restore_relation_stats()、
pg_restore_attribute_stats()、
pg_clear_relation_stats() 和
pg_clear_attribute_stats()。
添加服务器变量file_copy_method来控制文件复制方法 (Nazir Bilal Yavuz) §
它控制 CREATE DATABASE
... STRATEGY=FILE_COPY 和 ALTER DATABASE ... SET
TABLESPACE 使用文件复制还是克隆。
允许指定不重叠的 PRIMARY
KEY、
UNIQUE 和外键约束 (Paul A. Jungwirth)
§
§
对于 PRIMARY KEY 和 UNIQUE,可通过
WITHOUT OVERLAPS 指定;对于外键,则通过
PERIOD 指定,这些都应用于最后指定的列。
允许将 CHECK
和外键约束指定为 NOT ENFORCED
(Amul Sul)
§
§
这还添加了列 pg_constraint.conenforced。
要求主键/外键关系使用确定性排序规则或相同的非确定性排序规则 (Peter Eisentraut) §
pg_dump 的恢复(也被pg_upgrade所使用)在不满足这些要求时将失败;必须更改模式,这些升级方法才能成功。
将列的 NOT
NULL 规范存储在 pg_constraint
中 (Álvaro Herrera, Bernd Helmle)
§
§
这允许为 NOT NULL 约束指定名称。它还将 NOT NULL 约束添加到外部表,并为本地表添加
NOT NULL 继承控制。
允许ALTER TABLE设置 NOT NULL
约束的 NOT VALID 属性
(Rushabh Lathia, Jian He)
§
允许在分区表上使用 NOT VALID 外键约束
(Amul Sul)
§
允许在分区表上以 ONLY 方式删除约束 (Álvaro Herrera)
§
这在以前被错误地禁止。
添加 REJECT_LIMIT 来控制 COPY FROM 可忽略的无效行数
(Atsushi Torikoshi)
§
在 ON_ERROR = 'ignore' 时可用。
允许 COPY TO 从已填充的物化视图中复制行
(Jian He)
§
为 COPY 的 LOG_VERBOSITY 添加
silent 级别,以抑制被忽略行的日志输出
(Atsushi Torikoshi)
§
当 on_error = 'ignore' 时,此新级别会抑制被丢弃输入行的输出。
禁止在外部表上使用 COPY FREEZE
(Nathan Bossart)
§
以前 COPY 可以执行但 FREEZE 被忽略,因此现在禁止此命令。
在 EXPLAIN ANALYZE 中自动包含 BUFFERS 输出
(Guillaume Lelarge, David Rowley)
§
在 EXPLAIN
(WAL) 输出中添加完整的 WAL 缓冲区计数 (Bertrand Drouvot)
§
在 EXPLAIN ANALYZE 中,报告每个索引扫描节点使用的索引查找次数
(Peter Geoghegan)
§
修改 EXPLAIN 以输出带小数的行计数
(Ibrar Ahmed, Ilia Evdokimov, Robert Haas)
§
§
在 EXPLAIN 输出中为 Material、
Window Aggregate 和公共表表达式节点添加内存和磁盘使用细节
(David Rowley, Tatsuo Ishii)
§
§
§
§
在 EXPLAIN 输出中添加关于窗口函数参数的细节
(Tom Lane)
§
在 EXPLAIN ANALYZE 中添加 Parallel Bitmap Heap Scan
工作进程缓存统计信息 (David Geier,
Heikki Linnakangas, Donghang Lin, Alena Rybakina, David Rowley)
§
在 EXPLAIN ANALYZE 输出中标记被禁用的节点
(Robert Haas, David Rowley, Laurenz Albe)
§
§
§
改进 Unicode 的完整大小写映射和转换 (Jeff Davis) § §
这增加了执行条件大小写映射和标题大小写映射的能力,以及将单个字符大小写映射为多个字符的能力。
允许将 jsonb 的
null 值转换为标量类型时作为
NULL (Tom Lane)
§
以前这种转换会生成一个错误。
为 json{b}_strip_nulls
添加可选参数,以允许移除 null 数组元素 (Florents Tselai)
§
添加函数 array_sort(),用于对数组的第一维进行排序 (Junwang Zhao, Jian He)
§
添加函数 array_reverse(),用于反转数组的第一维 (Aleksander Alekseev)
§
允许在整数类型与 bytea 之间进行转换 (Aleksander
Alekseev)
§
整数值以 bytea 二进制补码值的形式存储。
改进 XML
错误代码,使其更接近 SQL 标准
(Tom Lane)
§
这些错误通过 SQLSTATE 报告。
添加函数 casefold(),以支持更复杂的大小写不敏感匹配 (Jeff Davis)
§
这允许更精确的比较,即一个字符可以有多个大写或小写等价形式,或者大小写转换会改变字符的数量。
允许在数组和组合类型上使用 MIN()/MAX()
聚合 (Aleksander Alekseev, Marat Buharov)
§
§
改进 EXTRACT(QUARTER ...) 对负值的输出 (Tom Lane)
§
为 to_number()
添加罗马数字支持 (Hunaid Sohail)
§
通过 RN 模式进行访问。
添加 UUID
版本 7 生成函数 uuidv7()
(Andrey Borodin)
§
这种 UUID 值可按时间排序。还添加了函数别名 uuidv4(),用于显式生成版本 4 的 UUID。
允许在 PL/pgSQL 中对命名游标参数使用
=> 语法 (Pavel Stehule)
§
以前只接受 :=。
允许 regexp_match[es]()/regexp_like()/regexp_replace()/regexp_count()/regexp_instr()/regexp_substr()/regexp_split_to_table()/regexp_split_to_array()
使用命名参数 (Jian He)
§
添加函数 PQfullProtocolVersion(),用于报告包含次版本号在内的完整协议版本号 (Jacob
Champion, Jelte Fennema-Nio)
§
添加 libpq 连接参数和环境变量,用于指定连接可接受的最小和最大协议版本 (Jelte Fennema-Nio) § §
向客户端报告search_path的更改 (Alexander Kukushkin, Jelte Fennema-Nio, Tomas Vondra) § §
添加 libpq 连接参数 sslkeylogfile,用于转储 SSL 密钥材料 (Abhishek Chanda,
Daniel Gustafsson)
§
这对调试很有用。
修改一些 libpq 函数签名以使用
int64_t (Thomas Munro)
§
这些以前使用 pg_int64,现在它已被弃用。
允许 psql 解析、绑定和关闭命名预备语句 (Anthonin Bonnefoy, Michael Paquier) § §
这是通过新命令 \parse、
\bind_named
和 \close_prepared。
添加 psql 反斜杠命令,以允许发出流水线查询 (Anthonin Bonnefoy) § § §
新命令为 \startpipeline、
\syncpipeline、\sendpipeline、
\endpipeline、\flushrequest、
\flush 和 \getresults。
允许在 psql 提示符中添加流水线状态,并添加相关状态变量 (Anthonin Bonnefoy) §
新的提示符字符是 %P,新的 psql 变量是 PIPELINE_SYNC_COUNT、
PIPELINE_COMMAND_COUNT
和 PIPELINE_RESULT_COUNT。
允许将连接服务名添加到 psql 提示符,或通过 psql 变量访问它 (Michael Banck) §
添加 psql 选项,以便在所有列表命令上使用扩展模式 (Dean Rasheed) §
添加反斜杠后缀 x 即可启用此功能。
更改 psql 的\conninfo以使用表格格式并包含更多信息
(Álvaro Herrera, Maiquel Grassi,
Hunaid Sohail)
§
在 psql 的 \df+、
\do+、\dAo+ 和
\dC+ 输出中添加函数的防泄漏(leakproof)标记
(Yugo Nagata)
§
添加 psql 变量WATCH_INTERVAL来设置 \watch
的默认等待时间 (Daniel Gustafsson)
§
更改initdb使其默认启用校验和 (Greg Sabino Mullane) § §
新的 initdb 选项
--no-data-checksums 可禁用校验和。
添加 initdb 选项
--no-sync-data-files,以避免同步堆/索引文件
(Nathan Bossart)
§
initdb 选项 --no-sync
仍可用于避免同步任何文件。
添加vacuumdb选项
--missing-stats-only,以仅计算缺失的优化器统计信息
(Corey Huinker, Nathan Bossart)
§
§
此选项只能由超级用户运行,并且只能与选项 --analyze-only
和 --analyze-in-stages 一起使用。
添加pg_combinebackup选项
-k/--link 以启用硬链接
(Israel Barth Rubio, Robert Haas)
§
只有部分文件可以进行硬链接。如果这些备份将被独立使用,则不应使用此选项。
允许pg_verifybackup验证 tar 格式的备份 (Amul Sul) §
如果pg_rewind的 --source-server
指定了数据库名,则在
--write-recovery-conf 输出中使用它 (Masahiko Sawada)
§
添加pg_resetwal选项
--char-signedness 以更改默认
char 类型的符号性 (Masahiko Sawada)
§
为 pg_dump 和pg_dumpall添加选项 --sequence-data,以转储通常会被排除的序列数据 (Nathan Bossart)
§
§
为pg_dump、pg_dumpall和pg_restore添加选项
--statistics-only、--no-statistics、--no-data 和 --no-schema
(Corey Huinker, Jeff Davis)
§
添加选项 --no-policies,以在pg_dump、pg_dumpall和pg_restore中禁用行级安全策略处理
(Nikolay Samokhvalov)
§
这对迁移到具有不同策略的系统很有用。
允许 pg_upgrade 保留优化器统计信息 (Corey Huinker, Jeff Davis, Nathan Bossart) § § § §
扩展统计信息不会被保留。此外还新增了
pg_upgrade 选项
--no-statistics,用于禁用统计信息的保留。
允许 pg_upgrade 并行处理数据库检查(Nathan Bossart) § § § § § § § § § § §
这由现有的 --jobs 选项控制。
新增 pg_upgrade 选项
--swap,以交换目录的方式取代复制、克隆或链接文件(Nathan Bossart)
§
这种模式可能是最快的。
新增 pg_upgrade 选项
--set-char-signedness,用于设置新集簇默认的
char 符号性(Masahiko Sawada)
§
§
用于处理 pre-PostgreSQL 18 集簇的默认 CPU 符号性与新集簇不匹配的情况。
为pg_createsubscriber新增选项
--all,用于为所有数据库创建逻辑副本(Shubham Khanna)
§
新增 pg_createsubscriber 选项
--clean,用于移除发布(Shubham Khanna)
§
§
新增 pg_createsubscriber 选项
--enable-two-phase,用于启用预备事务(Shubham Khanna)
§
为pg_recvlogical新增选项
--enable-failover,用于指定故障转移槽(Hayato Kuroda)
§
另外新增选项 --enable-two-phase
作为 --two-phase 的同义词,并弃用后者。
允许 pg_recvlogical 的
--drop-slot 在没有
--dbname 的情况下工作(Hayato Kuroda)
§
将注入点的加载与运行分离开来(Michael Paquier, Heikki Linnakangas) § §
现在可以通过 INJECTION_POINT_LOAD()
创建注入点但不运行,这类注入点可通过 INJECTION_POINT_CACHED() 来运行。
支持在注入点中使用运行时参数(Michael Paquier) §
允许通过 IS_INJECTION_POINT_ATTACHED()
使用内联的注入点测试代码(Heikki Linnakangas)
§
使用 x86 AVX-512 指令加速 CRC32C 计算(Raghuveer Devulapalli, Paul Amonson) §
为 popcount(整数位计数)新增 ARM Neon 和 SVE CPU 内建函数(Chiranmoy Bhattacharya, Devanga Susmitha, Rama Malladi) § §
提升 numeric 类型的乘法与除法运算速度(Joel Jacobson, Dean Rasheed) § § § §
新增配置选项 --with-libnuma
以启用 NUMA 感知(Jakub Wartak,
Bertrand Drouvot)
§
§
§
函数 pg_numa_available()
用于报告 NUMA 感知能力,系统视图 pg_shmem_allocations_numa
和 pg_buffercache_numa
则报告共享内存在各个
NUMA 节点上的分布情况。
移除列 pg_attribute.attcacheoff
(David Rowley)
§
在索引访问方法 API
中新增 amgettreeheight、
amconsistentequality 和
amconsistentordering(Mark Dilger)
§
§
新增 GiST 支持函数 stratnum()
(Paul A. Jungwirth)
§
在pg_controldata中记录
char 的默认
CPU 符号性(Masahiko Sawada)
§
在 PL/Python 中增加对 Python “受限 API”的支持(Peter Eisentraut) § §
这有助于避免 Python 3.x 版本不匹配所导致的问题。
将受支持的最低 Python 版本改为 3.6.8(Jacob Champion) §
如果启用了 LLVM,则要求版本为 14 或更高(Thomas Munro) §
新增宏 PG_MODULE_MAGIC_EXT,允许扩展报告其名称和版本(Andrei Lepikhov)
§
可以通过新函数 pg_get_loaded_modules() 访问这些信息。
文档中说明 SPI_connect()/SPI_connect_ext()
总是返回成功(SPI_OK_CONNECT)(Stepan Neretin)
§
错误总是通过 ereport() 报告。
移除 Windows 上 Meson 构建的实验性标记(Aleksander Alekseev) §
移除 configure 选项 --disable-spinlocks
和 --disable-atomics(Thomas Munro)
§
§
现在要求必须支持 32 位原子操作。
移除对 HPPA/PA-RISC 体系结构的支持(Tom Lane) §
新增扩展pg_logicalinspect,用于检查逻辑快照(Bertrand Drouvot) §
新增扩展pg_overexplain,用于向 EXPLAIN
的输出添加调试详细信息(Robert Haas)
§
为 postgres_fdw_get_connections()
新增输出列(Hayato Kuroda, Sagar Dilip Shedge)
§
§
§
§
新输出列 used_in_xact
指示外部数据包装器当前是否正被某个事务使用,
closed 指示连接是否已关闭,
user_name 指示用户名,
remote_backend_pid
指示远端后端进程标识符。
允许将来自客户端的 SCRAM 认证传递给postgres_fdw服务器(Matheus Alcantara, Peter Eisentraut) §
这样可以避免在数据库中存储
postgres_fdw 的认证信息,该功能通过 postgres_fdw 的 use_scram_passthrough
连接选项启用。libpq 使用新的连接参数scram_client_key和scram_server_key。
为file_fdw新增 on_error
和 log_verbosity 选项(Atsushi Torikoshi)
§
这些选项控制 file_fdw 如何处理和报告无效的文件行。
新增 reject_limit,用于控制 file_fdw
可以忽略的无效行数(Atsushi Torikoshi)
§
仅当 ON_ERROR = 'ignore' 时才会生效。
为passwordcheck新增可配置变量
min_password_length(Emanuele Musella, Maurizio Boriani)
§
该变量控制密码的最小长度。
新增isn服务器变量 weak,用于控制是否接受无效的校验位(Viktor Holmberg)
§
之前这只能通过函数 isn_weak() 来控制。
允许对值进行排序,以加速btree_gist索引的构建(Bernd Helmle, Andrey Borodin) §
新增amcheck检查函数 gin_index_check(),用于验证 GIN 索引(Grigory Kryachko, Heikki
Linnakangas, Andrey Borodin)
§
新增函数 pg_buffercache_evict_relation()
和 pg_buffercache_evict_all()
用于逐出未被固定的共享缓冲区(Nazir Bilal Yavuz)
§
现有函数 pg_buffercache_evict()
现在会返回缓冲区刷写状态。
允许 pg_stat_statements 跟踪CREATE TABLE AS和DECLARE的查询(Anthonin Bonnefoy) §
这些查询现在也会被分配查询 ID。
允许 pg_stat_statements 对SET的值进行参数化(Greg Sabino Mullane, Michael Paquier) §
这减少了由包含不同常量的 SET
语句造成的膨胀。
新增 pg_stat_statements
列,用于报告并行活动(Guillaume Lelarge)
§
新增的列是
parallel_workers_to_launch 和
parallel_workers_launched。
新增
pg_stat_statements.wal_buffers_full,用于报告 WAL 缓冲区写满的情况(Bertrand Drouvot)
§
新增 pgcrypto 算法
sha256crypt
和 sha512crypt(Bernd Helmle)
§
新增函数 fips_mode(),用于报告服务器的
FIPS 模式(Daniel Gustafsson)
§
新增 pgcrypto 服务器变量 builtin_crypto_enabled,允许禁用内建的非 FIPS 模式密码学函数(Daniel Gustafsson, Joe Conway)
§
这有助于保证 FIPS 模式的行为。
以下人员(按字母顺序排列)以补丁作者、提交者、评审者、测试者或问题报告者的身份为本次发布做出了贡献。
| Abhishek Chanda |
| Adam Guo |
| Adam Rauch |
| Aidar Imamov |
| Ajin Cherian |
| Alastair Turner |
| Alec Cozens |
| Aleksander Alekseev |
| Alena Rybakina |
| Alex Friedman |
| Alex Richman |
| Alexander Alehin |
| Alexander Borisov |
| Alexander Korotkov |
| Alexander Kozhemyakin |
| Alexander Kukushkin |
| Alexander Kuzmenkov |
| Alexander Kuznetsov |
| Alexander Lakhin |
| Alexander Pyhalov |
| Alexandra Wang |
| Alexey Dvoichenkov |
| Alexey Makhmutov |
| Alexey Shishkin |
| Ali Akbar |
| Álvaro Herrera |
| Álvaro Mongil |
| Amit Kapila |
| Amit Langote |
| Amul Sul |
| Andreas Karlsson |
| Andreas Scherbaum |
| Andreas Ulbrich |
| Andrei Lepikhov |
| Andres Freund |
| Andrew |
| Andrew Bille |
| Andrew Dunstan |
| Andrew Jackson |
| Andrew Kane |
| Andrew Watkins |
| Andrey Borodin |
| Andrey Chudnovsky |
| Andrey Rachitskiy |
| Andrey Rudometov |
| Andy Alsup |
| Andy Fan |
| Anthonin Bonnefoy |
| Anthony Hsu |
| Anthony Leung |
| Anton Melnikov |
| Anton Voloshin |
| Antonin Houska |
| Antti Lampinen |
| Arseniy Mukhin |
| Artur Zakirov |
| Arun Thirupathi |
| Ashutosh Bapat |
| Asphator |
| Atsushi Torikoshi |
| Avi Weinberg |
| Aya Iwata |
| Ayush Tiwari |
| Ayush Vatsa |
| Bastien Roucariès |
| Ben Peachey Higdon |
| Benoit Lobréau |
| Bernd Helmle |
| Bernd Reiß |
| Bernhard Wiedemann |
| Bertrand Drouvot |
| Bertrand Mamasam |
| Bharath Rupireddy |
| Bogdan Grigorenko |
| Boyu Yang |
| Braulio Fdo Gonzalez |
| Bruce Momjian |
| Bykov Ivan |
| Cameron Vogt |
| Cary Huang |
| Cédric Villemain |
| Cees van Zeeland |
| ChangAo Chen |
| Chao Li |
| Chapman Flack |
| Charles Samborski |
| Chengwen Wu |
| Chengxi Sun |
| Chiranmoy Bhattacharya |
| Chris Gooch |
| Christian Charukiewicz |
| Christoph Berg |
| Christophe Courtois |
| Christopher Inokuchi |
| Clemens Ruck |
| Corey Huinker |
| Craig Milhiser |
| Crisp Lee |
| Dagfinn Ilmari Mannsåker |
| Daniel Elishakov |
| Daniel Gustafsson |
| Daniel Vérité |
| Daniel Westermann |
| Daniele Varrazzo |
| Daniil Davydov |
| Daria Shanina |
| Dave Cramer |
| Dave Page |
| David Benjamin |
| David Christensen |
| David Fiedler |
| David G. Johnston |
| David Geier |
| David Rowley |
| David Steele |
| David Wheeler |
| David Zhang |
| Davinder Singh |
| Dean Rasheed |
| Devanga Susmitha |
| Devrim Gündüz |
| Dian Fay |
| Dilip Kumar |
| Dimitrios Apostolou |
| Dipesh Dhameliya |
| Dmitrii Bondar |
| Dmitry Dolgov |
| Dmitry Koval |
| Dmitry Kovalenko |
| Dmitry Yurichev |
| Dominique Devienne |
| Donghang Lin |
| Dorjpalam Batbaatar |
| Drew Callahan |
| Duncan Sands |
| Dwayne Towell |
| Dzmitry Jachnik |
| Egor Chindyaskin |
| Egor Rogov |
| Emanuel Ionescu |
| Emanuele Musella |
| Emre Hasegeli |
| Eric Cyr |
| Erica Zhang |
| Erik Nordström |
| Erik Rijkers |
| Erik Wienhold |
| Erki Eessaar |
| Ethan Mertz |
| Etienne LAFARGE |
| Etsuro Fujita |
| Euler Taveira |
| Evan Si |
| Evgeniy Gorbanev |
| Fabio R. Sluzala |
| Fabrízio de Royes Mello |
| Feike Steenbergen |
| Feliphe Pozzer |
| Felix |
| Fire Emerald |
| Florents Tselai |
| Francesco Degrassi |
| Frank Streitzig |
| Frédéric Yhuel |
| Fredrik Widlert |
| Gabriele Bartolini |
| Gavin Panella |
| Geoff Winkless |
| George MacKerron |
| Gilles Darold |
| Grant Gryczan |
| Greg Burd |
| Greg Sabino Mullane |
| Greg Stark |
| Grigory Kryachko |
| Guillaume Lelarge |
| Gunnar Morling |
| Gunnar Wagner |
| Gurjeet Singh |
| Haifang Wang |
| Hajime Matsunaga |
| Hamid Akhtar |
| Hannu Krosing |
| Hari Krishna Sunder |
| Haruka Takatsuka |
| Hayato Kuroda |
| Heikki Linnakangas |
| Hironobu Suzuki |
| Holger Jakobs |
| Hubert Lubaczewski |
| Hugo Dubois |
| Hugo Zhang |
| Hunaid Sohail |
| Hywel Carver |
| Ian Barwick |
| Ibrar Ahmed |
| Igor Gnatyuk |
| Igor Korot |
| Ilia Evdokimov |
| Ilya Gladyshev |
| Ilyasov Ian |
| Imran Zaheer |
| Isaac Morland |
| Israel Barth Rubio |
| Ivan Kush |
| Jacob Brazeal |
| Jacob Champion |
| Jaime Casanova |
| Jakob Egger |
| Jakub Wartak |
| James Coleman |
| James Hunter |
| Jan Behrens |
| Japin Li |
| Jason Smith |
| Jayesh Dehankar |
| Jeevan Chalke |
| Jeff Davis |
| Jehan-Guillaume de Rorthais |
| Jelte Fennema-Nio |
| Jian He |
| Jianghua Yang |
| Jiao Shuntian |
| Jim Jones |
| Jim Nasby |
| Jingtang Zhang |
| Jingzhou Fu |
| Joe Conway |
| Joel Jacobson |
| John Hutchins |
| John Naylor |
| Jonathan Katz |
| Jorge Solórzano |
| José Villanova |
| Josef Šimánek |
| Joseph Koshakow |
| Julien Rouhaud |
| Junwang Zhao |
| Justin Pryzby |
| Kaido Vaikla |
| Kaimeh |
| Karina Litskevich |
| Karthik S |
| Kartyshov Ivan |
| Kashif Zeeshan |
| Keisuke Kuroda |
| Kevin Hale Boyes |
| Kevin K Biju |
| Kirill Reshke |
| Kirill Zdornyy |
| Koen De Groote |
| Koichi Suzuki |
| Koki Nakamura |
| Konstantin Knizhnik |
| Kouhei Sutou |
| Kuntal Ghosh |
| Kyotaro Horiguchi |
| Lakshmi Narayana Velayudam |
| Lars Kanis |
| Laurence Parry |
| Laurenz Albe |
| Lele Gaifax |
| Li Yong |
| Lilian Ontowhee |
| Lingbin Meng |
| Luboslav Špilák |
| Luca Vallisa |
| Lukas Fittl |
| Maciek Sakrejda |
| Magnus Hagander |
| Mahendra Singh Thalor |
| Mahendrakar Srinivasarao |
| Maiquel Grassi |
| Maksim Korotkov |
| Maksim Melnikov |
| Man Zeng |
| Marat Buharov |
| Marc Balmer |
| Marco Nenciarini |
| Marcos Pegoraro |
| Marina Polyakova |
| Mark Callaghan |
| Mark Dilger |
| Marlene Brandstaetter |
| Marlene Reiterer |
| Martin Rakhmanov |
| Masahiko Sawada |
| Masahiro Ikeda |
| Masao Fujii |
| Mason Mackaman |
| Mat Arye |
| Matheus Alcantara |
| Mats Kindahl |
| Matthew Gabeler-Lee |
| Matthew Kim |
| Matthew Sterrett |
| Matthew Woodcraft |
| Matthias van de Meent |
| Matthieu Denais |
| Maurizio Boriani |
| Max Johnson |
| Max Madden |
| Maxim Boguk |
| Maxim Orlov |
| Maximilian Chrzan |
| Melanie Plageman |
| Melih Mutlu |
| Mert Alev |
| Michael Banck |
| Michael Bondarenko |
| Michael Christofides |
| Michael Guissine |
| Michael Harris |
| Michaël Paquier |
| Michail Nikolaev |
| Michal Kleczek |
| Michel Pelletier |
| Mikaël Gourlaouen |
| Mikhail Gribkov |
| Mikhail Kot |
| Milosz Chmura |
| Muralikrishna Bandaru |
| Murat Efendioglu |
| Mutaamba Maasha |
| Naeem Akhter |
| Nat Makarevitch |
| Nathan Bossart |
| Navneet Kumar |
| Nazir Bilal Yavuz |
| Neil Conway |
| Niccolò Fei |
| Nick Davies |
| Nicolas Maus |
| Niek Brasa |
| Nikhil Raj |
| Nikita |
| Nikita Kalinin |
| Nikita Malakhov |
| Nikolay Samokhvalov |
| Nikolay Shaplov |
| Nisha Moond |
| Nitin Jadhav |
| Nitin Motiani |
| Noah Misch |
| Noboru Saito |
| Noriyoshi Shinoda |
| Ole Peder Brandtzæg |
| Oleg Sibiryakov |
| Oleg Tselebrovskiy |
| Olleg Samoylov |
| Onder Kalaci |
| Ondrej Navratil |
| Patrick Stählin |
| Paul Amonson |
| Paul Jungwirth |
| Paul Ramsey |
| Pavel Borisov |
| Pavel Luzanov |
| Pavel Nekrasov |
| Pavel Stehule |
| Peter Eisentraut |
| Peter Geoghegan |
| Peter Mittere |
| Peter Smith |
| Phil Eaton |
| Philipp Salvisberg |
| Philippe Beaudoin |
| Pierre Giraud |
| Pixian Shi |
| Polina Bungina |
| Przemyslaw Sztoch |
| Quynh Tran |
| Rafia Sabih |
| Raghuveer Devulapalli |
| Rahila Syed |
| Rama Malladi |
| Ran Benita |
| Ranier Vilela |
| Renan Alves Fonseca |
| Richard Guo |
| Richard Neill |
| Rintaro Ikeda |
| Robert Haas |
| Robert Treat |
| Robins Tharakan |
| Roman Zharkov |
| Ronald Cruz |
| Ronan Dunklau |
| Rui Zhao |
| Rushabh Lathia |
| Rustam Allakov |
| Ryo Kanbayashi |
| Ryohei Takahashi |
| RyotaK |
| Sagar Dilip Shedge |
| Salvatore Dipietro |
| Sam Gabrielsson |
| Sam James |
| Sameer Kumar |
| Sami Imseih |
| Samuel Thibault |
| Satyanarayana Narlapuram |
| Sebastian Skalacki |
| Senglee Choi |
| Sergei Kornilov |
| Sergey Belyashov |
| Sergey Dudoladov |
| Sergey Prokhorenko |
| Sergey Sargsyan |
| Sergey Soloviev |
| Sergey Tatarintsev |
| Shaik Mohammad Mujeeb |
| Shawn McCoy |
| Shenhao Wang |
| Shihao Zhong |
| Shinya Kato |
| Shlok Kyal |
| Shubham Khanna |
| Shveta Malik |
| Simon Riggs |
| Smolkin Grigory |
| Sofia Kopikova |
| Song Hongyu |
| Song Jinzhou |
| Soumyadeep Chakraborty |
| Sravan Kumar |
| Srinath Reddy |
| Stan Hu |
| Stepan Neretin |
| Stephen Fewer |
| Stephen Frost |
| Steve Chavez |
| Steven Niu |
| Suraj Kharage |
| Sven Klemm |
| Takamichi Osumi |
| Takeshi Ideriha |
| Tatsuo Ishii |
| Ted Yu |
| Tels |
| Tender Wang |
| Teodor Sigaev |
| Thom Brown |
| Thomas Baehler |
| Thomas Krennwallner |
| Thomas Munro |
| Tim Wood |
| Timur Magomedov |
| Tobias Wendorff |
| Todd Cook |
| Tofig Aliev |
| Tom Lane |
| Tomas Vondra |
| Tomasz Rybak |
| Tomasz Szypowski |
| Torsten Foertsch |
| Toshi Harada |
| Tristan Partin |
| Triveni N |
| Umar Hayat |
| Vallimaharajan G |
| Vasya Boytsov |
| Victor Yegorov |
| Vignesh C |
| Viktor Holmberg |
| Vinícius Abrahão |
| Vinod Sridharan |
| Virender Singla |
| Vitaly Davydov |
| Vladlen Popolitov |
| Vladyslav Nebozhyn |
| Walid Ibrahim |
| Webbo Han |
| Wenhui Qiu |
| Will Mortensen |
| Will Storey |
| Wolfgang Walther |
| Xin Zhang |
| Xing Guo |
| Xuneng Zhou |
| Yan Chengpen |
| Yang Lei |
| Yaroslav Saburov |
| Yaroslav Syrytsia |
| Yasir Hussain |
| Yasuo Honda |
| Yogesh Sharma |
| Yonghao Lee |
| Yoran Heling |
| Yu Liang |
| Yugo Nagata |
| Yuhang Qiu |
| Yuki Seino |
| Yura Sokolov |
| Yurii Rashkovskii |
| Yushi Ogiwara |
| Yusuke Sugie |
| Yuta Katsuragi |
| Yuto Sasaki |
| Yuuki Fujii |
| Yuya Watari |
| Zane Duffield |
| Zeyuan Hu |
| Zhang Mingli |
| Zhihong Yu |
| Zhijie Hou |
| Zsolt Parragi |