发布日期: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 |