首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >PostgreSQL18-RC1发布,这些改进值得关注

PostgreSQL18-RC1发布,这些改进值得关注

原创
作者头像
小徐
发布2025-09-11 10:58:10
发布2025-09-11 10:58:10
730
举报

PostgreSQL18-RC1发布,这些改进值得关注

以下内容翻译于 PostgreSQL 官网

PostgreSQL 18 包含许多新功能和增强功能,其中包括:

上述内容以及PostgreSQL 18的其他新功能将在下面的章节中进行更详细的说明。

若要从任何先前版本迁移数据,需要使用 pg_dumpall 进行转储/恢复,或使用 pg_upgrade ,也可采用逻辑复制。有关迁移到新主要版本的一般信息,请参见第 18.6节

版本18包含多项可能影响与先前版本兼容性的更改。请注意以下不兼容之处:

  • initdb 的默认设置更改为启用数据校验。
  • 可以使用新的 initdb 选项 --no-data-checksums 禁用校验和。pg_upgrade 要求集群的校验和设置匹配,因此这个新选项对于升级非校验的旧集群会很有用。
  • 修改时区缩写处理方式: 系统现在将优先使用当前会话的时区缩写,然后再检查服务器变量 timezone_abbreviations 。此前,系统会先检查 timezone_abbreviations
  • 弃用 MD5 密码认证: 未来的主要版本更新中将移除对MD5密码的支持。现在,在设置MD5密码时,CREATE ROLEALTER ROLE 会发出弃用警告。可以通过将 md5_password_warnings 参数设置为 off 来禁用这些警告。
  • VACUUMANALYZE 修改为处理父表的继承子表: 可以通过使用新的 ONLY 选项来执行先前的行为。
  • 防止 COPY FROM 在读取 CSV 文件时将 \. 视为文件结束标记: psql 在从 STDIN 读取 CSV 文件时,仍会将 \. 视为文件结束标记。连接到 PostgreSQL 18 服务器的旧版 psql 客户端可能会遇到 \copy 问题。此版本还强制要求 \. 必须单独出现在一行中。
  • 禁止 unlogged 的分区表: 此前,ALTER TABLE SET [UN]LOGGED 不执行任何操作,并且创建 unlogged 日志的分区表不会导致其子表也不记录日志。
  • 以触发器事件排队时处于活动状态的角色执行 AFTER 触发器: 以前,此类触发器是以触发器执行时(例如在 COMMIT 时)激活的角色运行的。这对于在排队时间和事务提交之间角色发生更改的情况而言意义重大。
  • 移除 GRANT/REVOKE 中对规则权限的非功能性支持: 自 PostgreSQL 8.2 起,这些功能就已经无法使用了。
  • 移除列 pg_backend_memory_contexts.parent 由于已添加 pg_backend_memory_contexts.path,因此不再需要此功能。
  • pg_backend_memory_contexts.levelpg_log_backend_memory_contexts() 改为从 1 开始编号 这些以前是从 0 开始的。
  • 将全文搜索改为使用集群的默认排序规则提供程序来读取配置文件和字典,而不是始终使用 libc 默认使用非 libc 排序规则提供程序(例如ICU、内置)的集群,在处理 LC_CTYPE 所涉及的字符时,其行为与 libc 不同,这类集群可能会发现某些全文搜索函数以及 pg_trgm 扩展的行为发生变化。使用pg_upgrade 升级此类集群时,建议在升级后重新索引所有与全文搜索和 pg_trgm 相关的索引。

以下是 PostgreSQL 18 与上一个主要版本之间变化的详细说明。

  • 自动移除一些不必要的表自连接: 可以通过服务器变量 enable_self_join_elimination 禁用此优化。
  • 将一些IN (VALUES ...) 转换为 x = ANY ... 以获得更好的优化器统计信息。
  • 允许将 OR 子句转换为数组以加快索引处理.
  • 加快 INTERSECTEXCEPT 、窗口聚合和视图列别名的处理速度
  • 允许 SELECT DISTINCT 的键在内部重新排序以避免排序: 可以使用 enable_distinct_reordering 禁用此优化。
  • 忽略在功能上依赖于其他列的 GROUP BY
  • 如果 GROUP BY 子句包含唯一索引的所有列以及同一表中的其他列,那么这些其他列是多余的,可以从分组中删除。对于非延迟主键来说,情况早已如此。
  • 允许一些包含 HAVING 子句的 GROUPING SETS 被推送到 WHERE 子句: 这允许更早地进行行筛选。此版本还修复了一些曾经返回错误结果的 GROUPING SETS 查询。
  • 使用数值和时间戳值改进 generate_series() 的行估计
  • 允许优化器使用 Right Semi Join 计划: 半连接用于需要确定是否存在至少一个匹配项的场景。
  • 允许合并连接使用 增量排序
  • 提高访问多个分区的规划查询效率
  • 允许 Partitionwise 联接更多案例,并减少其内存占用
  • 改进分区查询的成本估算
  • 改进 SQL语言功能 计划缓存
  • 改进对已禁用优化器功能的处理
  • 允许对 btree 索引进行跳跃扫描: 这使得仅对第二个或后续索引列进行等值引用的查询能够使用多列 Btree 索引。
  • 允许非 Btree 唯一索引用作分区键和在物化视图中使用: 索引类型仍必须支持相等性。
  • 允许并行创建 GIN 索引。
  • 允许对值进行排序,以加快范围类型的 GiSTbtree 索引构建
  • 添加 异步I/O 子系统: 此功能允许后端对多个读取请求进行排队,从而实现更高效的顺序扫描、位图堆扫描、清理等操作。这可通过服务器变量 io_method 启用,同时新增了服务器变量 io_combine_limitio_max_combine_limit 来对其进行控制。对于不支持 fadvise() 的系统,此功能还支持将 effective_io_concurrencymaintenance_io_concurrency 的值设置为大于零。新的系统视图 pg_aios 会显示用于 异步I/O 的文件句柄。
  • 提升访问多个关系的查询的锁定性能
  • 提升哈希连接和 GROUP BY 的性能并减少内存使用: 这也改进了 EXCEPT 所使用的哈希集操作,以及子计划值的哈希查找。
  • 允许普通vacuum 冻结某些页面,即使它们全部可见: 这减少了后续全关系冻结的开销。其激进程度可通过服务器变量和表级设置vacuum_max_eager_freeze_failure_rate 来控制。此前,在必须进行冻结操作前,清理 (vacuum) 从不处理全可见页面。
  • 添加服务器变量 vacuum_truncate 以控制 VACUUM 期间的文件截断: 一个具有相同名称和行为的存储级参数已经存在。
  • 将服务器变量 effective_io_concurrencymaintenance_io_concurrency 的默认值增加到16: 这更准确地反映了现代硬件的情况。
  • 提高服务器变量 log_connections 的日志粒度: 此服务器变量以前仅为布尔值,现在仍然支持该类型。
  • 添加 log_connections 选项以报告连接阶段的持续时间。
  • 添加 log_line_prefix 转义符 %L 以输出客户端IP地址。
  • 添加服务器变量 log_lock_failures 以记录锁获取失败: 具体来说,它会报告 SELECT ... NOWAIT 的锁失败情况。
  • 修改 pg_stat_all_tables 表的字段 ,以报告在 VACUUM、ANALYZE 及其表中记录花费的时间: 新列分别是 total_vacuum_time、total_autovacuum_time、total_analyze_timetotal_autoanalyze_time
  • VACUUMANALYZE 添加延迟时间报告: 这些信息会出现在服务器日志、系统视图 pg_stat_progress_vacuumpg_stat_progress_analyze 中,以及处于 VERBOSE 模式时 VACUUMANALYZE 的输出中;必须通过服务器变量 track_cost_delay_timing 启用跟踪功能。
  • WAL、CPU 和平均读取统计信息输出添加到 ANALYZE VERBOSE
  • 将完整的 WAL 缓冲区计数添加到 VACUUM/ANALYZE (VERBOSE) 和自动清理日志输出中
  • 添加每个后端的 I/O 统计报告: 这些统计信息可通过 pg_stat_get_backend_io() 访问。每个后端的 I/O 统计信息可通过pg_stat_reset_backend_stats() 清除。
  • 添加 pg_stat_io 列以字节为单位报告 I/O 活动: 新列包括 read_byteswrite_bytesextend_bytesBLCKSZop_bytes 列已被移除。
  • pg_stat_io 中添加 WAL I/O 活动行: 这包括 WAL 接收器活动以及此类写入的等待事件。
  • 将服务器变量 track_wal_io_timing 更改为在 pg_stat_io 而非 pg_stat_wal 中控制 WAL 计时跟踪
  • pg_stat_wal 中移除 read/sync 列: 这会移除 wal_writewal_syncwal_write_timewal_sync_time 列。
  • 添加函数 pg_stat_get_backend_wal() 以返回每个后端的 WAL 统计信息: 可以通过 pg_stat_reset_backend_stats() 清除每个后端的WAL统计信息。
  • 添加函数 pg_ls_summariesdir(),专门用于列出 PGDATA/pg_wal/summaries 的内容
  • 添加列 pg_stat_checkpointer.num_done 以报告已完成的检查点数量: 列 num_timednum_requested 同时统计已完成和已跳过的检查点。
  • 添加列 pg_stat_checkpointer.slru_written 以报告已写入的 SLRU 缓冲区 此外,修改检查点服务器的日志消息,以分别报告共享缓冲区和 SLRU 缓冲区的值。
  • pg_stat_database 添加列以报告并行工作进程活动: 新列是 parallel_workers_to_launchparallel_workers_launched
  • 让常量列表的查询ID计算仅考虑第一个和最后一个常量: 混淆功能由 pg_stat_statements 使用。
  • 调整查询ID计算,将使用相同关系名称的查询分组: 即使不同模式中的表具有不同的列名,情况也是如此。
  • 添加列 pg_backend_memory_contexts.type 以报告内存上下文的类型.
  • 添加列 pg_backend_memory_contexts.path 以显示内存上下文父级.
  • 添加函数 pg_get_acl() 以检索数据库访问控制详情
  • 添加函数 has_largeobject_privilege() 以检查大对象权限
  • 允许 ALTER DEFAULT PRIVILEGES 定义大型对象的默认权限
  • 添加预定义角色 pg_signal_autovacuum_worker : 这允许向自动清理工作进程发送信号。
  • 增加对 OAuth 认证方法的支持: 这为 pg_hba.conf 添加了一种 oauth 认证方法、libpq OAuth 选项、用于加载令牌验证库的服务器变量oauth_validator_libraries,以及用于添加所需编译时库的配置标志 --with-libcurl`
  • 添加服务器变量 ssl_tls13_ciphers ,以允许指定多个用冒号分隔的 TLSv1.3 密码套件
  • 将服务器变量 ssl_groups 的默认值修改为包含椭圆曲线 X25519
  • 将服务器变量 ssl_ecdh_curve 重命名为 ssl_groups ,并允许指定多个用冒号分隔的 ECDH 曲线 先前的名称仍然有效。
  • 将取消请求密钥设置为256位: 这只有在服务器和客户端支持本版本中引入的3.2版有线协议时才有可能实现。
  • 添加服务器变量 autovacuum_worker_slots 以指定后台工作进程的最大数量: 设置此变量后,autovacuum_max_workers 可以在运行时调整到这个最大值,而无需重启服务器。
  • 允许指定触发自动清理的固定死元组数: 服务器变量为 autovacuum_vacuum_max_threshold 。触发仍使用百分比。
  • 将服务器变量 max_files_per_process 更改为仅限制后端打开的文件: 以前,由 postmaster 打开的文件也会被计入此限制。
  • 添加服务器变量 num_os_semaphores 以报告所需的信号量数量 这对操作系统配置很有用。
  • 添加服务器变量 extension_control_path 以指定扩展控制文件的位置.
  • 允许使用服务器变量 idle_replication_slot_timeout 自动使非活动的复制槽失效
  • 添加服务器变量 max_active_replication_origins 以控制最大活跃复制源 这之前由 max_replication_slots 控制,但此新设置在需要更少插槽的情况下允许更高的源计数。
  • 允许生成列的值进行逻辑复制: 如果发布指定了列列表,则所有指定的列(包括生成列和非生成列)都会被发布。如果没有指定列列表,则发布选项 publish_generated_columns 将控制是否发布生成列。以前,生成列不会被复制,订阅者必须在可能的情况下计算这些值;这对于不具备此功能的非PostgreSQL订阅者来说尤其有用。
  • 将默认的 CREATE SUBSCRIPTION 流选项从 off 更改为 parallel
  • 允许 ALTER SUBSCRIPTION 更改复制槽的两阶段提交行为
  • 应用逻辑复制更改时记录冲突: 此外,在 pg_stat_subscription_stats的新列中进行报告。
  • 允许生成列为虚拟列,并将其设为默认值 虚拟生成列在读取列时生成其值,而不是在写入时。写入行为仍然可以通过 STORED 选项指定。
  • DML 查询中为 RETURNING 添加 OLD/NEW 支持: 此前,RETURNING 仅返回 INSERTUPDATE 的新值,以及 DELETE 的旧值;MERGE 会返回所执行内部查询的相应值。这种新语法允许 INSERT/UPDATE/DELETE/MERGERETURNING 列表通过使用特殊别名 oldnew 来显式返回旧值和新值。这些别名可以重命名,以避免标识符冲突。
  • 允许像现有本地表一样创建外部表: 语法为 CREATE FOREIGN TABLE ... LIKE
  • 允许在 LIKE 中使用非确定性排序规则
  • 允许使用具有非确定性排序规则的文本位置搜索函数: 这些操作过去会产生错误。
  • 添加内置排序规则提供程序 PG_UNICODE_FAST : 此区域设置支持大小写映射,但按代码点顺序排序,而非自然语言顺序。
  • 允许 VACUUMANALYZE 在不处理子表的情况下处理分区表: 这可通过新的 ONLY 选项实现。这很有用,因为自动清理不会处理分区表,只会处理其子表。
  • 添加修改每关系和每列优化器统计信息的功能: 这些函数分别是pg_restore_relation_stats()pg_restore_attribute_stats()pg_clear_relation_stats()pg_clear_attribute_stats()
  • 添加服务器变量 file_copy_method 以控制文件复制方法: 这控制着 CREATE DATABASE ... STRATEGY=FILE_COPYALTER DATABASE ... SET TABLESPACE是使用文件复制还是克隆。
  • 允许指定不重叠的 PRIMARY KEYUNIQUE 约束: 这是通过在最后指定的列上添加 WITHOUT OVERLAPS 来指定的。
  • 允许将 CHECK 约束和外键约束指定为 NOT ENFORCED: 这还添加了列 pg_constraint.conenforced
  • 要求 主键/外键 关系使用确定性排序规则或相同的非确定性排序规则: 如果不满足这些要求,pg_dump 的恢复(pg_upgrade也会用到)将会失败;必须对架构进行更改,这些升级方法才能成功。
  • 将列的 NOT NULL 规范存储在 pg_constraint 中: 这允许为 NOT NULL 约束指定名称。这还为外部表添加了 NOT NULL 约束,并为本地表添加了 NOT NULL 继承控制。
  • 允许 ALTER TABLE 设置 NOT NULL 约束的 NOT VALID 属性
  • 允许修改 NOT NULL 约束的可继承性
  • 语法为 ALTER TABLE ... ALTER CONSTRAINT ... [NO] INHERIT
  • 允许分区表上存在 NOT VALID 外键约束
  • 仅允许在分区表上删除约束 ONLY: 这在之前被错误地禁止了。
  • 添加 REJECT_LIMIT 以控制 COPY FROM 可忽略的无效行数: 当 ON_ERROR = 'ignore' 时,此功能可用。
  • 允许 COPY TO 从已填充的物化视图复制行
  • 添加 COPYLOG_VERBOSITY 级别 silent 以抑制被忽略行的日志输出: 当 on_error = 'ignore' 时,这个新级别会抑制已丢弃输入行的输出。
  • 禁止在外部表上使用 COPY FREEZE : 此前,COPY可以正常工作,但 FREEZE 会被忽略,因此禁止此命令。
  • 自动在 EXPLAIN ANALYZE 中包含 BUFFERS 输出
  • EXPLAIN (WAL) 输出中添加完整的 WAL 缓冲区计数
  • EXPLAIN ANALYZE 中,报告每个索引扫描节点使用的索引查找次数
  • 修改 EXPLAIN 以输出小数行数
  • EXPLAIN 输出中的 Material、Window Aggregate 和公用表表达式节点添加内存和磁盘使用详情
  • EXPLAIN 输出中添加关于窗口函数参数的详细信息
  • Parallel Bitmap Heap Scan 工作进程缓存统计信息添加到 EXPLAIN ANALYZE
  • EXPLAIN ANALYZE 输出中指示禁用的节点
  • 改进 Unicode 全大小写映射和转换: 这增加了进行条件大小写和标题大小写映射的功能,以及将单个字符大小写映射为多个字符的功能。
  • 允许将 jsonb null 值转换为标量类型,作为 NULL: 以前这种转换会产生错误。
  • json{b}_strip_nulls 添加可选参数,以允许移除空数组元素
  • 添加函数 `array_sort(),用于对数组的第一维度进行排序
  • 添加函数 array_reverse() ,该函数用于反转数组的第一维度
  • 添加函数 reverse() 以反转 bytea 字节
  • 允许在整数类型和 bytea 之间进行转换: 整数值存储为bytea二进制补码值。
  • Unicode 数据更新至 Unicode 16.0.0
  • 为爱沙尼亚语添加全文搜索词干提取
  • 改进 XML 错误代码,使其更贴合 SQL 标准
  • 这些错误通过 SQLSTATE 报告。
  • 添加函数 casefold() 以支持更复杂的不区分大小写匹配: 这使得比较更加准确,也就是说,一个字符可以有多个大写或小写等效形式,或者大小写转换会改变字符的数量。
  • 允许在数组和复合类型上使用 MIN()/MAX() 聚合函数
  • EXTRACT() 添加一个 WEEK 选项
  • 改进负值情况下 EXTRACT(QUARTER ...) 的输出
  • to_number()添加罗马数字支持: 这可通过 RN 模式访问。
  • 添加 UUID 版本7生成函数 uuidv7(): 此 UUID 值具有时间可排序性。已添加函数别名 uuidv4() ,用于显式生成版本4的 UUID
  • 添加函数 crc32()crc32c() 以计算 CRC
  • 添加数学函数 gamma() 和l gamma()
  • 允许在 PL/pgSQL 中为命名游标参数使用 => 语法: 我们之前只接受:=
  • 允许 regexp_match[es]() / regexp_like() / regexp_replace() / regexp_count() / regexp_instr() / regexp_substr() / regexp_split_to_table() / regexp_split_to_array() 使用命名参数
  • 添加函数 PQfullProtocolVersion() 以报告完整的协议版本号(包括次要版本号)
  • 添加 libpq 连接参数和环境变量,以指定连接可接受的最低和最高协议版本
  • 向客户端报告 search_path 的更改
  • 为所有消息类型添加 PQtrace() 输出,包括认证
  • 添加libpq连接参数 sslkeylogfile ,该参数用于导出 SSL 密钥材料: 这对调试很有用。
  • 修改一些 libpq 函数签名以使用 int64_t: 这些之前使用的是 pg_int64 ,现在该类型已被弃用。
  • 允许 psql 解析、绑定和关闭命名的预处理语句: 这是通过新命令 \parse\bind_named\close_prepared 实现的。
  • 添加 psql 反斜杠命令以允许发布管道查询 新命令包括 \startpipeline\syncpipeline\sendpipeline\endpipeline\flushrequest\flush\getresults
  • 允许将管道状态添加到 psql 提示符中,并添加相关的状态变量 新的提示字符是 %P ,新的 psql 变量是 PIPELINE_SYNC_COUNTPIPELINE_COMMAND_COUNTPIPELINE_RESULT_COUNT
  • 允许将连接服务名称添加到 psql 提示符中,或通过 psql 变量访问该名称
  • 添加 psql 选项以在所有列表命令上使用扩展模式: 添加反斜杠后缀x即可启用此功能。
  • psql\conninfo 改为使用表格格式并包含更多信息
  • psql\df+\do+\dAo+\dC+ 输出中添加函数的防泄漏指示器
  • \dP+ 中添加分区关系的访问方法详情
  • default_version 添加到 psql\dx 扩展输出中
  • 添加 psql 变量 WATCH_INTERVAL 以设置默认的 \watch 等待时间
  • initdb 修改为默认启用校验: 新的 initdb 选项 --no-data-checksums 会禁用校验和。
  • 添加 initdb 选项 --no-sync-data-files 以避免同步堆/索引文件: initdb 选项 --no-sync 仍然可用,以避免同步任何文件。
  • 添加 vacuumdb 选项 --missing-stats-only 以仅计算缺失的优化器统计信息: 此选项只能由超级用户运行,且仅能与选项 --analyze-only--analyze-in-stages一 起使用。
  • 添加 pg_combinebackup 选项 -k/--link 以启用硬链接: 只有部分文件可以创建硬链接。如果备份将被独立使用,则不应使用此功能。
  • 允许 pg_verifybackup 验证 tar 格式的备份(Amul Sul)§
  • 如果 pg_rewind--source-server 指定了数据库名称,则在 --write-recovery-conf 的输出中使用该名称
  • 添加 pg_resetwal 选项 --char-signedness 以更改默认的 char 符号性
  • 添加 pg_dump 选项 --statistics
  • 添加 pg_dumppg_dumpall 选项 --sequence-data 以转储通常会被排除的序列数据
  • 添加 pg_dumppg_dumpallpg_restore的选项--statistics-only--no-statistics--no-data--no-schema`
  • 添加选项 --no-policies 以禁用 pg_dumppg_dumpallpg_restore 中的行级安全策略处理: 这对于迁移到具有不同策略的系统很有用。
  • 允许 pg_upgrade 保留优化器统计信息: 扩展统计信息不会被保留。此外,添加 pg_upgrade 选项 --no-statistics 以禁用统计信息保留。
  • 允许 pg_upgrade 并行处理数据库检查 (Nathan Bossart): 这由现有的 --jobs 选项控制。
  • 添加 pg_upgrade 选项 --swap,以交换目录而非复制、克隆或链接文件: 这种模式可能是最快的。
  • 添加 pg_upgrade 选项 --set-char-signedness 以设置新集群的默认 char 符号性: 这是为了处理 PostgreSQL 18 之前版本的集群默认 CPU 符号性与新集群不匹配的情况。
  • 添加 pg_createsubscriber 选项 --all 以创建所有数据库的逻辑副本
  • 添加 pg_createsubscriber 选项 --clean 以移除发布
  • 添加 pg_createsubscriber 选项 --enable-two-phase 以启用准备事务
  • 添加 pg_recvlogical 选项 --enable-failover 以指定故障转移槽: 同时添加选项 --enable-two-phase 作为 --two-phase 的同义词,并弃用后者。
  • 允许 pg_recvlogical --drop-slot 在没有 --dbname 的情况下运行
  • 将注入点的加载和运行分开: 现在可以通过 INJECTION_POINT_LOAD() 创建注入点,但不能运行它们,而此类注入点可以通过 INJECTION_POINT_CACHED() 运行。
  • 在注入点中支持运行时参数
  • 允许使用 IS_INJECTION_POINT_ATTACHED()嵌入注入点测试代码
  • 使用 SIMD(单指令多数据)提升处理长 JSON 字符串的性能
  • 使用 x86 AVX-512 指令加速 CRC32C 计算
  • 添加用于种群计数(整数位计数)的 ARM NeonSVE CPU 内联函数
  • 提高数值乘法和除法的速度
  • 添加配置选项 --with-libnuma 以启用 NUMA 感知: 函数 pg_numa_available() 用于报告 NUMA 感知情况,系统视图 pg_shmem_allocations_numapg_buffercache_numa 则用于报告 NUMA 节点间的共享内存分布情况。
  • TOAST 表添加到 pg_index 中,以支持超大表达式索引
  • 删除列 pg_attribute.attcacheoff
  • 添加列 pg_class.relallfrozen
  • amgettreeheightamconsistentequalityamconsistentordering 添加到索引访问方法API中
  • 添加 GiST 支持函数 stratnum()
  • pg_controldata 中记录 char 的默认 CPU 符号性
  • PL/Python 中添加对 Python"受限API"的支持: 这有助于防止因Python 3.x版本不匹配而导致的问题。
  • 将最低支持的 Python 版本更改为 3.6.8
  • 移除对 1.1.1 版本之前的 OpenSSL 的支持
  • 如果启用了 LLVM ,则需要14版或更高版本
  • 添加宏 PG_MODULE_MAGIC_EXT ,以允许扩展报告其名称和版本
  • 可通过新函数 pg_get_loaded_modules() 访问此信息。
  • 说明 SPI_connect() / SPI_connect_ext() 始终返回成功 (SPI_OK_CONNECT)
  • 错误总是通过 ereport() 报告。
  • 添加关于 APIABI 兼容性的文档部分
  • 移除 WindowsMeson 构建的实验性标识
  • 移除配置选项 --disable-spinlocks-disable-atomics
  • 现在需要 32 位原子操作。
  • 移除对 HPPA/PA-RISC 架构的支持
  • 添加扩展 pg_logicalinspect 以检查逻辑快照
  • 添加扩展 pg_overexplain ,该扩展为 EXPLAIN 输出添加调试详情
  • postgres_fdw_get_connections() 添加输出列
  • 新的输出列 used_in_xact 表示外部数据包装器是否正被当前事务使用,closed 表示其是否已关闭,user_name 表示用户名,remote_backend_pid 表示远程后端进程标识符。
  • 允许将客户端的 SCRAM 身份验证传递到 postgres_fdw 服务器
  • 这避免了在数据库中存储 postgres_fdw 认证信息,并通过 postgres_fdwuse_scram_passthrough 连接选项启用。libpq 使用新的连接参数 scram_client_key 和 - scram_server_key
  • 允许将客户端的 SCRAM 身份验证传递到 dblink 服务器
  • file_fdw 添加 on_errorlog_verbosity 选项: 这些选项控制 file_fdw 如何处理和报告无效的文件行。
  • 添加 reject_limit 以控制 file_fdw 可忽略的无效行数: 当 ON_ERROR = 'ignore' 时,此功能处于激活状态。
  • passwordcheck 添加可配置变量 min_password_length : 这控制着最小密码长度。
  • pgbench 在每个脚本报告中记录失败、重试或跳过的事务数量
  • 添加 isn 服务器变量 weak 以控制无效校验位的接受: 这之前仅由函数 isn_weak() 控制。
  • 允许对值进行排序以加快 btree_gist 索引的构建
  • 添加 amcheck 检查函数 gin_index_check() 以验证 GIN 索引
  • 添加函数 pg_buffercache_evict_relation()pg_buffercache_evict_all() 以逐出未固定的共享缓冲区: 现有的函数 pg_buffercache_evict() 现在会返回缓冲区刷新状态。
  • 允许扩展安装自定义的 EXPLAIN 选项
  • 允许扩展程序使用服务器的累积统计 API
  • 允许 pg_stat_statements 跟踪 CREATE TABLE ASDECLARE 查询: 它们现在也被分配了查询 ID
  • 允许在 pg_stat_statements 中对 SET 值进行参数化: 这减少了由带有不同常量的 SET 语句导致的冗余。
  • 添加 pg_stat_statements 列以报告并行活动: 新列是 parallel_workers_to_launchparallel_workers_launched
  • 添加 pg_stat_statements.wal_buffers_full 以报告已满的WAL缓冲区
  • 添加 pgcrypto 算法 sha256cryptsha512crypt
  • pgcrypto 加密和解密添加 CFB 模式
  • 添加函数 fips_mode() 以报告服务器的 FIPS 模式
  • 添加 pgcrypto 服务器变量 builtin_crypto_enabled ,以允许禁用内置的非 FIPS 模式加密功能: 这对于保证FIPS模式的行为很有用。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • PostgreSQL18-RC1发布,这些改进值得关注
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档