发布日期:2025-09-25
PostgreSQL 18 包含许多新特性和增强功能,包括
异步 I/O (AIO) 子系统,可以提高顺序扫描、位图堆扫描、清理和其他操作的性能。
pg_upgrade 现在保留优化器统计信息。
支持“跳过扫描”查找,允许在更多情况下使用多列 B 树索引。
虚拟生成列,它们在读操作期间计算其值。这现在是生成列的默认设置。
OAuth 认证支持。
在 INSERT、UPDATE、DELETE 和 MERGE 命令的 RETURNING
子句中支持 OLD
和 NEW
。
对于 PRIMARY KEY、UNIQUE 和 FOREIGN KEY 约束的时间约束或范围约束。
下面几节将更详细地解释上述项目以及 PostgreSQL 18 的其他新特性。
对于希望从任何以前的版本迁移数据的人来说,需要使用 pg_dumpall 进行转储/恢复,或者使用 pg_upgrade 或逻辑复制。有关迁移到新主要版本的通用信息,请参阅 第 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) § §
psql 在从 STDIN
读取文件时仍会将 \.
视为文件结束标记。CSV较旧的 psql 客户端连接到 PostgreSQL 18 服务器可能会遇到 \copy
问题。此版本还强制要求 \.
必须单独出现在一行中。
禁止未记录的分区表(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) § § §
这些以前是从零开始的。
更改 全文搜索 以使用集群的默认排序规则提供程序来读取配置文件和字典,而不是始终使用 libc(Peter Eisentraut) §
默认使用非 libc 排序规则提供程序(例如 ICU,内置)的集群,对于 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
以及 VERBOSE
模式下的 VACUUM 和 ANALYZE 的输出中;必须使用服务器变量 track_cost_delay_timing 启用跟踪。
添加WAL, CPU以及平均读取统计信息输出到 ANALYZE VERBOSE
(Anthonin Bonnefoy) § §
添加完整WAL缓冲区计数到 VACUUM
/ANALYZE (VERBOSE)
和 autovacuum 日志输出(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
。op_bytes
列(始终等于 BLCKSZ
)已移除。
添加WALpg_stat_io
的 I/O 活动行(Nazir Bilal Yavuz, Bertrand Drouvot, Michael Paquier) § § §
这包括WAL接收器活动以及此类写入的等待事件。
更改服务器变量 track_wal_io_timing 以控制跟踪WALpg_stat_io
中的时间而不是 pg_stat_wal
(Bertrand Drouvot) §
从 pg_stat_wal
中移除读/同步列(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 使用。
调整查询 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 流式选项的默认值从 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) § §
这通过 WITHOUT OVERLAPS
用于 PRIMARY KEY
和 UNIQUE
,并通过 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) §
允许在分区表上 仅 丢弃约束(Á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
会被忽略,所以禁止此命令。
自动将 BUFFERS
输出包含在 EXPLAIN ANALYZE
中(Guillaume Lelarge, David Rowley) §
添加完整WAL缓冲区计数到 EXPLAIN (WAL)
输出(Bertrand Drouvot) §
在 EXPLAIN ANALYZE
中,报告每个索引扫描节点使用的索引查找次数(Peter Geoghegan) §
修改 EXPLAIN
以输出小数行计数(Ibrar Ahmed, Ilia Evdokimov, Robert Haas) § §
将内存和磁盘使用详细信息添加到 Material
、Window Aggregate
和通用表表达式节点到 EXPLAIN
输出(David Rowley, Tatsuo Ishii) § § § §
将窗口函数参数的详细信息添加到 EXPLAIN
输出(Tom Lane) §
将 Parallel Bitmap Heap Scan
工作者缓存统计信息添加到 EXPLAIN ANALYZE
(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
添加可选参数,以允许删除空数组元素(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+
输出(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) § §
这是为了处理 PostgreSQL 18 之前集群的默认CPU符号性与新集群不匹配的情况。
添加 pg_createsubscriber 选项 --all
以创建所有数据库的逻辑副本(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) §
使用 x86AVX-512 指令加速 CRC32C 计算(Raghuveer Devulapalli, Paul Amonson) §
添加ARMNeon 和SVE CPU用于 popcount(整数位计数)的内在函数(Chiranmoy Bhattacharya, Devanga Susmitha, Rama Malladi) § §
添加配置选项--with-libnuma
以启用NUMA(Jakub Wartak, Bertrand Drouvot) § § §
函数pg_numa_available()
报告NUMA,以及报告共享内存跨节点分布的系统视图pg_shmem_allocations_numa
和pg_buffercache_numa
。NUMA节点。
移除列pg_attribute
.attcacheoff
(David Rowley) §
将amgettreeheight
、amconsistentequality
和amconsistentordering
添加到索引访问方法API(Mark Dilger) § §
添加GiST支持函数stratnum()
(Paul A. Jungwirth) §
记录char
在pg_controldata中的默认有符号性(Masahiko Sawada) §CPU的默认有符号性。
在PL/Python中添加对Python“Limited”的支持(Peter Eisentraut) § §API“的支持。
这有助于防止由于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) §
移除配置选项--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()
现在返回缓冲区刷新状态。
允许CREATE TABLE AS和DECLARE的查询被pg_stat_statements跟踪(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 |
如果您发现文档中有任何不正确、与您使用特定功能的经验不符或需要进一步澄清的地方,请使用此表单报告文档问题。