E.24. 发布版本 13 #
发布日期:. 2020-09-24
E.24.1. 概述
PostgreSQL 13 包含许多新特性和增强功能,包括:
通过 B-树索引条目去重节省空间并提升性能
提高使用聚合或分区表的查询的性能
使用扩展统计信息时获得更好的查询计划
并行清理索引
增量排序
上述项目和 PostgreSQL 13 的其他新特性在下面的章节中有更详细的说明。
E.24.2. 迁移到版本 13
对于希望从任何先前版本迁移数据的用户,需要使用 pg_dumpall 进行导出/恢复,或使用 pg_upgrade 或逻辑复制。有关迁移到新主版本的一般信息,请参见第 18.6 节。
版本 13 包含许多可能影响与先前版本兼容性的变更。请注意以下不兼容性:
将
SIMILAR TO ... ESCAPE NULL改为返回NULL(Tom Lane)§这一新行为符合 SQL 规范。以前,
ESCAPE为空值时,被解释为使用默认转义字符串(反斜杠字符)。这也适用于substring(。通过保持原函数不变,在旧视图中保留了以前的行为。textFROMpatternESCAPEtext)使
json[b]_to_tsvector()完整检查其string选项的拼写(Dominik Czarnota)§改变非默认的 effective_io_concurrency 值影响并发度的方式(Thomas Munro)§
以前,该值在用于设置并发请求数之前会经过调整。现在直接使用该值。可以通过以下方式将旧值转换为新值:
SELECT round(sum(
OLDVALUE/ n::float)) AS newvalue FROM generate_series(1,OLDVALUE) s(n);不再在 pg_stat_ssl 和 pg_stat_gssapi 系统视图中显示辅助进程(Euler Taveira)§
如果查询将这些视图与 pg_stat_activity 连接,并希望看到辅助进程,就需要使用左连接。
修复
ALTER FOREIGN TABLE ... RENAME COLUMN,使其返回更合适的命令标签(Fujii Masao)§以前返回
ALTER TABLE;现在返回ALTER FOREIGN TABLE。修复
ALTER MATERIALIZED VIEW ... RENAME COLUMN,使其返回更合适的命令标签(Fujii Masao)§以前返回
ALTER TABLE;现在返回ALTER MATERIALIZED VIEW。将配置参数
wal_keep_segments重命名为 wal_keep_size(Fujii Masao)§这决定为备库保留多少 WAL。它以 MB 为单位指定,而旧参数以文件数量指定。如果以前使用
wal_keep_segments,以下公式可以得到大致等价的设置:wal_keep_size = wal_keep_segments * wal_segment_size (typically 16MB)
移除对 PostgreSQL 7.3 之前的服务器所使用的 "opaque" 伪类型的支持(Daniel Gustafsson)§
移除对升级未打包扩展(9.1 之前的扩展)的支持(Tom Lane)§
CREATE EXTENSION不再支持FROM选项。任何仍使用未打包扩展的安装实例,都应在更新到 PostgreSQL 13 之前,将这些扩展升级为已打包的版本。移除对时区数据库中
posixrules文件的支持(Tom Lane)§IANA 的时区工作组已弃用此特性,这意味着它将在未来几年中逐渐从系统的时区数据库中消失。为避免时区数据更新意外引发行为变化,我们从版本 13 开始移除了 PostgreSQL 对此特性的支持。这只影响缺少显式夏令时切换规则的 POSIX 风格时区指定的行为;以前可以通过安装自定义
posixrules文件来确定切换规则,现在则使用硬编码规则。对于受影响的安装实例,建议改用地理时区名称。在 ltree 中,当
lquery模式包含相邻的带花括号星号时,例如*{2}.*{3},将其正确解释为*{5}(Nikita Glukhov)§修复 pageinspect 的
bt_metap(),使其返回更合适、不易溢出的数据类型(Peter Geoghegan)§
E.24.3. 变更
以下是 PostgreSQL 13 与上一个主版本之间变更的详细说明。
E.24.3.1. 服务器
E.24.3.1.1. 分区
允许在更多情况下进行分区剪枝(Yuzuko Hosoya,Amit Langote,Álvaro Herrera)§ §
允许在更多情况下进行逐分区连接(Ashutosh Bapat,Etsuro Fujita,Amit Langote,Tom Lane)§ §
例如,即使分区边界并不完全匹配,现在也可以在分区表之间进行逐分区连接。
支持分区表上的行级
BEFORE触发器(Álvaro Herrera)§但是,不允许此类触发器改变目标分区。
允许通过发布对分区表进行逻辑复制(Amit Langote)§ §
以前,必须逐个复制分区。现在可以显式发布分区表,从而自动发布其所有分区。添加或移除分区时,也会将其相应地添加到发布或从发布中移除。
CREATE PUBLICATION的publish_via_partition_root选项控制分区变更是作为分区自身的变更发布,还是作为父表的变更发布。允许逻辑复制写入订阅者上的分区表(Amit Langote)§
以前,订阅者只能将接收到的行写入非分区表。
允许在分区表达式中使用整行变量(即
table.*)(Amit Langote)§
E.24.3.1.2. 索引
更高效地存储 B-树索引中的重复项(Anastasia Lubennikova,Peter Geoghegan)§
这通过只存储一次重复键,使低基数列能够高效地使用 B-树索引。使用 pg_upgrade 升级的用户,需要执行
REINDEX才能让现有索引使用这一特性。允许
box列上的 GiST 和 SP-GiST 索引支持ORDER BY查询(Nikita Glukhov)§ §box<->point允许 GIN 索引更高效地处理
tsquery搜索中的!(NOT)子句(Nikita Glukhov,Alexander Korotkov,Tom Lane,Julien Rouhaud)§允许
CREATE INDEX指定 GiST 签名长度和整数范围的最大数量(Nikita Glukhov)§在四字节和八字节整数数组、tsvector、pg_trgm、ltree 和 hstore 列上创建的索引,现在可以控制这些 GiST 索引参数,而不再只能使用默认值。
禁止将使用非默认排序规则的索引添加为表的唯一约束或主键约束(Tom Lane)§
索引的排序规则必须与底层列的排序规则匹配,但
ALTER TABLE以前未检查这一点。
E.24.3.1.3. 优化器
E.24.3.1.4. 一般性能
实现增量排序(James Coleman,Alexander Korotkov,Tomas Vondra)§ §
如果已知查询的中间结果按照所需排序顺序的一个或多个前导键排好序,则可以将前导键相同的行分批排序,只考虑剩余键即可完成额外的排序。
如有需要,可以使用 enable_incremental_sort 控制此行为。
允许 hash 聚合对大型聚合结果集使用磁盘存储(Jeff Davis)§ § §
以前,如果预计 hash 聚合使用的内存会超过 work_mem,就会避免使用它。现在,即使如此也可以选择 hash 聚合计划。如果 hash 表超过
work_mem乘以 hash_mem_multiplier 的大小,就会溢写到磁盘。这一行为通常优于旧行为:以前,一旦选择了 hash 聚合,无论 hash 表增长到多大,都会一直保留在内存中;如果规划器估计有误,它可能变得非常大。如有需要,可以通过增大
hash_mem_multiplier来获得类似旧行为的效果。允许插入操作也触发自动清理中的清理活动,而不再仅由更新和删除触发(Laurenz Albe,Darafei Praliaskouski)§
以前,仅有插入活动时会触发自动分析,但不会触发自动清理,理由是不存在需要移除的死元组。然而,清理扫描还有其他有益的副作用,例如设置页面全可见位,从而提高仅索引扫描的效率。另外,让仅插入的表接受周期性清理,有助于分散“冻结”旧元组的工作量,避免整个表同时达到防回卷阈值时,突然需要执行大量冻结工作。
如有需要,可以通过新参数 autovacuum_vacuum_insert_threshold 和 autovacuum_vacuum_insert_scale_factor,或等价的表存储选项来调整此行为。
增加 maintenance_io_concurrency 参数,以控制维护操作的 I/O 并发度(Thomas Munro)§
如果 wal_level 为
minimal,则允许在创建或重写关系的事务期间跳过 WAL 写入(Kyotaro Horiguchi)§对于大于 wal_skip_threshold 的关系,会对其文件执行 fsync,而不生成 WAL。以前,只有
COPY操作会这样处理,但其实现有一个缺陷,可能在崩溃恢复期间导致数据丢失。提高使用大量表空间时重放
DROP DATABASE命令的性能(Fujii Masao)§改进对经过 TOAST 处理的值的起始字节的获取(Binguo Bao,Andrey Borodin)§
以前,即使已知只需要起始的一部分字节,也会完整获取压缩的行外 TOAST 值。现在,只获取足以生成结果的数据。
加快整数到文本的转换(David Fetter)§
减少包含大量 SQL 语句的查询字符串和扩展脚本的内存用量(Amit Langote)§
E.24.3.1.5. 监控
允许
EXPLAIN、auto_explain、自动清理和 pg_stat_statements 跟踪 WAL 使用统计信息(Kirill Bychik,Julien Rouhaud)§ § §允许抽样记录 SQL 语句,而不必记录全部语句(Adrien Nayrat)§
对于耗时超过 log_min_duration_sample 的语句,将按 log_statement_sample_rate 指定的比例记录日志。
将后端类型添加到 csvlog 日志输出中,并允许选择将其加入 log_line_prefix 日志输出(Peter Eisentraut)§
改进对预备语句参数日志记录的控制(Alexey Bashtanov,Álvaro Herrera)§ §
GUC 设置 log_parameter_max_length 控制记录未出错语句时输出的参数值的最大长度,而 log_parameter_max_length_on_error 对出错语句的日志执行相同控制。以前,发生错误时从不记录预备语句的参数。
允许在出错后记录函数调用回溯(Peter Eisentraut,Álvaro Herrera)§ §
新参数 backtrace_functions 指定哪些 C 函数应在出错时生成回溯。
E.24.3.1.6. 系统视图
向 pg_stat_activity 添加
leader_pid,以报告并行工作进程的领导者进程(Julien Rouhaud)§增加系统视图
pg_stat_progress_basebackup,以报告流式基础备份的进度(Fujii Masao)§增加系统视图
pg_stat_progress_analyze,以报告 ANALYZE 进度(Álvaro Herrera,Tatsuro Yamada,Vinayak Pokale)§增加系统视图
pg_shmem_allocations,以显示共享内存使用情况(Andres Freund,Robert Haas)§增加系统视图
pg_stat_slru,以监控内部 SLRU 缓存(Tomas Vondra)§允许将 track_activity_query_size 设置为最高 1MB(Vyacheslav Makarov)§
以前的最大值为 100kB。
E.24.3.1.7. 等待事件
E.24.3.1.8. Authentication
只允许超级用户查看 ssl_passphrase_command 设置(Insung Moon)§
此项修改出于安全考虑。
将服务器加密连接默认允许的最低 TLS 版本从 1.0 改为 1.2(Peter Eisentraut)§
可以通过 ssl_min_protocol_version 控制这一选择。
E.24.3.1.9. 服务器配置
收紧关于只读事务模式下允许执行哪些实用命令的规则(Robert Haas)§
此项修改还增加了可在并行查询中运行的实用命令数量。
允许在服务器启动后修改 allow_system_table_mods(Peter Eisentraut)§
在设置 allow_system_table_mods 时,禁止非超级用户修改系统表(Peter Eisentraut)§
以前,如果在服务器启动时设置了 allow_system_table_mods,非超级用户就可以对系统表执行
INSERT/UPDATE/DELETE命令。
E.24.3.2. 流复制和恢复
允许通过重载更改流复制配置设置(Sergei Kornilov)§
以前,更改 primary_conninfo 和 primary_slot_name 需要重启服务器。
允许 WAL 接收进程在未指定永久复制槽时使用临时复制槽(Peter Eisentraut,Sergei Kornilov)§ §
可以使用 wal_receiver_create_temp_slot 启用此行为。
允许通过 max_slot_wal_keep_size 限制复制槽的 WAL 存储量(Kyotaro Horiguchi)§
需要超过此值的复制槽会被标记为无效。
允许备库提升取消任何已请求的暂停(Fujii Masao)§
以前,备库处于暂停状态时无法提升。
如果恢复未到达指定的恢复目标,则产生错误(Leif Gunnar Erlandsen,Peter Eisentraut)§
以前,即使未到达目标,备库也会在到达 WAL 末尾时自行提升。
允许控制逻辑解码在溢写到磁盘之前可以使用多少内存(Tomas Vondra,Dilip Kumar,Amit Kapila)§
这由 logical_decoding_work_mem 控制。
允许在 WAL 引用无效页面时仍继续恢复(Fujii Masao)§
可以使用 ignore_invalid_pages 启用此功能。
E.24.3.3. 工具命令
允许
VACUUM并行处理一个表的各个索引(Masahiko Sawada,Amit Kapila)§新增的
PARALLEL选项控制此行为。允许
FETCH FIRST使用WITH TIES返回与最后一个结果行的排序值相同的所有额外行(Surafel Temesgen)§使
CREATE TABLE LIKE将CHECK约束的NO INHERIT属性传递给所创建的表(Ildar Musin,Chris Travers)§对分区表使用
LOCK TABLE时,不检查子表上的权限(Amit Langote)§允许向标识列插入时使用
OVERRIDING USER VALUE(Dean Rasheed)§增加
ALTER TABLE ... DROP EXPRESSION,以允许移除列的GENERATED属性(Peter Eisentraut)§修复多步骤
ALTER TABLE命令中的缺陷(Tom Lane)§IF NOT EXISTS子句现在按预期工作:如果列已存在,就不会执行派生操作(例如创建索引)。另外,将相关操作合并到一条ALTER TABLE中的某些情况,以前无法正常工作,现在也已可用。增加用于重命名视图列的
ALTER VIEW语法(Fujii Masao)§以前已经可以重命名视图列,但必须写成
ALTER TABLE RENAME COLUMN,这令人困惑。增加
ALTER TYPE选项,以修改基础类型的 TOAST 属性和支持函数(Tomas Vondra,Tom Lane)§增加
CREATE DATABASE的LOCALE选项(Peter Eisentraut)§这将现有的
LC_COLLATE和LC_CTYPE选项合并为单个选项。允许
DROP DATABASE断开正在使用目标数据库的会话,以使删除成功(Pavel Stehule,Amit Kapila)§这通过
FORCE选项启用。增加结构成员
tg_updatedcols,使 C 语言更新触发器能够知道哪些列被更新(Peter Eisentraut)§
E.24.3.4. 数据类型
增加多态数据类型,供要求参数类型兼容的函数使用(Pavel Stehule)§
新增数据类型为
anycompatible、anycompatiblearray、anycompatiblenonarray和anycompatiblerange。增加 SQL 数据类型
xid8,以对外提供 FullTransactionId(Thomas Munro)§现有的
xid数据类型只有四字节,因此不包含事务纪元。增加数据类型
regcollation及相关函数,以表示排序规则对象的 OID(Julien Rouhaud)§在某些情况下使用 glibc 版本作为排序规则版本标识符(Thomas Munro)§
如果 glibc 版本发生变化,将发出警告,提示依赖排序规则的索引可能损坏。
增加 Windows 上的排序规则版本支持(Thomas Munro)§
允许通过后缀记法提取
ROW表达式的成员(Tom Lane)§例如,
(ROW(4, 5.0)).f1现在返回 4。
E.24.3.5. 函数
增加
jsonb_set()的另一个版本,改进对NULL的处理(Andrew Dunstan)§新函数
jsonb_set_lax()根据请求处理值为NULL的新值:将指定键设为 JSON null、删除该键、抛出异常,或返回未经修改的jsonb值。增加 jsonpath 的 .
datetime()方法(Nikita Glukhov,Teodor Sigaev,Oleg Bartunov,Alexander Korotkov)§此函数允许将 JSON 值转换为时间戳,随后即可在
jsonpath表达式中处理这些时间戳。此项修改还增加了支持时区感知输出的jsonpath函数。增加 SQL 函数
NORMALIZE(),以规范化 Unicode 字符串,并增加IS NORMALIZED来检查是否已规范化(Peter Eisentraut)§为
pg_lsn增加min()和max()聚合(Fabrízio de Royes Mello)§这些聚合在监控查询中特别有用。
允许 Unicode 转义,例如
E'\u或nnnn'U&'\,指定数据库编码中可用的任何字符,即使数据库编码不是 UTF-8(Tom Lane)§nnnn'允许
to_date()和to_timestamp()识别非英语的月份名和星期名(Juan José Santamaría Flecha,Tom Lane)§可识别的名称与
to_char()使用相同格式模式输出的名称相同。增加日期时间格式模式
FF1–FF6,以指定输入或输出 1 到 6 位小数秒(Alexander Korotkov,Nikita Glukhov,Teodor Sigaev,Oleg Bartunov)§这些模式可用于
to_char()、to_timestamp()和 jsonpath 的 .datetime()。增加日期时间格式模式
SSSSS,作为SSSS的 SQL 标准别名(Nikita Glukhov,Alexander Korotkov)§增加函数
gen_random_uuid(),以生成版本 4 UUID(Peter Eisentraut)§增加函数
min_scale(),返回完整精确表示numeric值所需的小数点右侧位数(Pavel Stehule)§增加函数
trim_scale(),通过移除尾随零来减少numeric值的小数位数(Pavel Stehule)§例如,以前只支持
point<->line,现在line<->point也可以使用。为所有事务 ID 函数创建
xid8版本(Thomas Munro)§为保持向后兼容,基于
xid的旧函数仍然存在。增加移除对象对扩展依赖的能力(Álvaro Herrera)§
对象可以是函数、物化视图、索引或触发器。语法为
ALTER .. NO DEPENDS ON。
E.24.3.6. PL/pgSQL
E.24.3.7. 客户端接口
允许 libpq 客户端要求加密连接使用通道绑定(Jeff Davis)§
使用 libpq 连接参数
channel_binding,会强制 TLS 连接的另一端证明它知道用户的密码。这可以防止中间人攻击。增加 libpq 连接参数,以控制加密连接允许的最低和最高 TLS 版本(Daniel Gustafsson)§ § §
这些设置为 ssl_min_protocol_version 和 ssl_max_protocol_version。默认最低 TLS 版本为 1.2(这与以前的发行版相比是行为上的变化)。
允许使用密码解锁客户端证书(Craig Ringer,Andrew Dunstan)§
这通过 libpq 的 sslpassword 连接参数启用。
允许 libpq 使用 DER 编码的客户端证书(Craig Ringer,Andrew Dunstan)§
修复 ecpg 的
EXEC SQL elif指令,使其正确工作(Tom Lane)§以前,它的行为与
endif后跟ifdef相同,因此即使同一if结构中的前一个分支已成功匹配,也不会阻止展开elif分支或后续分支。
E.24.3.8. 客户端应用程序
E.24.3.8.1. psql
允许 psql 的次级提示符为空白,但与主提示符具有相同宽度(Thomas Munro)§
这通过将
PROMPT2设为%w实现。允许 psql 的
\g和\gx命令只在该条命令执行期间更改 \pset 输出选项(Tom Lane)§此特性允许使用
\g (expand=on)这样的语法,它等价于\gx。增加用于显示操作符类和操作符族的 psql 命令(Sergey Cherkashin,Nikita Glukhov,Alexander Korotkov)§
新增命令为
\dAc、\dAf、\dAo和\dAp。在 psql 的
\dt+及相关命令中显示表的持久性(David Fetter)§在详细模式下,表、索引和视图的显示会指出对象是永久的、临时的,还是不记录 WAL 的。
修复 psql 的
\e命令之后的重新显示(Tom Lane)§退出编辑器时,如果查询不以分号或
\g结尾,现在会显示查询缓冲区的内容。向 psql 增加
\warn命令(David Fetter)§这与
\echo类似,但文本发送到 stderr,而非 stdout。将 PostgreSQL 主页添加到命令行
--help输出中(Peter Eisentraut)§
E.24.3.9. 服务器应用程序
为基础备份生成备份清单,并验证备份(Robert Haas)§ §
新工具 pg_verifybackup 可以验证备份。
使 pg_basebackup 默认估计备份总大小(Fujii Masao)§
这一计算使
pg_stat_progress_basebackup能够显示进度。如果不需要,可以使用--no-estimate-size选项禁用它。以前,只有使用--progress选项时才会进行这一计算。为 pg_rewind 增加配置备库的选项(Paul Guo,Jimmy Yih,Ashwin Agrawal)§
这与 pg_basebackup 的
--write-recovery-conf选项一致。允许 pg_rewind 使用目标集群的 restore_command 获取所需的 WAL(Alexey Kondratov)§
这通过
-c/--restore-target-wal选项启用。使 pg_rewind 在回退之前自动运行崩溃恢复(Paul Guo,Jimmy Yih,Ashwin Agrawal)§
可以使用
--no-ensure-shutdown禁用此行为。增加 pg_waldump 报告的
PREPARE TRANSACTION相关信息(Fujii Masao)§增加 pg_waldump 选项
--quiet,以抑制非错误输出(Andres Freund,Robert Haas)§增加 pg_dump 选项
--include-foreign-data,以转储外部服务器上的数据(Luis Carril)§允许 vacuumdb 运行的清理命令以并行模式执行(Masahiko Sawada)§
这通过新增的
--parallel选项启用。允许 reindexdb 并行运行(Julien Rouhaud)§
并行模式通过新增的
--jobs选项启用。允许 dropdb 断开正在使用目标数据库的会话,以使删除成功(Pavel Stehule)§
这通过
-f选项启用。从 createuser 中移除
--adduser和--no-adduser(Alexander Lakhin)§长期以来,用于此目的的推荐选项是
--superuser和--no-superuser。运行 pg_upgrade 时,将 pg_upgrade 程序所在的目录用作默认的
--new-bindir设置(Daniel Gustafsson)§
E.24.3.10. 文档
E.24.3.11. 源代码
增加使用 Visual Studio 2019 构建的支持(Haribabu Kommi)§
增加 MSYS2 构建支持(Peter Eisentraut)§
为 Power PC 编译器增加 compare_exchange 和 fetch_add 的汇编代码(Noah Misch)§
更新全文检索使用的 Snowball 词干分析器词典(Panagiotis Mavrogiorgos)§
这增加了希腊语词干提取,并改进了丹麦语和法语的词干提取。
移除对 Windows 2000 的支持(Michael Paquier)§
移除对非 ELF 的 BSD 系统的支持(Peter Eisentraut)§
移除 configure 选项
--disable-float8-byval和--disable-float4-byval(Peter Eisentraut)§ §这些内容曾用于兼容某些版本零 C 函数,但那些函数已不再受支持。
将查询字符串传递给规划器钩子函数(Pascal Legrand,Julien Rouhaud)§
增加 TLS 初始化钩子(Andrew Dunstan)§
允许在不预定义 Unix 域套接字目录的情况下构建(Peter Eisentraut)§
降低 Unix 平台上 SysV 资源键冲突的概率(Tom Lane)§
使用操作系统函数可靠地擦除包含敏感信息的内存(Peter Eisentraut)§
例如,可用它清除存储在内存中的密码。
增加
headerscheck脚本以测试 C 头文件的兼容性(Tom Lane)§将内部列表实现为数组,而不再采用单元链表(Tom Lane)§
这提高了访问大量对象的查询的性能。
修改
TS_execute()的 API(Tom Lane,Pavel Borisov)§ §TS_execute回调现在必须提供三值(是、否、可能)逻辑。现在默认准确计算 NOT 查询。
E.24.3.12. 附加模块
拥有数据库级
CREATE权限的用户,即使不是超级用户,也可以在数据库中安装这类扩展。此项修改还移除了pg_pltemplate系统目录。允许非超级用户不使用密码就连接到 postgres_fdw 外部服务器(Craig Ringer)§
具体来说,允许超级用户将某个用户映射的
password_required设置为 false。仍须注意防止非超级用户使用超级用户凭据连接到外部服务器。允许 postgres_fdw 使用证书认证(Craig Ringer)§
不同用户可以使用不同证书。
增加扩展 bool_plperl,以在 SQL 布尔值和 PL/Perl 布尔值之间进行双向转换(Ivan Panchenko)§
使 pg_stat_statements 将
SELECT ... FOR UPDATE命令与不带FOR UPDATE的命令分别处理(Andrew Gierth,Vik Fearing)§允许 pg_stat_statements 选择性地跟踪语句的规划时间(Julien Rouhaud,Pascal Legrand,Thomas Munro,Fujii Masao)§ §
以前只跟踪执行时间。
全面修改 ltree 的 lquery 语法,使其对
NOT(!)的处理更符合逻辑(Filip Rembialkowski,Tom Lane,Nikita Glukhov)§ §另外,允许非 * 查询使用数值范围({})指定匹配次数。
增加 pageinspect 函数,以人类可读的格式输出
t_infomask/t_infomask2值(Craig Ringer,Sawada Masahiko,Michael Paquier)§ §向 pageinspect 输出添加 B-树索引去重处理相关列(Peter Geoghegan)§
E.24.4. 致谢 #
以下人员(按字母顺序排列)作为补丁作者、提交者、审查者、测试者或问题报告者为本版本做出了贡献。
| Abhijit Menon-Sen |
| Adam Lee |
| Adam Scott |
| Adé Heyward |
| Adrien Nayrat |
| Ahsan Hadi |
| Alastair McKinley |
| Aleksandr Parfenov |
| Alex Aktsipetrov |
| Alex Macy |
| Alex Shulgin |
| Alexander Korotkov |
| Alexander Kukushkin |
| Alexander Kuzmenkov |
| Alexander Lakhin |
| Alexey Bashtanov |
| Alexey Kondratov |
| Álvaro Herrera |
| Amit Kapila |
| Amit Khandekar |
| Amit Langote |
| Amul Sul |
| Anastasia Lubennikova |
| Andreas Joseph Krogh |
| Andreas Karlsson |
| Andreas Kunert |
| Andreas Seltenreich |
| Andrei Zubkov |
| Andres Freund |
| Andrew Bille |
| Andrew Dunstan |
| Andrew Gierth |
| Andrey Borodin |
| Andrey Klychkov |
| Andrey Lepikhov |
| Anna Akenteva |
| Anna Endo |
| Anthony Nowocien |
| Anton Vlasov |
| Antonin Houska |
| Ants Aasma |
| Arne Roland |
| Arnold Müller |
| Arseny Sher |
| Arthur Nascimento |
| Arthur Zakirov |
| Ashutosh Bapat |
| Ashutosh Sharma |
| Ashwin Agrawal |
| Asif Rehman |
| Asim Praveen |
| Atsushi Torikoshi |
| Augustinas Jokubauskas |
| Austin Drenski |
| Basil Bourque |
| Beena Emerson |
| Ben Cornett |
| Benjie Gillam |
| Benoît Lobréau |
| Bernd Helmle |
| Bharath Rupireddy |
| Bhargav Kamineni |
| Binguo Bao |
| Brad DeJong |
| Brandur Leach |
| Brent Bates |
| Brian Williams |
| Bruce Momjian |
| Cameron Ezell |
| Cary Huang |
| Chapman Flack |
| Charles Offenbacher |
| Chen Huajun |
| Chenyang Lu |
| Chris Bandy |
| Chris Travers |
| Christoph Berg |
| Christophe Courtois |
| Corey Huinker |
| Craig Ringer |
| Cuiping Lin |
| Dagfinn Ilmari Mannsåker |
| Daniel Fiori |
| Daniel Gustafsson |
| Daniel Vérité |
| Daniel Westermann |
| Darafei Praliaskouski |
| Daryl Waycott |
| Dave Cramer |
| David Christensen |
| David Fetter |
| David G. Johnston |
| David Gilman |
| David Harper |
| David Rowley |
| David Steele |
| David Zhang |
| Davinder Singh |
| Dean Rasheed |
| Denis Stuchalin |
| Dent John |
| Didier Gautheron |
| Dilip Kumar |
| Dmitry Belyavsky |
| Dmitry Dolgov |
| Dmitry Ivanov |
| Dmitry Telpt |
| Dmitry Uspenskiy |
| Dominik Czarnota |
| Dongming Liu |
| Ed Morley |
| Edmund Horner |
| Emre Hasegeli |
| Eric Gillum |
| Erik Rijkers |
| Erwin Brandstetter |
| Ethan Waldo |
| Etsuro Fujita |
| Eugen Konkov |
| Euler Taveira |
| Fabien Coelho |
| Fabrízio de Royes Mello |
| Felix Lechner |
| Filip Janus |
| Filip Rembialkowski |
| Frank Gagnepain |
| Georgios Kokolatos |
| Gilles Darold |
| Greg Nancarrow |
| Grigory Smolkin |
| Guancheng Luo |
| Guillaume Lelarge |
| Hadi Moshayedi |
| Haiying Tang |
| Hamid Akhtar |
| Hans Buschmann |
| Hao Wu |
| Haribabu Kommi |
| Haruka Takatsuka |
| Heath Lord |
| Heikki Linnakangas |
| Himanshu Upadhyaya |
| Hironobu Suzuki |
| Hugh McMaster |
| Hugh Ranalli |
| Hugh Wang |
| Ian Barwick |
| Ibrar Ahmed |
| Ildar Musin |
| Insung Moon |
| Ireneusz Pluta |
| Isaac Morland |
| Ivan Kartyshov |
| Ivan Panchenko |
| Ivan Sergio Borgonovo |
| Jaime Casanova |
| James Coleman |
| James Gray |
| James Hunter |
| James Inform |
| James Lucas |
| Jan Mussler |
| Jaroslav Sivy |
| Jeevan Chalke |
| Jeevan Ladhe |
| Jeff Davis |
| Jeff Janes |
| Jehan-Guillaume de Rorthais |
| Jeremy Evans |
| Jeremy Schneider |
| Jeremy Smith |
| Jerry Sievers |
| Jesper Pedersen |
| Jesse Kinkead |
| Jesse Zhang |
| Jian Zhang |
| Jie Zhang |
| Jim Nasby |
| Jimmy Yih |
| Jobin Augustine |
| Joe Conway |
| John Hsu |
| John Naylor |
| Jon Jensen |
| Jonathan Katz |
| Jorge Gustavo Rocha |
| Josef Šimánek |
| Joseph Nahmias |
| Juan José Santamaría Flecha |
| Julian Backes |
| Julien Rouhaud |
| Jürgen Purtz |
| Justin King |
| Justin Pryzby |
| Karl O. Pinc |
| Keisuke Kuroda |
| Keith Fiske |
| Kelly Min |
| Ken Tanzer |
| Kirill Bychik |
| Kirk Jamison |
| Konstantin Knizhnik |
| Kuntal Ghosh |
| Kyle Kingsbury |
| Kyotaro Horiguchi |
| Lars Kanis |
| Laurenz Albe |
| Leif Gunnar Erlandsen |
| Li Japin |
| Liudmila Mantrova |
| Lucas Viecelli |
| Luis M. Carril |
| Lukáš Sobotka |
| Maciek Sakrejda |
| Magnus Hagander |
| Mahadevan Ramachandran |
| Mahendra Singh Thalor |
| Manuel Rigger |
| Marc Munro |
| Marcos David |
| Marina Polyakova |
| Mark Dilger |
| Mark Wong |
| Marko Tiikkaja |
| Markus Winand |
| Marti Raudsepp |
| Martijn van Oosterhout |
| Masahiko Sawada |
| Masahiro Ikeda |
| Masao Fujii |
| Mateusz Guzik |
| Matt Jibson |
| Matteo Beccati |
| Maxence Ahlouche |
| Melanie Plageman |
| Michael Banck |
| Michael Luo |
| Michael Meskes |
| Michael Paquier |
| Michail Nikolaev |
| Mike Palmiotto |
| Mithun Cy |
| Movead Li |
| Nathan Bossart |
| Nazli Ugur Koyluoglu |
| Neha Sharma |
| Nicola Contu |
| Nicolás Alvarez |
| Nikhil Sontakke |
| Nikita Glukhov |
| Nikolay Shaplov |
| Nino Floris |
| Noah Misch |
| Noriyoshi Shinoda |
| Oleg Bartunov |
| Oleg Samoilov |
| Oleksii Kliukin |
| Ondrej Jirman |
| Panagiotis Mavrogiorgos |
| Pascal Legrand |
| Patrick McHardy |
| Paul Guo |
| Paul Jungwirth |
| Paul Ramsey |
| Paul Sivash |
| Paul Spencer |
| Pavan Deolasee |
| Pavel Borisov |
| Pavel Luzanov |
| Pavel Stehule |
| Pavel Suderevsky |
| Peifeng Qiu |
| Pengzhou Tang |
| Peter Billen |
| Peter Eisentraut |
| Peter Geoghegan |
| Peter Smith |
| Petr Fedorov |
| Petr Jelínek |
| Phil Bayer |
| Philip Semanchuk |
| Philippe Beaudoin |
| Pierre Ducroquet |
| Pierre Giraud |
| Piotr Gabriel Kosinski |
| Piotr Wlodarczyk |
| Prabhat Sahu |
| Quan Zongliang |
| Quentin Rameau |
| Rafael Castro |
| Rafia Sabih |
| Raj Mohite |
| Rajkumar Raghuwanshi |
| Ramanarayana M |
| Ranier Vilela |
| Rares Salcudean |
| Raúl Marín Rodríguez |
| Raymond Martin |
| Reijo Suhonen |
| Richard Guo |
| Robert Ford |
| Robert Haas |
| Robert Kahlert |
| Robert Treat |
| Robin Abbi |
| Robins Tharakan |
| Roger Harkavy |
| Roman Peshkurov |
| Rui DeSousa |
| Rui Hai Jiang |
| Rushabh Lathia |
| Ryan Lambert |
| Ryohei Takahashi |
| Scott Ribe |
| Sean Farrell |
| Sehrope Sarkuni |
| Sergei Agalakov |
| Sergei Kornilov |
| Sergey Cherkashin |
| Shawn Debnath |
| Shawn Wang |
| Shay Rojansky |
| Shenhao Wang |
| Simon Riggs |
| Slawomir Chodnicki |
| Soumyadeep Chakraborty |
| Stéphane Lorek |
| Stephen Frost |
| Steve Rogerson |
| Steven Winfield |
| Surafel Temesgen |
| Suraj Kharage |
| Takanori Asaba |
| Takao Fujii |
| Takayuki Tsunakawa |
| Takuma Hoshiai |
| Tatsuhito Kasahara |
| Tatsuo Ishii |
| Tatsuro Yamada |
| Taylor Vesely |
| Teodor Sigaev |
| Tham Nguyen |
| Thibaut Madelaine |
| Thom Brown |
| Thomas Kellerer |
| Thomas Munro |
| Tiago Anastacio |
| Tim Clarke |
| Tim Möhlmann |
| Tom Ellis |
| Tom Gottfried |
| Tom Lane |
| Tomas Vondra |
| Tuomas Leikola |
| Tushar Ahuja |
| Victor Wagner |
| Victor Yegorov |
| Vignesh C |
| Vik Fearing |
| Vinay Banakar |
| Vladimir Leskov |
| Vladimir Sitnikov |
| Vyacheslav Makarov |
| Vyacheslav Shablistyy |
| Will Leinweber |
| William Crowell |
| Wyatt Alt |
| Yang Xiao |
| Yaroslav Schekin |
| Yi Huang |
| Yigong Hu |
| Yoann La Cancellera |
| Yoshikazu Imai |
| Yu Kimura |
| Yugo Nagata |
| Yuli Khodorkovskiy |
| Yusuke Egashira |
| Yuya Watari |
| Yuzuko Hosoya |
| ZhenHua Cai |