发布日期: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 | 
如果您发现文档中有任何不正确、与您使用特定功能的经验不符或需要进一步澄清的地方,请使用此表单报告文档问题。