选择 打开 改范围 完整检索页
开发版本: 19
当前 PostgreSQL 版本不在支持生命周期内。
您可以参阅当前版本手册首页的对应页面,或其他在上面列出的活跃大版本。

E.1. 发布版本 19 #

发布日期:. 2026-??-??,截至 2026-07-18

E.1.1. 概览 #

PostgreSQL 19 包含许多新特性和增强,包括:

  • 支持 属性图查询SQL/PGQ)。

  • 新增 REPACK 命令, 用于回收磁盘空间并重新组织表内容,它结合了现有 VACUUM FULLCLUSTER 命令的功能。 其 CONCURRENTLY 选项允许在不阻塞对表的读写操作的情况下 执行 REPACK

  • 逻辑复制现在可以 复制序列值, 并且当 wal_level 设置为 replica 时, 可以在不重启服务器的情况下启用逻辑复制。

  • 自动清理现在可以使用 并行工作进程 清理表的索引,并通过一套 新的评分系统 优先处理最需要清理或分析的表。

  • 现在可以在数据库服务器运行期间 启用或禁用数据校验和

  • 新增 WAIT FOR 命令, 它会等待备库重放到指定位置,从而在备库查询中支持 读己之写模式。

  • 通过新的 FOR PORTION OF 子句支持时态更新和删除。

  • 新增 pg_plan_advice 扩展,用于稳定和控制查询规划器的决策;同时新增配套的 pg_stash_advice 扩展,用于按查询自动应用这些建议。

  • 改进了多个方面的性能,包括自动调整 I/O 工作进程数量、加快外键检查, 以及进一步优化规划和执行。

上述条目以及 PostgreSQL 19 的其他新特性,在下面各节中会作更详细的说明。

E.1.2. 迁移到版本 19 #

对于想从任何先前版本迁移数据的用户,需要使用 pg_dumpall 执行导出/恢复,或者使用 pg_upgrade ,或者使用逻辑复制。有关迁移到新主版本的一般信息,请参见 Section 18.6

19 版本包含若干可能影响与先前版本兼容性的更改。请注意以下不兼容项:

  • 新增服务器变量 password_expiration_warning_threshold,用于提示密码即将过期(Gilles Darold,Nathan Bossart) §

    默认警告期为七天。

  • 在成功完成 MD5 密码认证后发出警告(Nathan Bossart) §

    可以通过服务器变量 md5_password_warnings 禁用该警告。MD5 密码已在 PostgreSQL 18 中被标记为弃用。

  • 移除 RADIUS 支持(Thomas Munro) §

    PostgreSQL 只支持通过 UDPRADIUS,而这存在无法修复的安全问题。

  • 强制数据库服务器中的 standard_conforming_strings 始终为 on(Tom Lane) §

    使用 PostgreSQL 19 之前版本的 pg_dumppg_dumpall 创建、且使用了 standard_conforming_strings = off 的转储, 将无法正确载入 PostgreSQL 19 及更高版本的服务器。用户应使用这些应用程序的 PostgreSQL 19 或更高版本创建转储,或者使用 standard_conforming_strings = on

    为了兼容旧服务器,客户端应用程序仍然支持在 standard_conforming_strings = off 的服务器上执行操作。服务器变量 escape_string_warning 已被移除,因为已无必要。

  • 禁止数据库名、角色名和表空间名中出现回车和换行(Mahendra Singh Thalor) §

    这样做是为了避免安全问题。pg_upgrade 也会拒绝升级那些使用此类名称的数据库集簇。

  • inetcidr 数据类型的默认索引操作符类从 btree_gist 改为 GiST(Tom Lane) § §

    btree_gistinet/cidr 操作符类存在缺陷,因为它们可能排除本应返回的行。pg_upgrade 将拒绝升级包含 btree_gist inet/cidr 索引的集簇。

  • 停止重排由 CREATE SCHEMA 创建的非模式对象(Tom Lane,Jian He) § §

    重排的目的是避免依赖关系,但它并不完善。PostgreSQL 现在使用显式指定的对象顺序,外键除外,外键会最后创建。

  • 禁止在 COPY FROM ... WHERE 中使用系统列(Tom Lane) §

    这些列的值并未明确定义。

  • 将不返回任何行的 json_array() 调用改为返回空 JSON 数组(Richard Guo) §

    此前会返回 NULL

  • 让事务把其 READ ONLYDEFERRABLE 状态传递给 postgres_fdw 会话(Etsuro Fujita) §

    这意味着 READ ONLY 事务将不能再修改由 postgres_fdw 会话处理的行。

  • max_locks_per_transaction 的默认值从 64 改为 128(Heikki Linnakangas) §

    锁大小分配方式已经改变,因此要达到与先前版本相同的容量,实际上现在必须将设置值翻倍。

  • 默认禁用 JIT(Jelte Fennema-Nio) §

    之前 JIT 默认启用,并根据优化器代价决定是否激活。不幸的是,这种代价估算被认为并不可靠,因此需要大量运行大型分析查询的站点手工启用 JIT

  • sync_error_count 重命名为 sync_table_error_count,该列位于系统视图 pg_stat_subscription_stats 中(Vignesh C)§

    这是因为现在会单独跟踪序列错误。

  • 将等待事件类型 BUFFERPIN 重命名为 BUFFER(Andres Freund) §

  • 将索引访问方法处理器改为使用静态分配的 IndexAmRoutines 结构体,而不是动态分配的结构体(Matthias van de Meent) §

  • 移除优化器钩子 get_relation_info_hook,并新增位置更合适的钩子 build_simple_rel_hook(Robert Haas) §

  • 修改 psql\crosstabview 命令,使其遵循 \pset null 设置(Chao Li) §

  • 移除 MULE_INTERNAL 编码(Thomas Munro) §

    这种编码很复杂,而且很少使用。使用它的数据库将需要使用不同的编码进行导出和恢复。

E.1.3. 变更 #

下文将详细介绍 PostgreSQL 19 与上一个主版本之间的变更。

E.1.3.1. 服务器 #

E.1.3.1.1. 优化器 #
  • 在不存在 NULL 时,允许将 NOT IN 转换为更高效的 ANTI JOIN(Richard Guo)§

  • 允许更多 LEFT JOIN 转换为 ANTI JOIN(Tender Wang,Richard Guo)§

  • 允许在唯一内侧的 ANTI JOIN 中使用 Memoize(Richard Guo)§

  • 允许在连接之前先执行某些聚合处理(Richard Guo,Antonin Houska)§§§

    这可以减少需要处理的行数。

  • 改进哈希连接对带 NULL 连接键元组的处理(Tom Lane)§

  • 改进半连接规划(Richard Guo)§

  • 允许 Append 和 MergeAppend 考虑显式增量排序(Richard Guo)§

  • 在常量折叠期间将 IS [NOT] DISTINCT FROM NULL 转换为 IS [NOT] NULL(Richard Guo)§

    后一种形式更易优化。

  • 当输入被证明非空时,将 IS [NOT] DISTINCT FROM 简化为等值/不等值操作符(Richard Guo) §

  • 在优化器中更早地对 var IS [NOT] NULL 做常量折叠(Richard Guo)§

    这为后续优化创造了条件。

  • 简化 COALESCE()ROW(...) IS [NOT] NULL,以避免求值不必要的参数(Richard Guo)§§

  • 当输入被证明非空时,将 IS [NOT] TRUE/FALSE/UNKNOWN 简化为普通 boolean 表达式(Richard Guo)§

  • 加快大统计目标下的连接选择度计算(Ilia Evdokimov,David Geier)§

  • 为返回 boolean 值的函数启用正确的优化器统计信息(Tom Lane)§

  • 允许在虚拟生成列上使用扩展统计信息(Yugo Nagata)§

  • 允许 pg_restore_extended_stats() 恢复优化器扩展统计信息(Corey Huinker,Michael Paquier,Chao Li)§§§§

  • 新增函数 pg_clear_extended_stats() 用于删除扩展统计信息(Corey Huinker,Michael Paquier)§

  • 调整优化器,使其在部分路径决策时考虑启动代价(Robert Haas,Tomas Vondra)§

  • 允许 pg_aggregate.aggtransspace 为负值,以表示内存使用没有上限(Richard Guo)§

    该信息会被优化器用于规划内存使用。

E.1.3.1.2. 常规性能 #
E.1.3.1.3. 系统视图 #
E.1.3.1.4. 监控 #
  • 允许按进程类型指定 log_min_messages 日志级别(Euler Taveira)§

    新格式为 "type:level"。不带冒号的值控制所有进程类型,以保持向后兼容。

  • 新增服务器变量 log_autoanalyze_min_duration,用于记录 autovacuum 执行的耗时较长的 analyze 操作(Shinya Kato)§

    服务器变量 log_autovacuum_min_duration 现在只控制 autovacuum 执行的 vacuum 操作日志。

  • 默认启用服务器变量 log_lock_waits(Laurenz Albe)§

  • 新增服务器变量 debug_print_raw_parse,用于记录原始解析树(Chao Li)§

    当服务器以 debug 级别 3 及以上启动时,也会启用该输出。

  • 让来自远端服务器的消息以与本地服务器消息相同的格式出现在服务器日志中(Vignesh C)§

    这包括 replication、postgres_fdwdblink 服务器。

  • 新增 WAL 整页写入字节报告到 VACUUMANALYZE 日志(Shinya Kato)§

  • COPY FROM/TO 在 pipe/file/program 上新增 I/O 等待事件(Nikolay Samokhvalov)§

  • 新增 WAL 写入和刷盘 LSN 的等待事件(Xuneng Zhou)§

  • pg_get_sequence_data() 返回序列页 LSN(Vignesh C)§

  • 新增函数 pg_get_multixact_stats(),用于报告 multixact 活动(Naga Appani)§

  • 当 xid 和 multi-xids 的回卷距离小于 1 亿时发出警告(Nathan Bossart)§

    此前的警告阈值为 4000 万。警告会发送给客户端并写入服务器日志。

E.1.3.1.5. 服务器配置 #
E.1.3.1.6. 流复制与恢复 #
E.1.3.1.7. 逻辑复制 #

E.1.3.2. 查询命令 #

  • 新增 SQL Property Graph Queries(SQL/PGQ)支持(Peter Eisentraut,Ashutosh Bapat)§§§

    内部按视图方式处理,因此写作标准关系查询。

  • 新增 FOR PORTION OF 子句,供 UPDATEDELETE 使用(Paul A. Jungwirth)§§

    这允许对时间范围内的数据进行操作。

  • 允许 GROUP BY 处理引用非子查询列表达式的 target list 子查询(Tom Lane)§

    同时修复了 GROUPING() 处理 target list 子查询别名时的一个 bug。

  • 允许窗口函数使用 IGNORE NULLS/RESPECT NULLS 子句忽略 NULL(Oliver Ford,Tatsuo Ishii)§

    支持的窗口函数有 lead()lag()first_value()last_value()nth_value()

  • 新增 INSERT ... ON CONFLICT DO SELECT ... RETURNING 支持(Andreas Karlsson,Marko Tiikkaja,Viktor Holmberg)§

    这允许返回冲突行,并可选用 FOR UPDATE/SHARE 加锁。

E.1.3.3. 实用命令 #

  • 新增 REPACK 命令,用于替代 VACUUM FULLCLUSTER(Antonin Houska) §

    前两个命令执行类似的操作,但名称容易引起混淆,因此将它们统一为 REPACK。旧命令仍予保留,以保持兼容性。

  • 允许 REPACK 在不获取 ACCESS EXCLUSIVE 锁的情况下重建表(Antonin Houska,Mihail Nikalayeu,Álvaro Herrera)§§§

    通过 CONCURRENTLY 选项启用。还新增了服务器变量 max_repack_replication_slots

  • 允许使用 ALTER TABLE ... MERGE/SPLIT PARTITIONS 合并和拆分分区(Dmitry Koval,Alexander Korotkov,Tender Wang,Richard Guo,Dagfinn Ilmari Mannsåker,Fujii Masao,Jian He)§§

  • 允许 GRANT/REVOKE 指定执行权限调整的有效角色(Nathan Bossart,Tom Lane)§

    通过 GRANTED BY 子句控制。

  • 允许 CREATE SCHEMA 在新创建的模式中创建更多类型的对象(Kirill Reshke,Jian He,Tom Lane)§

  • 允许 CHECKPOINT 接受选项列表(Christoph Berg)§§§

    支持的选项为 MODEFLUSH_UNLOGGED

  • 新增 CONNECTION 子句到 CREATE FOREIGN DATA WRAPPER,用于指定将为订阅连接参数调用的函数(Jeff Davis,Noriyoshi Shinoda)§§

  • VACUUM (VERBOSE)autovacuum 日志中新增内存使用和并行度报告(Tatsuya Kawata,Daniil Davydov)§§

E.1.3.3.1. 约束 #
E.1.3.3.2. COPY #
  • 允许 COPY FROM 跳过多行表头(Shinya Kato,Fujii Masao)§

    此前只能跳过一行表头。

  • 允许 COPY FROM 把无效输入值设置为 NULL(Jian He,Kirill Reshke)§

    通过 COPY 选项 ON_ERROR SET_NULL 实现。

  • 允许 COPY TO 输出 JSON 格式(Joe Conway,Jian He,Andrew Dunstan) § §

    还可以把 JSON 输出生成为单个 JSON 数组,方法是使用 COPY 选项 FORCE_ARRAY

  • 允许 COPY TO 处理分区表(Jian He,Ajin Cherian)§§

    此前必须使用 COPY (SELECT ...) 才能输出分区表。这也改进了逻辑复制中的表同步。

E.1.3.3.3. EXPLAIN #

E.1.3.4. 数据类型 #

E.1.3.5. 函数 #

  • 新增 datetimestamptimestamptz 版本的 random(min, max)(Damien Clochard,Dean Rasheed)§§

  • 允许 encode()decode() 处理 base64urlbase32hex 格式的数据(Andrey Borodin,Aleksander Alekseev,Florents Tselai)§§§

    这种格式保留顺序,不像 base32

  • 新增用于返回范围减法结果范围集的函数(Paul A. Jungwirth)§

    函数为 range_minus_multi()multirange_minus_multi()。这对表示带间隙的范围减法结果很有用。

  • 新增函数 error_on_null(),用于返回提供的参数,或在 NULL 输入时报告错误(Joel Jacobson)§

  • 允许 IS JSON 在定义于受支持基础类型之上的域上工作(Jian He)§

    受支持的基础类型为 TEXTJSONJSONBBYTEA

  • 新增波兰语和世界语的全文词干分析器(Tom Lane)§

    荷兰语词干分析器也已更新。旧版荷兰语词干分析器可通过 dutch_porter 使用。

  • 新增函数 pg_get_role_ddl(),用于输出角色创建命令(Mario Gonzalez,Bryan Green,Andrew Dunstan,Euler Taveira)§

  • 新增函数 pg_get_tablespace_ddl(),用于输出表空间创建命令(Nishant Sharma,Manni Wood,Andrew Dunstan,Euler Taveira)§

  • 新增函数 pg_get_database_ddl(),用于输出数据库创建命令(Akshay Joshi,Andrew Dunstan,Euler Taveira)§

  • 允许使用 PL/Python 编写事件触发器(Euler Taveira,Dimitri Fontaine)§

E.1.3.6. Libpq #

  • 允许 libpq 连接通过 "servicefile" 指定 service file(Torsten Förtsch,Ryo Kanbayashi)§

  • 新增用于兼容性测试的特殊 libpq 协议参数(Jelte Fennema-Nio,Jacob Champion) §

    这也称为 protocol grease,曾在 19 beta 期间启用。从 PostgreSQL 19 正式版开始将不再发送这些参数,但相关参数保留项仍会保留,以备将来使用。

  • 新增 libpq 连接参数 oauth_ca_file,用于在与 OAuth 提供者通信时指定其他证书颁发机构(Jonathan Gonzalez V.,Jacob Champion)§

    也可以通过环境变量 PGOAUTHCAFILE 设置。默认使用 curl 内置证书。

  • 允许 libpq 环境变量 PGOAUTHDEBUG 指定具体调试选项(Zsolt Parragi,Jacob Champion)§

    UNSAFE 选项仍会生成全部调试输出。

  • 改进自定义 OAuth 客户端流程(Jacob Champion) § §

    此前,自定义流程失败时 libpq 只报告一条通用错误消息,并且每个流程实现都必须独立计算 issuer 标识符。新增 authdata 钩子类型 PQAUTHDATA_OAUTH_BEARER_TOKEN_V2,它会预先计算 issuer ID,并允许钩子提供错误细节。

  • 新增 libpq 函数 PQgetThreadLock(),用于获取当前锁回调(Jacob Champion)§

E.1.3.7. psql #

  • 允许 psql 通过 %S 在提示符中显示 search_path(Florents Tselai)§

    这在 psql 连接到 PostgreSQL 18 或更高版本时有效。

  • 允许 psql 通过 %i 在提示符中显示热备状态(Jim Jones)§

  • 修改 psql 反斜杠命令,以显示发布、订阅和扩展统计信息的注释(Fujii Masao,Jim Jones)§

    受影响的命令为 \dRp+\dRs+\dX+

  • 允许在 psql 中控制 boolean 值的显示方式(David G. Johnston)§

    \pset 变量为 display_truedisplay_false

  • 新增 psql 变量 SERVICEFILE,用于引用 service file 位置(Ryo Kanbayashi)§

  • 允许 psql 更准确地判断是否需要 pager(Erik Wienhold)§

  • 新增或改进 psql tab completion(Yamaguchi Atsuo,Yugo Nagata,Haruna Miwa,Xuneng Zhou,Dagfinn Ilmari Mannsåker,Fujii Masao,Álvaro Herrera,Jian He,Tatsuya Kawata,Ian Lawrence Barwick,Vasuki M)§§§§§§§§§§§§§§

E.1.3.8. 服务器应用程序 #

  • 允许 pg_dump 包含可恢复的扩展统计信息(Corey Huinker)§

  • 修改 vacuumdb--analyze-only--analyze-in-stages 选项,使其在未指定目标时也分析分区表(Laurenz Albe,Mircea Cadariu,Chao Li) § §

    此前它会跳过分区表。现在其行为与 ANALYZE 一致。

  • 允许 vacuumdb 使用 --dry-run 选项报告将要执行的命令而不实际运行(Corey Huinker)§

  • 允许 pg_verifybackup 读取 WAL 文件,这些文件存储在 tar 归档中(Amul Sul)§

    新增 --wal-path 选项,作为现有且已弃用的 --wal-directory 选项的别名。

  • 允许 pg_waldump 读取 WAL 文件,这些文件存储在 tar 归档中(Amul Sul)§

  • 改进 pg_upgrade 复制大对象元数据的性能(Nathan Bossart) § § § §

    根据旧集簇的 PostgreSQL 版本采用不同的方法。

  • 允许 pg_upgrade 处理存放在 PGDATA 目录中的非默认表空间(Nathan Bossart)§

    此前这类表空间会报错。

  • 新增 pgbench 选项 --continue-on-error,以在 SQL 错误后继续执行(Rintaro Ikeda,Yugo Nagata,Fujii Masao)§

  • 改进 pg_test_timing 的可用性(Hannu Krosing,Tom Lane)§§

    现在报告纳秒而不是微秒;除直方图输出外,还会输出第二张精确计时表,并可通过 --cutoff 指定可选截断。

E.1.3.8.1. pg_createsubscriber #
  • 允许 pg_createsubscriber 忽略已存在的指定发布(Shubham Khanna)§

    此前这会报错。

  • 更改 pg_createsubscriber 存储恢复参数的方式(Alyona Vinter)§

    变更会存放在可选包含的 pg_createsubscriber.conf 中,而不是直接写入 postgresql.auto.conf

  • 新增 pg_createsubscriber 选项 -l/--logdir,用于把输出重定向到文件(Gyan Sreejith,Hayato Kuroda)§

E.1.3.9. 源代码 #

  • 恢复对 AIX 的支持(Aditya Kamath,Srirama Kucherlapati,Peter Eisentraut)§§

    这使用 gcc,并且只支持 64 位构建。

  • Solaris 改为使用未命名 POSIX semaphore(Tom Lane)§

    此前使用的是 System V semaphore。

  • 要求 Visual Studio 2019 或更高版本(Peter Eisentraut)§

  • 允许 MSVCPL/Python 使用 Python Limited API 进行构建(Bryan Green)§

  • 允许使用 MSVC 在 AArch64 上构建(Niyas Sait,Greg Burd,Dave Cramer)§

  • 允许在 Windows 上使用 DbgHelp 获取执行栈回溯(Bryan Green)§

  • 将支持的 C 语言版本改为 C11(Peter Eisentraut)§§

    此前使用 C99。

  • 在可用时使用标准 C23 和 C++ 属性(Peter Eisentraut)§

  • 使用 AVX2 CPU 指令计算页面校验和(Matthew Sterrett,Andrew Kim)§

  • 使用 ARM Crypto Extension 计算 CRC32C(John Naylor)§

  • 修改 hex_encode()hex_decode(),使其使用 SIMD CPU 指令(Nathan Bossart,Chiranmoy Bhattacharya)§

  • 要求 Meson 版本 0.57.2 或更高(Peter Eisentraut)§

  • 新增 Meson 选项,用于同时构建 shared 和 static library,或仅构建 shared(Peter Eisentraut)§

  • 更新 Unicode 数据到 17.0.0 版(Peter Eisentraut)§

  • 新增钩子 planner_setup_hookplanner_shutdown_hookjoinrel_setup_hookjoin_path_setup_hook(Robert Haas) § §

  • 允许扩展将返回集合函数替换为 FROM 子句中的 SQL 查询(Paul A. Jungwirth)§

  • multixid 成员改为 64 位(Maxim Orlov)§

  • 将函数原型中的 bit* typedef 改为 uint*(Nathan Bossart)§

  • 允许逻辑解码插件指定其是否不访问共享目录(Antonin Houska)§

  • 允许 OAuth 验证器提供失败细节(Jacob Champion)§

    通过设置 ValidatorModuleResult 结构体成员 error_detail 实现。

  • 新增简化且改进的共享内存注册函数 ShmemRequestStruct()(Heikki Linnakangas,Ashutosh Bapat)§

    ShmemInitStruct()ShmemInitHash() 仍保留以兼容旧代码。

  • 新增服务器变量 debug_exec_backend,用于报告参数如何传递给新后端(Daniel Gustafsson)§

  • 新增关于 temporal tables 的文档章节(Paul A. Jungwirth)§

  • 记录控制回归测试的环境变量(Michael Paquier)§

  • 更新文档中的systemd 示例,加入 restart 设置(Andrew Jackson)§

E.1.3.10. 附加模块 #

  • 新增 pg_plan_advice 模块,用于稳定和控制规划器决策(Robert Haas)§§

  • 新增扩展 pg_stash_advice,用于按 query-id 指定建议(Robert Haas,Lukas Fittl)§§

  • FETCH 查询的大小作为常量显示在 pg_stat_statements 中(Sami Imseih)§

    不同大小的 FETCH 现在会在 pg_stat_statements 输出中归并到一起。

  • 新增通用计划和自定义计划计数到 pg_stat_statements(Sami Imseih)§

  • 重构 pg_buffercache 的共享内存映射报告(Bertrand Drouvot)§

    新增函数 pg_buffercache_os_pages() 和系统视图 pg_buffercache_os_pages,用于报告共享内存映射;函数还可选包含 NUMA 细节。为向后兼容,pg_buffercache_numa_pages() 仍然保留。

  • pg_buffercache 新增将 buffer 标记为 dirty 的函数(Nazir Bilal Yavuz)§

    这些函数为 pg_buffercache_mark_dirty()pg_buffercache_mark_dirty_relation()pg_buffercache_mark_dirty_all()

  • 允许在预备语句中向 postgres_fdw 外部服务器下推数组比较(Alexander Pyhalov)§

  • 允许从外部数据包装器服务器获取统计信息(Corey Huinker,Etsuro Fujita)§

    postgres_fdw 通过 restore_stats 选项启用此功能。默认情况下,ANALYZE 会从远端服务器取回行并在本地生成统计信息。

  • 允许 file_fdw 读取使用多行 HEADER 的文件或程序输出(Shinya Kato)§

  • 新增服务器变量 auto_explain.log_io,为 auto_explain 添加 IO 报告(Tomas Vondra)§

  • 允许 auto_explain 添加扩展特定的 EXPLAIN 选项,并通过服务器变量 auto_explain.log_extension_options 控制(Robert Haas)§

  • 修改 btree_gin,使其支持 btree 所支持的所有跨类型比较(Tom Lane) § §

  • 通过流式读取改进 bloom 索引性能(Xuneng Zhou)§§

  • 使用流式读取改进 pgstattuple 的性能(Xuneng Zhou) § §

  • 允许 fuzzystrmatchdmetaphone() 使用 ASCII 以外的单字节编码(Peter Eisentraut)§

  • 修改 oid2name --extended 以报告关系文件路径(David Bidoc)§

E.1.4. 致谢 #

以下人员(按字母顺序)以补丁作者、提交者、审阅者、测试者或问题报告者的身份为本次发布做出了贡献。

稍后补充