发布日期:. 2023-09-14
PostgreSQL 16 包含许多新特性和增强,包括:
允许并行化 FULL 和内部右 OUTER 哈希连接
允许从备库进行逻辑复制
允许逻辑复制订阅者并行应用大事务
允许使用新的 pg_stat_io 视图监控 I/O 统计
增加 SQL/JSON 构造函数和身份函数
改进 vacuum 冻结的性能
增加对 pg_hba.conf 中用户名和数据库名以及 pg_ident.conf 中用户名的正则表达式匹配支持
以上项目和 PostgreSQL 16 的其他新特性将在下面的章节中更详细地解释。
希望从任何以前的版本迁移数据的用户需要使用 pg_dumpall 进行导出/恢复,或者使用 pg_upgrade 或逻辑复制。有关迁移到新主版本的一般信息,请参见 Section 18.6。
版本 16 包含一些可能影响与以前版本兼容性的变更。请注意以下不兼容性:
更改 PL/pgSQL 绑定游标变量的赋值规则(Tom Lane) §
之前,此类变量的字符串值在游标赋值期间被设置为与变量名匹配;现在它将在 OPEN 期间赋值,且不会与变量名匹配。要恢复之前的行为,请在 OPEN 之前将所需的门户名称赋给游标变量。
禁止主键使用 NULLS NOT DISTINCT 索引(Daniel Gustafsson) §
更改 REINDEX DATABASE 和 reindexdb 不再处理系统目录上的索引(Simon Riggs) § §
仍可通过 REINDEX SYSTEM 和 reindexdb --system 处理此类索引。
收紧对继承表和分区表的 GENERATED 表达式限制(Amit Langote,Tom Lane) §
父/分区表和子/分区表的列必须全部具有相同的生成状态,但现在实际的生成表达式可以不同。
移除 pg_walinspect 的函数 pg_get_wal_records_info_till_end_of_wal() 和 pg_get_wal_stats_till_end_of_wal()(Bharath Rupireddy) §
将服务器变量 force_parallel_mode 重命名为 debug_parallel_query(David Rowley) § §
移除服务器变量 vacuum_defer_cleanup_age(Andres Freund) §
自从引入 hot_standby_feedback 和复制槽后,它就已不再需要。
移除服务器变量 promote_trigger_file(Simon Riggs) §
这用于将备库提升为主库,但现在使用 pg_ctl promote 或 pg_promote() 更容易实现。
移除只读服务器变量 lc_collate 和 lc_ctype(Peter Eisentraut) §
排序规则和区域设置可以在数据库之间不同,因此将它们作为只读服务器变量并无意义。
角色的继承属性现在决定在 GRANT 时添加的成员角色的默认继承状态(Robert Haas) §
角色的默认继承行为现在可以通过新的 GRANT ... WITH INHERIT 子句覆盖。 这使得某些角色可继承而其他角色不可继承,因为成员角色的继承状态是在 GRANT 时确定的。 此前,成员角色的继承状态仅由角色自身的继承属性控制, 而角色继承属性的变更会影响其所有既有和未来的成员角色。
限制 CREATEROLE 的权限及其修改其他角色的能力(Robert Haas) § §
之前,具有 CREATEROLE 权限的角色可以更改任何非超级用户角色的许多方面。此类更改(包括添加成员)现在要求请求更改的角色具有 ADMIN OPTION 权限。例如,它们现在只有在也具有这些权限时才能更改 CREATEDB、REPLICATION 和 BYPASSRLS 属性。
移除 postmaster 二进制文件的符号链接(Peter Eisentraut) §
以下是 PostgreSQL 16 与上一主版本之间变更的详细说明。
在非冻结操作期间,在适当时执行页面冻结(Peter Geoghegan) § § §
这使得整表冻结清理的必要性降低。
当 RANGE 模式处于活动状态但不必要时,允许窗口函数在内部使用更快的 ROWS 模式(David Rowley) §
允许优化单调递增的窗口函数 ntile()、cume_dist() 和 percent_rank()(David Rowley) §
允许聚合函数 string_agg() 和 array_agg() 被并行化(David Rowley) §
通过缓存 RANGE 和 LIST 分区查找来改进性能(Amit Langote,Hou Zhijie,David Rowley) §
允许控制 vacuum 和 analyze 使用的共享缓冲区(Melanie Plageman) § § §
VACUUM/ANALYZE 选项为 BUFFER_USAGE_LIMIT,vacuumdb 选项为 --buffer-usage-limit。默认值由服务器变量 vacuum_buffer_usage_limit 设置,它也控制自动清理。
在 Windows 上支持 wal_sync_method=fdatasync(Thomas Munro) §
当只更新了 BRIN 索引列时,允许 HOT 更新(Matthias van de Meent,Josef Simanek,Tomas Vondra) §
允许 xid/subxid 搜索和 ASCII 字符串检测使用向量运算(Nathan Bossart,John Naylor) § § § §
ASCII 检测对于 COPY FROM 特别有用。向量运算也用于一些 C 数组搜索。
减少内存分配的开销(Andres Freund,David Rowley) §
记录表上最后一次顺序扫描和索引扫描的统计信息(Dave Page) §
此信息显示在 pg_stat_*_tables 和 pg_stat_*_indexes 中。
记录已更新行移动到新页面的统计信息(Corey Huinker) §
pg_stat_*_tables 列为 n_tup_newpage_upd。
向 pg_locks 系统视图添加推测锁信息(Masahiko Sawada,Noriyoshi Shinoda) §
事务 id 显示在 transactionid 列中,推测插入令牌显示在 objid 列中。
向 pg_prepared_statements 视图添加预备语句结果类型的显示(Dagfinn Ilmari Mannsåker) § §
在订阅创建时创建订阅统计条目,使 stats_reset 准确(Andres Freund) §
之前条目仅在首次报告统计信息时创建。
修正 pg_stat_database 中显示的临时关系写入的 I/O 统计(Melanie Plageman) §
增加函数 pg_stat_get_backend_subxact() 以报告会话的子事务缓存(Dilip Kumar) §
使 pg_stat_get_backend_idset()、pg_stat_get_backend_activity() 和相关函数使用不变的后端 id(Nathan Bossart) §
之前索引值在会话生命周期内可能会更改。
以特殊的后端类型报告独立后端(Melanie Plageman) §
创建新的等待事件 DSMAllocate 以指示等待动态共享内存分配(Thomas Munro) §
之前此类等待被报告为 DSMFillZeroWrite,该名称也被 mmap() 分配使用。
将数据库名称添加到逻辑 WAL 发送器的进程标题中(Tatsuhiro Nakamori) §
物理 WAL 发送器不显示数据库名称。
向 log_checkpoints 消息添加检查点和 REDO LSN 信息(Bharath Rupireddy,Kyotaro Horiguchi) §
在客户端证书失败时提供额外详细信息(Jacob Champion) §
增加具有创建订阅权限的预定义角色 pg_create_subscription(Robert Haas) §
这通过选项 password_required=false 实现。
简化 LOCK TABLE 的权限(Jeff Davis) §
之前用户执行各种锁级别的 LOCK TABLE 的能力被限制为他们有权在表上执行的命令所需的锁级别。例如,具有 UPDATE 权限的用户可以执行除 ACCESS SHARE 之外的所有锁级别,即使它是较低的锁级别。现在,如果用户已有更高锁级别的权限,则可以发出较低的锁级别。
允许使用 ADMIN OPTION 执行 ALTER GROUP group_name ADD USER user_name(Robert Haas) §
之前需要 CREATEROLE 权限。
允许 GRANT 使用 WITH ADMIN TRUE/FALSE 语法(Robert Haas) §
之前只支持 WITH ADMIN OPTION 语法。
允许创建其他角色的角色自动继承新角色的权限或 SET ROLE 到新角色的能力(Robert Haas,Shi Yu) § §
这由服务器变量 createrole_self_grant 控制。
防止用户更改非继承角色的默认权限(Robert Haas) §
现在这仅对继承的角色允许。
在授予角色成员资格时,要求被授权人角色具有适当的权限(Robert Haas) §
即使非引导超级用户授予角色成员资格时也有此要求。
允许非超级用户使用非当前用户的被授权人授予权限(Robert Haas) §
当前用户仍然必须具有指定被授权人所给予的足够权限。
增加 GRANT 以控制使用 SET ROLE 的权限(Robert Haas) §
这由新的 GRANT ... SET 选项控制。
为已授予权限的角色添加依赖跟踪(Robert Haas) §
例如,如果存在使用该选项的权限,移除 ADMIN OPTION 将会失败;必须使用 CASCADE 来撤销依赖的权限。
为 GRANT 记录添加授予者的依赖跟踪(Robert Haas) §
这保证 pg_auth_members.grantor 值始终有效。
之前,新的成员资格授予会移除之前匹配的成员资格授予,即使授予的其他方面不匹配。
防止移除引导用户的超级用户权限(Robert Haas) §
恢复此类用户可能导致错误。
允许 makeaclitem() 接受多个权限名称(Robins Tharakan) §
之前只接受单个权限名称,如 SELECT。
增加对 Kerberos 凭证委托的支持(Stephen Frost) § § § §
这通过服务器变量 gss_accept_delegation 和 libpq 连接参数 gssdelegation 启用。
允许通过服务器变量 scram_iterations 设置 SCRAM 迭代次数(Daniel Gustafsson) §
收紧对哪些服务器变量可以重置的限制(Masahiko Sawada) §
之前,虽然某些变量(如 transaction_isolation)不受 RESET ALL 影响,但它们可以在不适当的情况下被单独重置。
将各种 postgresql.conf 项目移入新类别(Shinya Kato) §
这也影响 pg_settings 视图中显示的类别。
防止配置文件递归超过 10 层(Julien Rouhaud) §
允许自动清理更频繁地遵守延迟设置的更改(Melanie Plageman) § §
不再仅在每个关系开始时遵守更改,而是在每个块开始时遵守更改。
移除归档文件必须持久重命名的限制(Nathan Bossart) § §
archive_command 命令现在更可能在崩溃后使用已归档的文件被调用。
防止同时设置 archive_library 和 archive_command(Nathan Bossart) §
之前 archive_library 会覆盖 archive_command。
允许 postmaster 使用中止信号终止子进程(Tom Lane) §
这允许收集卡住的子进程的核心转储。这由 send_abort_for_crash 和 send_abort_for_kill 控制。postmaster 的 -T 开关现在与设置 send_abort_for_crash 相同。
移除无功能的 postmaster -n 选项(Tom Lane) §
允许服务器为具有 pg_use_reserved_connections 成员资格的角色预留后端槽位(Nathan Bossart) §
预留槽位的数量由服务器变量 reserved_connections 设置。
允许大页在较新版本的 Windows 10 上工作(Thomas Munro) §
这添加了在较新版本的 Windows 10 上启用大页所需的特殊处理。
增加供开发者使用的 debug_io_direct 设置(Thomas Munro,Andres Freund,Bharath Rupireddy) § §
虽然主要面向开发者,wal_sync_method=open_sync/open_datasync 已被修改为在 wal_level=minimal 时不使用直接 I/O;现在通过 debug_io_direct=wal 启用。
增加函数 pg_split_walfile_name() 以报告 WAL 文件名的段和时间线值(Bharath Rupireddy) § §
增加在 pg_hba.conf 中对数据库和角色条目进行正则表达式匹配的支持(Bertrand Drouvot) §
正则表达式模式以斜杠为前缀。以斜杠开头的数据库和角色名称如果在 pg_hba.conf 中引用,需要用双引号括起来。
改进 pg_ident.conf 的用户列处理以匹配 pg_hba.conf(Jelte Fennema) §
具体来说,增加对 all、使用 + 的角色成员资格以及使用前导斜杠的正则表达式的支持。与这些模式匹配的任何用户名必须用双引号括起来。
允许在 pg_hba.conf 和 pg_ident.conf 中包含文件(Julien Rouhaud) §
这由 include、include_if_exists 和 include_dir 控制。系统视图 pg_hba_file_rules 和 pg_ident_file_mappings 现在显示文件名。
允许 pg_hba.conf 令牌具有无限长度(Tom Lane) §
向系统视图 pg_hba_file_rules 添加规则和映射编号(Julien Rouhaud) §
使用 ICU 时从区域设置确定默认编码(Jeff Davis) §
之前默认始终为 UTF-8。
使 CREATE DATABASE 和 CREATE COLLATION 的 LOCALE 选项以及 initdb 和 createdb 的 --locale 选项控制非 libc 排序规则提供程序(Jeff Davis)
之前它们仅控制 libc 提供程序。
增加预定义排序规则 unicode 和 ucs_basic(Peter Eisentraut) §
这仅在启用 ICU 支持时有效。
允许创建自定义 ICU 排序规则(Peter Eisentraut) §
这通过 CREATE COLLATION 的新 RULES 子句以及 CREATE DATABASE、createdb 和 initdb 的新选项来实现。
允许 Windows 自动导入系统区域设置(Juan José Santamaría Flecha) §
之前在 Windows 上只能导入 ICU 区域设置。
允许在备库上进行逻辑解码(Bertrand Drouvot,Andres Freund,Amit Khandekar) § § §
创建逻辑槽需要快照 WAL 记录,但这类记录无法在备库上生成。为避免延迟,新函数 pg_log_standby_snapshot() 可生成此类记录。
允许逻辑复制初始表同步以二进制格式复制行(Melih Mutlu) §
这仅对标记为二进制的订阅可用。
允许并行应用逻辑复制(Hou Zhijie,Wang Wei,Amit Kapila) § § §
CREATE SUBSCRIPTION 的 STREAMING 选项现在支持 parallel,以便使用并行工作进程应用大事务。并行工作进程的数量由新的服务器变量 max_parallel_apply_workers_per_subscription 控制。还新增了等待事件 LogicalParallelApplyMain、LogicalParallelApplyStateChange 和 LogicalApplySendData。系统视图 pg_stat_subscription 也新增了列 leader_pid 以跟踪并行活动。
改进没有主键时逻辑复制应用的性能(Onder Kalaci,Amit Kapila) §
具体来说,REPLICA IDENTITY FULL 现在可以使用 B-树索引而非顺序扫描表来查找匹配项。
允许逻辑复制订阅者仅处理没有来源的变更(Vignesh C,Amit Kapila) § §
这可用于避免复制循环。这由新的 CREATE SUBSCRIPTION ... ORIGIN 选项控制。
以表所有者身份执行逻辑复制 SELECT 和 DML 操作(Robert Haas) § §
这提高了安全性,现在要求订阅所有者是超级用户或对复制集中所有拥有表的角色具有 SET ROLE 权限。以订阅所有者身份执行所有操作的先前行为可以通过订阅 run_as_owner 选项启用。
使 wal_retrieve_retry_interval 按订阅操作(Nathan Bossart) §
之前重试时间是全局应用的。这还添加了等待事件 >LogicalRepLauncherDSA 和 LogicalRepLauncherHash。
允许 COPY 以批量方式向外部表添加行(Andrey Lepikhov,Etsuro Fujita) §
这由 postgres_fdw 选项 batch_size 控制。
允许 CREATE TABLE 指定 STORAGE 类型(Teodor Sigaev,Aleksander Alekseev) § §
之前只有 ALTER TABLE 可以控制这一点。
允许 VACUUM 和 vacuumdb 仅处理 TOAST 表(Nathan Bossart) §
这通过让 VACUUM 关闭 PROCESS_MAIN 或让 vacuumdb 使用 --no-process-main 选项来实现。
增加 VACUUM 选项以跳过或更新所有冻结统计(Tom Lane,Nathan Bossart) §
选项为 SKIP_DATABASE_STATS 和 ONLY_DATABASE_STATS。
更改 REINDEX DATABASE 和 REINDEX SYSTEM 不再要求参数(Simon Riggs) § §
之前必须指定数据库名称。
允许 CREATE STATISTICS 在未指定名称时自动生成统计名称(Simon Riggs) §
允许非十进制整数字面量(Peter Eisentraut) §
例如,0x42F、0o273 和 0b100101。
允许 NUMERIC 处理任意大小的十六进制、八进制和二进制整数(Dean Rasheed) §
之前这些非十进制基数仅支持未加引号的八字节整数。
允许在整数和数字常量中使用下划线(Peter Eisentraut,Dean Rasheed) §
这可以提高长数字串的可读性。
接受日期时间输入中 +infinity 的拼写(Vik Fearing) §
防止在日期时间字符串中同时指定 epoch 和 infinity 与其他字段(Joseph Koshakow) §
移除对 Y 形式日期输入的未文档化支持(Joseph Koshakow) §yearMmonthDday
增加函数 pg_input_is_valid() 和 pg_input_error_info() 以检查类型转换错误(Tom Lane) § §
增加 SQL/JSON 构造函数(Nikita Glukhov,Teodor Sigaev,Oleg Bartunov,Alexander Korotkov,Amit Langote) §
新函数 JSON_ARRAY()、JSON_ARRAYAGG()、JSON_OBJECT() 和 JSON_OBJECTAGG() 是 SQL 标准的一部分。
增加 SQL/JSON 对象检查(Nikita Glukhov,Teodor Sigaev,Oleg Bartunov,Alexander Korotkov,Amit Langote,Andrew Dunstan) §
IS JSON 检查包括对值、数组、对象、标量和唯一键的检查。
允许 JSON 字符串解析使用向量运算(John Naylor) §
改进全文高亮函数 ts_headline() 对 OR 和 NOT 表达式的处理(Tom Lane) §
增加在指定时区中添加、减去和生成 timestamptz 值的函数(Przemyslaw Sztoch,Gurjeet Singh) §
函数为 date_add()、date_subtract() 和 generate_series()。
将 date_trunc(unit, timestamptz, time_zone) 更改为不可变函数(Przemyslaw Sztoch) §
这允许使用此函数创建表达式索引。
增加服务器变量 SYSTEM_USER(Bertrand Drouvot) §
这报告认证方法及其认证的用户。
增加函数 array_sample() 和 array_shuffle()(Martin Kalcher) §
增加聚合函数 ANY_VALUE(),返回集合中的任意值(Vik Fearing) §
增加函数 random_normal() 以提供正态分布的随机数(Paul Ramsey) §
增加 XMLSERIALIZE() 选项 INDENT 以美化输出(Jim Jones) §
更改 pg_collation_actual_version() 以为默认排序规则返回合理的值(Jeff Davis) §
之前它返回 NULL。
允许 pg_read_file() 和 pg_read_binary_file() 忽略缺失的文件(Kyotaro Horiguchi) §
向 pg_size_bytes() 添加字节规格(B)(Peter Eisentraut) §
增加在 PL/pgSQL 中获取当前函数 OID 的能力(Pavel Stehule) §
增加 libpq 连接选项 require_auth 以指定可接受的认证方法列表(Jacob Champion) §
这也可用于禁止某些认证方法。
允许多个 libpq 指定的主机被随机选择(Jelte Fennema) § §
这通过 load_balance_hosts=random 启用,可用于负载均衡。
增加 libpq 选项 sslcertmode 以控制客户端证书的传输(Jacob Champion) §
选项值为 disable、allow 和 require。
允许 libpq 使用系统证书池进行证书验证(Jacob Champion,Thomas Habets) §
这通过 sslrootcert=system 启用,同时也会启用 sslmode=verify-full。
允许 psql 控制扩展格式中标题行的最大宽度(Platon Pronko) §
这由 xheader_width 控制。
增加 psql 命令 \drg 以显示角色成员资格详情(Pavel Luzanov) § §
Member of 输出列已从 \du 和 \dg 中移除,因为此新命令以更详细的方式显示此信息。
阻止 \df+ 显示函数源代码(Isaac Morland) §
函数体更容易通过 \sf 查看。
允许 psql 使用扩展查询协议提交查询(Peter Eisentraut) §
向此类查询传递参数通过新的 psql \bind 命令完成。
允许 psql \watch 限制执行次数(Andrey Borodin) §
\watch 选项现在可以在指定时使用命名方式。
允许 psql 脚本获取 shell 命令和查询的退出状态(Corey Huinker,Tom Lane) § §
新的 psql 控制变量为 SHELL_ERROR 和 SHELL_EXIT_CODE。
各种 psql tab 补全改进(Vignesh C,Aleksander Alekseev,Dagfinn Ilmari Mannsåker,Shi Yu,Michael Paquier,Ken Kato,Peter Smith) § § § § § § § § § § § §
增加 pg_dump 对导出子表和分区的控制(Gilles Darold) §
新选项为 --table-and-children、--exclude-table-and-children 和 --exclude-table-data-and-children。
向 pg_dump 添加 LZ4 和 Zstandard 压缩(Georgios Kokolatos,Justin Pryzby)
允许 pg_dump 和 pg_basebackup 使用 long 模式进行压缩(Justin Pryzby) § § § §
改进 pg_dump 以接受更一致的压缩语法(Georgios Kokolatos) §
类似 --compress=gzip:5 的选项。
增加 initdb 选项以在 initdb 期间和所有未来的服务器启动中设置服务器变量(Tom Lane) §
选项为 -c name=value。
向 createuser 添加选项以控制更多用户选项(Shinya Kato) § §
具体来说,新选项控制有效期截止日期、绕过行级安全以及角色成员资格。
弃用 createuser 选项 --role(Nathan Bossart) § §
此选项容易与新的 createuser 角色成员资格选项混淆,因此添加了具有相同功能的选项 --member-of。--role 选项仍可使用。
允许控制 vacuumdb 模式处理(Gilles Darold) §
这由选项 --schema 和 --exclude-schema 控制。
使 pg_upgrade 设置新集簇的区域设置和编码(Jeff Davis) §
这消除了新集簇必须使用相同的区域设置和编码设置创建的要求。
增加 pg_upgrade 选项以指定默认传输模式(Peter Eisentraut) §
选项为 --copy。
改进 pg_basebackup 以接受数字压缩选项(Georgios Kokolatos,Michael Paquier) §
现在支持类似 --compress=server-5 的选项。
修复 pg_basebackup 以处理存储在 PGDATA 目录中的表空间(Robert Haas) §
增加 pg_waldump 选项 --save-fullpage 以导出完整页面映像(David Christensen) §
允许 pg_waldump 选项 -t/--timeline 接受十六进制值(Peter Eisentraut) §
为 pg_verifybackup 增加进度报告支持(Masahiko Sawada) §
允许 pg_rewind 正确跟踪时间线变更(Heikki Linnakangas) § §
之前如果 pg_rewind 在时间线切换后但在发出检查点之前运行,它可能错误地判定不需要倒带。
使 pg_receivewal 和 pg_recvlogical 在 SIGTERM 时干净退出(Christoph Berg) §
此信号通常由 systemd 使用。
默认构建 ICU 支持(Jeff Davis) §
这移除了构建标志 --with-icu 并增加了标志 --without-icu。
增加对 x86-64 架构上 SSE2(Streaming SIMD Extensions 2)向量运算的支持(John Naylor) §
增加对 ARM 架构上 Advanced SIMD(Single Instruction Multiple Data)(NEON)指令的支持(Nathan Bossart) §
使用 MSVC 构建的 Windows 二进制文件使用 RandomizedBaseAddress(ASLR)(Michael Paquier) §
这在 MinGW 构建中已经启用。
防止扩展库默认导出其符号(Andres Freund,Tom Lane) § §
需要从核心后端或其他扩展调用的函数现在必须显式标记为 PGDLLEXPORT。
要求 Windows 10 或更新版本(Michael Paquier,Juan José Santamaría Flecha) §
之前支持 Windows Vista 和 Windows XP。
要求 Perl 版本 5.14 或更高(John Naylor) §
要求 Bison 版本 2.3 或更高(John Naylor) §
要求 Flex 版本 2.5.35 或更高(John Naylor) §
GSSAPI 支持要求 MIT Kerberos(Stephen Frost) §
移除对 Visual Studio 2013 的支持(Michael Paquier) §
移除对 HP-UX 的支持(Thomas Munro) §
移除对 HP/Intel Itanium 的支持(Thomas Munro) §
移除 libpq 对 SCM 凭证认证的支持(Michael Paquier) §
此认证方法的后端支持已在 PostgreSQL 9.1 中移除。
增加 meson 构建系统(Andres Freund,Nazir Bilal Yavuz,Peter Eisentraut) §
这最终将取代 Autoconf 和基于 Windows 的 MSVC 构建系统。
允许控制构建系统使用的 openssl 二进制文件的位置(Peter Eisentraut) §
将查找 openssl 程序改为由 configure 或 meson 选项控制。
增加构建选项以允许测试小表段大小(Andres Freund) §
构建选项为 --with-segsize-blocks 和 -Dsegsize_blocks。
增加 pgindent 选项(Andrew Dunstan) § § § § § § §
新选项为 --show-diff、--silent-diff、--commit 和 --help,并允许多个 --exclude 选项。同时要求显式指定 typedef 文件。选项 --code-base 和 --build 也已移除。
将 pg_bsd_indent 源代码添加到主代码树中(Tom Lane) §
改进 make_ctags 和 make_etags(Yugo Nagata) §
调整 pg_attribute 列以提高效率(Peter Eisentraut) §
改进对布尔列上扩展索引的使用(Zongliang Quan,Tom Lane) §
向 fuzzystrmatch 添加 Daitch-Mokotoff Soundex 支持(Dag Lem) §
允许 auto_explain 记录传递给参数化语句的值(Dagfinn Ilmari Mannsåker) §
这影响使用服务器端 PREPARE/EXECUTE 的查询,以及客户端通过 Parse/Bind 协议消息发出的查询。日志记录由 auto_explain.log_parameter_max_length 控制;默认情况下,查询参数记录时不受长度限制。
使 auto_explain 的 log_verbose 模式遵守 compute_query_id 的值(Atsushi Torikoshi) §
之前即使启用了 compute_query_id,log_verbose 也不显示查询标识符。
使 pg_stat_statements 规范化工具命令中使用的常量(Michael Paquier) §
之前显示的是常量而非占位符,如 $1。
增加 pg_walinspect 函数 pg_get_wal_block_info() 以报告 WAL 块信息(Michael Paquier,Melanie Plageman,Bharath Rupireddy) § § § §
更改 pg_walinspect 函数 pg_get_wal_records_info() 和 pg_get_wal_stats() 解释结束 LSN 的方式(Bharath Rupireddy) §
之前表示不存在的 WAL 位置的结束 LSN 会产生错误,而现在将被解释为 WAL 的末尾。
在 pg_walinspect 和 pg_waldump 中添加 WAL 记录的详细描述(Melanie Plageman,Peter Geoghegan) § § § §
增加 pageinspect 函数 bt_multi_page_stats() 以报告多页统计信息(Hamid Akhtar) §
这与 bt_page_stats() 类似,但可以报告一个范围的页面。
向 pageinspect 函数 brin_page_items() 添加空范围输出列(Tomas Vondra) §
重新设计归档模块以更加灵活(Nathan Bossart) §
这一初始化变更要求为较旧 PostgreSQL 版本编写的模块进行更新。
修正 pg_stat_statements 扩展查询协议语句的不准确行跟踪(Sami Imseih) §
增加 pg_buffercache 函数 pg_buffercache_usage_counts() 以报告使用总计(Nathan Bossart) §
增加 pg_buffercache 函数 pg_buffercache_summary() 以报告汇总的缓冲区统计(Melih Mutlu) §
允许在扩展脚本中使用新语法 @extschema:referenced_extension_name@ 引用必需扩展的模式(Regina Obe) §
允许使用 no_relocate 将必需扩展标记为不可重定位(Regina Obe) §
这允许 @extschema:referenced_extension_name@ 在扩展的生命周期内被视为常量。
允许 postgres_fdw 并行执行中止操作(Etsuro Fujita) §
这通过 postgres_fdw 选项 parallel_abort 启用。
使对外部 postgres_fdw 表的 ANALYZE 更高效(Tomas Vondra) §
postgres_fdw 选项 analyze_sampling 控制采样方法。
限制 postgres_fdw 中 reg* 类型常量的传输,仅允许引用内置对象或标记为可传输的扩展(Tom Lane) §
以下人员(按字母顺序排列)作为补丁作者、提交者、审查者、测试者或问题报告者对此版本做出了贡献。
| Abhijit Menon-Sen |
| Adam Mackler |
| Adrian Klaver |
| Ahsan Hadi |
| Ajin Cherian |
| Ajit Awekar |
| Alan Hodgson |
| Aleksander Alekseev |
| Alex Denman |
| Alex Kozhemyakin |
| Alexander Korolev |
| Alexander Korotkov |
| Alexander Lakhin |
| Alexander Pyhalov |
| Alexey Borzov |
| Alexey Ermakov |
| Alexey Makhmutov |
| Álvaro Herrera |
| Amit Kapila |
| Amit Khandekar |
| Amit Langote |
| Amul Sul |
| Anastasia Lubennikova |
| Anban Company |
| Andreas Dijkman |
| Andreas Karlsson |
| Andreas Scherbaum |
| Andrei Zubkov |
| Andres Freund |
| Andrew Alsup |
| Andrew Bille |
| Andrew Dunstan |
| Andrew Gierth |
| Andrew Kesper |
| Andrey Borodin |
| Andrey Lepikhov |
| Andrey Sokolov |
| Ankit Kumar Pandey |
| Ante Kresic |
| Anton Melnikov |
| Anton Sidyakin |
| Anton Voloshin |
| Antonin Houska |
| Arne Roland |
| Artem Anisimov |
| Arthur Zakirov |
| Ashutosh Bapat |
| Ashutosh Sharma |
| Asim Praveen |
| Atsushi Torikoshi |
| Ayaki Tachikake |
| Balazs Szilfai |
| Benoit Lobréau |
| Bernd Helmle |
| Bertrand Drouvot |
| Bharath Rupireddy |
| Bilva Sanaba |
| Bob Krier |
| Boris Zentner |
| Brad Nicholson |
| Brar Piening |
| Bruce Momjian |
| Bruno da Silva |
| Carl Sopchak |
| Cary Huang |
| Changhong Fei |
| Chris Travers |
| Christoph Berg |
| Christophe Pettus |
| Corey Huinker |
| Craig Ringer |
| Curt Kolovson |
| Dag Lem |
| Dagfinn Ilmari Mannsåker |
| Daniel Gustafsson |
| Daniel Vérité |
| Daniel Watzinger |
| Daniel Westermann |
| Daniele Varrazzo |
| Daniil Anisimov |
| Danny Shemesh |
| Dave Page |
| David Christensen |
| David G. Johnston |
| David Geier |
| David Gilman |
| David Kimura |
| David Rowley |
| David Steele |
| David Turon |
| David Zhang |
| Davinder Singh |
| Dean Rasheed |
| Denis Laxalde |
| Dilip Kumar |
| Dimos Stamatakis |
| Dmitriy Kuzmin |
| Dmitry Astapov |
| Dmitry Dolgov |
| Dmitry Koval |
| Dong Wook Lee |
| Dongming Liu |
| Drew DeVault |
| Duncan Sands |
| Ed Maste |
| Egor Chindyaskin |
| Ekaterina Kiryanova |
| Elena Indrupskaya |
| Emmanuel Quincerot |
| Eric Mutta |
| Erik Rijkers |
| Erki Eessaar |
| Erwin Brandstetter |
| Etsuro Fujita |
| Eugeny Zhuzhnev |
| Euler Taveira |
| Evan Jones |
| Evgeny Morozov |
| Fabrízio de Royes Mello |
| Farias de Oliveira |
| Florin Irion |
| Franz-Josef Färber |
| Garen Torikian |
| Georgios Kokolatos |
| Gilles Darold |
| Greg Stark |
| Guillaume Lelarge |
| Gunnar Bluth |
| Gunnar Morling |
| Gurjeet Singh |
| Haiyang Wang |
| Haiying Tang |
| Hamid Akhtar |
| Hans Buschmann |
| Hao Wu |
| Hayato Kuroda |
| Heath Lord |
| Heikki Linnakangas |
| Himanshu Upadhyaya |
| Hisahiro Kauchi |
| Hongyu Song |
| Hubert Lubaczewski |
| Hung Nguyen |
| Ian Barwick |
| Ibrar Ahmed |
| Ilya Gladyshev |
| Ilya Nenashev |
| Isaac Morland |
| Israel Barth Rubio |
| Jacob Champion |
| Jacob Speidel |
| Jaime Casanova |
| Jakub Wartak |
| James Coleman |
| James Inform |
| James Vanns |
| Jan Wieck |
| Japin Li |
| Jeevan Ladhe |
| Jeff Davis |
| Jeff Janes |
| Jehan-Guillaume de Rorthais |
| Jelte Fennema |
| Jian He |
| Jim Jones |
| Jinbao Chen |
| Joe Conway |
| Joel Jacobson |
| John Naylor |
| Jonathan Katz |
| Josef Simanek |
| Joseph Koshakow |
| Juan José Santamaría Flecha |
| Julien Rouhaud |
| Julien Roze |
| Junwang Zhao |
| Justin Pryzby |
| Justin Zhang |
| Karina Litskevich |
| Karl O. Pinc |
| Keisuke Kuroda |
| Ken Kato |
| Kevin McKibbin |
| Kieran McCusker |
| Kirk Wolak |
| Konstantin Knizhnik |
| Koshi Shibagaki |
| Kotaro Kawamoto |
| Kui Liu |
| Kyotaro Horiguchi |
| Lakshmi Narayanan Sreethar |
| Laurence Parry |
| Laurenz Albe |
| Luca Ferrari |
| Lukas Fittl |
| Maciek Sakrejda |
| Magnus Hagander |
| Maja Zaloznik |
| Marcel Hofstetter |
| Marina Polyakova |
| Mark Dilger |
| Marko Tiikkaja |
| Markus Winand |
| Martijn van Oosterhout |
| Martin Jurca |
| Martin Kalcher |
| Mary Xu |
| Masahiko Sawada |
| Masahiro Ikeda |
| Masao Fujii |
| Mason Sharp |
| Matheus Alcantara |
| Mats Kindahl |
| Matthias van de Meent |
| Matthijs van der Vleuten |
| Maxim Orlov |
| Maxim Yablokov |
| Mehmet Emin Karakas |
| Melanie Plageman |
| Melih Mutlu |
| Micah Gates |
| Michael Banck |
| Michael Paquier |
| Michail Nikolaev |
| Michel Pelletier |
| Mike Oh |
| Mikhail Gribkov |
| Mingli Zhang |
| Miroslav Bendik |
| Mitsuru Hinata |
| Myo Wai Thant |
| Naeem Akhter |
| Naoki Okano |
| Nathan Bossart |
| Nazir Bilal Yavuz |
| Neha Sharma |
| Nick Babadzhanian |
| Nicola Contu |
| Nikhil Shetty |
| Nikita Glukhov |
| Nikolay Samokhvalov |
| Nikolay Shaplov |
| Nishant Sharma |
| Nitin Jadhav |
| Noah Misch |
| Noboru Saito |
| Noriyoshi Shinoda |
| Nuko Yokohama |
| Oleg Bartunov |
| Oleg Tselebrovskiy |
| Olly Betts |
| Onder Kalaci |
| Onur Tirtir |
| Pablo Federico |
| Palle Girgensohn |
| Paul Guo |
| Paul Jungwirth |
| Paul Ramsey |
| Pavel Borisov |
| Pavel Kulakov |
| Pavel Luzanov |
| Pavel Stehule |
| Peifeng Qiu |
| Peter Eisentraut |
| Peter Geoghegan |
| Peter Smith |
| Phil Florent |
| Philippe Godfrin |
| Platon Pronko |
| Przemyslaw Sztoch |
| Rachel Heaton |
| Ranier Vilela |
| Regina Obe |
| Reid Thompson |
| Reiner Peterke |
| Richard Guo |
| Riivo Kolka |
| Rishu Bagga |
| Robert Haas |
| Robert Sjöblom |
| Robert Treat |
| Roberto Mello |
| Robins Tharakan |
| Roman Zharkov |
| Ronan Dunklau |
| Rushabh Lathia |
| Ryo Matsumura |
| Samay Sharma |
| Sami Imseih |
| Sandeep Thakkar |
| Sandro Santilli |
| Sebastien Flaesch |
| Sébastien Lardière |
| Sehrope Sarkuni |
| Sergey Belyashov |
| Sergey Pankov |
| Sergey Shinderuk |
| Shi Yu |
| Shinya Kato |
| Sho Kato |
| Shruthi Gowda |
| Shveta Mallik |
| Simon Riggs |
| Sindy Senorita |
| Sirisha Chamarthi |
| Sravan Kumar |
| Stéphane Tachoires |
| Stephen Frost |
| Steve Chavez |
| Stone Tickle |
| Sven Klemm |
| Takamichi Osumi |
| Takeshi Ideriha |
| Tatsuhiro Nakamori |
| Tatsuo Ishii |
| Teja Mupparti |
| Tender Wang |
| Teodor Sigaev |
| Thiago Nunes |
| Thom Brown |
| Thomas Habets |
| Thomas Mc Kay |
| Thomas Munro |
| Tim Carey-Smith |
| Tim Field |
| Timo Stolz |
| Tom Lane |
| Tomas Vondra |
| Tor Erik Linnerud |
| Torsten Förtsch |
| Tristan Partin |
| Troy Frericks |
| Tushar Ahuja |
| Valerie Woolard |
| Vibhor Kumar |
| Victor Spirin |
| Victoria Shepard |
| Vignesh C |
| Vik Fearing |
| Vitaly Burovoy |
| Vitaly Davydov |
| Wang Wei |
| Wenjing Zeng |
| Whale Song |
| Will Mortensen |
| Wolfgang Walther |
| Xin Wen |
| Xing Guo |
| Xingwang Xu |
| XueJing Zhao |
| Yanliang Lei |
| Youmiu Mo |
| Yugo Nagata |
| Yura Sokolov |
| Yuta Katsuragi |
| Zhen Mingyang |
| Zheng Li |
| Zhihong Yu |
| Zhijie Hou |
| Zongliang Quan |
| Zuming Jiang |