发布日期:. 2021-09-30
PostgreSQL 14 包含许多新特性和增强功能,包括:
存储过程现在可以通过 OUT 参数返回数据。
已实现公共表表达式的 SQL 标准 SEARCH 和 CYCLE 选项。
下标运算现在可以应用于任何下标记法有意义的数据类型, 而不仅仅是数组。在此版本中,jsonb 和 hstore 类型增加了下标操作符。
范围类型已通过增加多范围类型进行扩展,允许表示非连续的数据范围。
对并行查询、高并发工作负载、分区表、逻辑复制和清理进行了大量性能改进。
B-tree 索引更新管理更加高效,减少了索引膨胀。
如果数据库开始接近事务 ID 回卷条件,VACUUM 会自动变得更加积极,并跳过非必要的清理。
扩展统计信息现在可以收集表达式上的统计, 从而对复杂查询获得更好的规划结果。
libpq 现在具有管道化多个查询的能力, 这可以在高延迟连接上提高吞吐量。
上述项目和 PostgreSQL 14 的其他新特性 在下面的章节中有更详细的说明。
对于希望从任何先前版本迁移数据的用户,需要使用 pg_dumpall 进行导出/恢复,或使用 pg_upgrade 或逻辑复制。 有关迁移到新主版本的一般信息,请参见 Section 18.6。
版本 14 包含许多可能影响与先前版本兼容性的变更。 请注意以下不兼容性:
引用某些内置数组函数及其参数类型的用户定义对象必须重新创建(Tom Lane) §
具体来说,array_append()、 array_prepend()、 array_cat()、 array_position()、 array_positions()、 array_remove()、 array_replace() 和 width_bucket() 以前接受 anyarray 参数,但现在接受 anycompatiblearray。因此,引用这些数组函数 签名的用户定义对象(如聚合和操作符)必须在升级前删除, 并在升级完成后重新创建。
移除内置几何数据类型和 contrib 模块 cube、hstore、 intarray 和 seg 中 已弃用的包含操作符 @ 和 ~(Justin Pryzby) § §
更一致命名的 <@ 和 @> 已被推荐使用多年。
修复 to_tsquery() 和 websearch_to_tsquery() 以正确解析包含丢弃标记的查询文本(Alexander Korotkov) §
某些丢弃标记(如下划线)会导致这些函数产生不正确的 tsquery 输出,例如, websearch_to_tsquery('"pg_class pg"') 和 to_tsquery('pg_class <-> pg') 以前都输出 ( 'pg' & 'class' ) <-> 'pg', 但现在都输出 'pg' <-> 'class' <-> 'pg'。
修复 websearch_to_tsquery() 以正确解析引号中多个相邻丢弃标记(Alexander Korotkov) §
以前,包含多个相邻丢弃标记的引号文本被视为多个标记, 导致不正确的 tsquery 输出,例如,websearch_to_tsquery('"aaa: bbb"') 以前 输出 'aaa' <2> 'bbb',但现在输出 'aaa' <-> 'bbb'。
将 EXTRACT() 的返回类型从 float8 改为 numeric(Peter Eisentraut) §
这避免了某些用法中的精度损失问题。旧的行为仍可通过使用底层函数 date_part() 获得。
此外,EXTRACT(date) 现在对不属于 date 数据类型的单位会抛出错误。
当输入为单个 NaN 值时,将带有 numeric 参数的 var_samp() 和 stddev_samp() 改为返回 NULL(Tom Lane) §
以前返回 NaN。
当使用属性编号检查不存在或已删除的列时,has_column_privilege() 返回 false(Joe Conway) §
以前这样的属性编号会返回无效列错误。
以前像 'inf' PRECEDING AND 'inf' FOLLOWING 这样的窗口帧子句会返回不正确的结果。
移除阶乘操作符 ! 和 !!,以及函数 numeric_fac()(Mark Dilger) §
factorial() 函数仍然受支持。
禁止对负数使用 factorial()(Peter Eisentraut) §
以前这种情况返回 1。
移除对后缀(右一元)操作符的支持(Mark Dilger) §
pg_dump 和 pg_upgrade 在导出后缀操作符时会发出警告。
在正则表达式换行敏感模式下, 允许 \D 和 \W 简写匹配换行符(Tom Lane) §
以前它们在此模式下不匹配换行符,但这与其他常见正则表达式引擎的行为不一致。 可以使用 [^[:digit:]] 或 [^[:word:]] 获得旧的行为。
例如,在 (^\d+).*\1 中, ^ 约束应在字符串开头应用, 但在匹配 \1 时不应应用。
禁止在正则表达式字符类中使用 \w 作为范围起点或终点(Tom Lane) §
以前这是允许的,但产生了意外的结果。
将 password_encryption 服务器参数的默认值改为 scram-sha-256(Peter Eisentraut) §
以前默认值为 md5。除非更改此服务器设置或 密码以 MD5 格式指定,否则所有新密码将以 SHA256 存储。 此外,以前作为 md5 同义词的旧式(未记录的) 布尔型值不再被接受。
移除服务器参数 vacuum_cleanup_index_scale_factor(Peter Geoghegan) § §
此设置从 PostgreSQL 版本 13.3 起就被忽略了。
移除服务器参数 operator_precedence_warning(Tom Lane) §
此设置用于警告应用程序关于 PostgreSQL 9.5 的变更。
改进 pg_hba.conf 中 clientcert 的规范(Kyotaro Horiguchi) §
不再支持值 1/0/no-verify; 只能使用字符串 verify-ca 和 verify-full。 此外,如果启用了 cert 认证,则禁止使用 verify-ca, 因为 cert 要求 verify-full 检查。
移除对 SSL 压缩的支持(Daniel Gustafsson,Michael Paquier) § §
在之前的 PostgreSQL 版本中这已默认禁用, 而且大多数现代 OpenSSL 和 TLS 版本不再支持它。
移除服务器和 libpq 对版本 2 线路协议的支持(Heikki Linnakangas) §
这最后一次作为默认值是在 PostgreSQL 7.3(2002 年发布)中。
禁止在 CREATE/DROP LANGUAGE 命令中对语言名称使用单引号(Peter Eisentraut) §
正确处理 ecpg SQL 命令字符串中的双引号标记(Tom Lane) § §
以前 'abc''def' 会被传递给服务器 为 'abc'def',而 "abc""def" 会被传递为 "abc"def",导致语法错误。
防止 intarray 的包含操作符(<@ 和 @>)使用 GiST 索引(Tom Lane) §
以前需要完整的 GiST 索引扫描,所以改为直接扫描堆,这样更快。 为此目的创建的索引应被移除。
移除 contrib 程序 pg_standby(Justin Pryzby) §
防止 tablefunc 中的函数 normal_rand() 接受负值(Ashutosh Bapat) §
负值会产生不良结果。
以下是 PostgreSQL 14 与上一个主版本之间变更的详细说明。
增加预定义角色 pg_read_all_data 和 pg_write_all_data(Stephen Frost) §
这些非登录角色可用于授予对所有表、视图和序列的读或写权限。
增加预定义角色 pg_database_owner, 其仅包含当前数据库的所有者(Noah Misch) §
这在模板数据库中特别有用。
在后端崩溃后删除临时文件(Euler Taveira) §
以前,此类文件为调试目的而被保留。如有必要, 可通过新的服务器参数 remove_temp_files_after_crash 禁用删除。
允许在客户端断开连接时取消长时间运行的查询(Sergey Cherkashin,Thomas Munro) §
服务器参数 client_connection_check_interval 允许控制 是否在查询执行期间检查连接丢失。 (这在 Linux 和少数其他操作系统上受支持。)
为 pg_terminate_backend() 增加可选的超时参数(Magnus Hagander) §
允许宽元组始终被添加到几乎为空的堆页面中(John Naylor,Floris van Nee) §
以前,插入会超过页面填充因子的元组 会被添加到新页面中。
在 SSL 连接数据包中增加服务器名称指示(SNI)(Peter Eisentraut) §
可通过关闭客户端连接选项 sslsni 来禁用此功能。
允许 vacuum 在可移除的索引条目数量不显著时跳过索引清理(Masahiko Sawada,Peter Geoghegan) § §
vacuum 参数 INDEX_CLEANUP 有一个 新的默认值 auto 来启用此优化。
允许 vacuum 更积极地将已删除的 btree 页面添加到空闲空间映射中(Peter Geoghegan) §
以前 vacuum 只能将之前 vacuum 标记为已删除的页面添加到空闲空间映射中。
允许 vacuum 回收未使用的尾部堆行指针所占用的空间(Matthias van de Meent,Peter Geoghegan) §
允许 vacuum 在最小锁定索引操作期间更积极地删除死行(Álvaro Herrera) § § §
具体来说,CREATE INDEX CONCURRENTLY 和 REINDEX CONCURRENTLY 不再限制其他关系的死行移除。
加速具有许多关系的数据库的清理(Tatsuhito Kasahara) §
降低 vacuum_cost_page_miss 的默认值以更好地反映当前硬件能力(Peter Geoghegan) §
增加跳过 TOAST 表清理的能力(Nathan Bossart) §
VACUUM 现在 有一个 PROCESS_TOAST 选项,可设置为 false 以禁用 TOAST 处理,而 vacuumdb 有一个 --no-process-toast 选项。
使 COPY FREEZE 适当地更新页面可见性位(Anastasia Lubennikova,Pavan Deolasee,Jeff Janes) §
当表接近 xid 或 multixact 回卷时,使 vacuum 操作更加积极(Masahiko Sawada,Peter Geoghegan) §
增加事务 ID 和多事务回卷之前的警告时间和硬限制(Noah Misch) §
这应该减少在未发出回卷警告的情况下发生故障的可能性。
在autovacuum 日志输出中增加每索引信息(Masahiko Sawada) §
允许对包含许多常量的 IN 子句使用哈希查找(James Coleman,David Rowley) §
以前代码总是顺序扫描值列表。
允许对表达式创建扩展统计信息(Tomas Vondra) §
这允许对一组表达式和列创建统计信息, 而不是像以前那样只能针对列。系统视图 pg_stats_ext_exprs 报告此类统计信息。
允许对 TID 范围进行高效的堆扫描(Edmund Horner,David Rowley) §
以前非等值 TID 规范需要顺序扫描。
修复 EXPLAIN CREATE TABLE AS 和 EXPLAIN CREATE MATERIALIZED VIEW 以遵守 IF NOT EXISTS(Bharath Rupireddy) §
以前,如果对象已存在,EXPLAIN 会失败。
在具有许多 CPU 和高会话数的系统上提高计算 MVCC 可见性快照的速度(Andres Freund) § § § § § §
这也提高了有许多空闲会话时的性能。
增加执行器方法以缓存嵌套循环连接内侧的结果(David Rowley) §
如果仅检查内侧的一小部分行,这很有用。 可通过服务器参数 enable_memoize 禁用。
改进并行顺序扫描的 I/O 性能(Thomas Munro,David Rowley) §
这通过将块分组分配给并行工作进程来实现。
允许引用多个外部表的查询并行执行外部表扫描(Robert Haas,Kyotaro Horiguchi,Thomas Munro,Etsuro Fujita) §
如果设置了 async_capable,postgres_fdw 支持这种类型的扫描。
这由 maintenance_io_concurrency 控制。
大幅提高 Unicode 规范化性能(John Naylor) § §
这加快了 normalize() 和 IS NORMALIZED 的速度。
增加对 TOAST 数据使用 LZ4 压缩的能力(Dilip Kumar) §
这可以在列级别设置,或通过服务器参数 default_toast_compression 设为默认值。 服务器必须使用 --with-lz4 编译才能支持此功能。默认设置仍为 pglz。
如果启用了服务器参数 compute_query_id, 在 pg_stat_activity、 EXPLAIN VERBOSE、csvlog 中显示查询 ID, 以及可选地在 log_line_prefix 中显示(Julien Rouhaud) § § § § §
由扩展计算的查询 ID 也将被显示。
改进自动清理和自动分析的日志记录(Stephen Frost,Jakub Wartak) §
如果启用了 track_io_timing, 则报告自动清理和自动分析的 I/O 时间。 同时报告自动分析的缓冲区读取和脏化速率。
在 log_connections 的输出中增加 客户端提供的原始用户名信息(Jacob Champion) §
增加系统视图 pg_stat_progress_copy 以报告 COPY 进度(Josef Šimánek,Matthias van de Meent) § §
增加系统视图 pg_stat_wal 以报告 WAL 活动(Masahiro Ikeda) § § §
增加系统视图 pg_stat_replication_slots 以报告复制槽活动(Masahiko Sawada,Amit Kapila,Vignesh C) § § § §
函数 pg_stat_reset_replication_slot() 可重置槽统计信息。
增加系统视图 pg_backend_memory_contexts 以报告会话内存使用情况(Atsushi Torikoshi,Fujii Masao) § §
增加函数 pg_log_backend_memory_contexts() 以输出任意后端的内存上下文(Atsushi Torikoshi) §
在 pg_stat_database 系统视图中增加会话统计信息(Laurenz Albe) §
在 pg_prepared_statements 中增加报告通用和自定义计划计数的列(Atsushi Torikoshi,Kyotaro Horiguchi) §
使归档进程在 pg_stat_activity 中可见(Kyotaro Horiguchi) §
增加等待事件 WalReceiverExit 以报告 WAL 接收器退出等待时间(Fujii Masao) §
实现信息模式视图 routine_column_usage 以跟踪函数和过程默认表达式引用的列(Peter Eisentraut) §
允许匹配 SSL 证书的专有名称(DN)用于客户端证书认证(Andrew Dunstan) §
新的 pg_hba.conf 选项 clientname=DN 允许与 CN 以外的证书属性进行比较,并可与 ident 映射组合使用。
允许 pg_hba.conf 和 pg_ident.conf 记录跨越多行(Fabien Coelho) §
行末的反斜杠允许记录内容续到下一行。
允许指定证书吊销列表(CRL)目录(Kyotaro Horiguchi) §
这由服务器参数 ssl_crl_dir 和 libpq 连接选项 sslcrldir 控制。以前只能指定 单个 CRL 文件。
允许任意长度的密码(Tom Lane,Nathan Bossart) §
增加服务器参数 idle_session_timeout 以关闭空闲会话(Li Japin) §
将 checkpoint_completion_target 的默认值改为 0.9(Stephen Frost) §
之前的默认值为 0.5。
允许在 log_line_prefix 中使用 %P 来报告并行工作进程的并行组领导者 PID(Justin Pryzby) §
允许 unix_socket_directories 以单独的、 逗号分隔的引号字符串指定路径(Ian Lawrence Barwick) §
以前所有路径必须在一个引号字符串中。
允许在启动时分配动态共享内存(Thomas Munro) §
这由 min_dynamic_shared_memory 控制。 这允许更多地使用大页面。
增加服务器参数 huge_page_size 以控制 Linux 上使用的大页面大小(Odin Ugedal) §
允许在服务器重载时更改 restore_command 设置(Sergei Kornilov) §
你也可以将 restore_command 设置为空字符串并重载, 以强制恢复仅从 pg_wal 目录读取。
增加服务器参数 log_recovery_conflict_waits 以报告长时间的恢复冲突等待(Bertrand Drouvot,Masahiko Sawada) § §
当主库以阻止备库重放的方式更改参数时,暂停热备库上的恢复(Peter Eisentraut) §
以前备库会立即关闭。
增加函数 pg_get_wal_replay_pause_state() 以报告恢复状态(Dilip Kumar) §
它比 pg_is_wal_replay_paused() 提供更详细的信息,后者仍然存在。
增加新的只读服务器参数 in_hot_standby (Haribabu Kommi,Greg Nancarrow,Tom Lane) §
这允许客户端轻松检测是否连接到热备库。
在具有大量共享缓冲区的集簇上加速恢复期间小表的截断(Kirk Jamison) §
允许在 Linux 上崩溃恢复开始时进行文件系统同步(Thomas Munro) §
默认情况下,PostgreSQL 在崩溃恢复开始时打开并 fsync 数据库集簇中的每个数据文件。 新设置 recovery_init_sync_method=syncfs 改为同步集簇使用的每个文件系统。 这允许在具有许多数据库文件的系统上更快地恢复。
增加函数 pg_xact_commit_timestamp_origin() 以返回指定事务的提交时间戳和复制来源(Movead Li) §
在 pg_last_committed_xact() 返回的记录中增加复制来源(Movead Li) §
允许使用标准函数权限控制来控制复制来源 函数(Martín Marqués) §
以前这些函数只能由超级用户执行,这仍然是默认值。
允许逻辑复制将长时间进行中的事务流式传输给订阅者(Dilip Kumar,Amit Kapila,Ajin Cherian,Tomas Vondra,Nikhil Sontakke,Stas Kelvich) § § § §
以前超过 logical_decoding_work_mem 的事务会被写入磁盘直到事务完成。
增强逻辑复制 API 以允许流式传输大型进行中事务(Tomas Vondra,Dilip Kumar,Amit Kapila) §
输出函数以 stream 开头。 test_decoding 也支持这些。
允许逻辑复制中表同步期间的多个事务(Peter Smith,Amit Kapila,Takamichi Osumi) §
立即将子事务和顶层 XID 关联写入 WAL 日志(Tomas Vondra,Dilip Kumar,Amit Kapila) §
这对逻辑解码有用。
增强逻辑解码 API 以处理两阶段提交(Ajin Cherian,Amit Kapila,Nikhil Sontakke,Stas Kelvich) § § §
在使用逻辑复制时,在命令完成时向 WAL 添加缓存失效消息(Dilip Kumar,Tomas Vondra,Amit Kapila) §
这允许逻辑流式传输进行中的事务。 当逻辑复制被禁用时,失效消息仅在事务完成时生成。
允许逻辑解码更高效地处理缓存失效消息(Dilip Kumar) §
这允许逻辑解码在存在大量 DDL 的情况下高效工作。
允许控制逻辑解码消息是否发送到复制流(David Pirotte,Euler Taveira) §
允许逻辑复制订阅使用二进制传输模式(Dave Cramer) §
这比文本模式更快,但略微不那么健壮。
允许逻辑解码按 xid 过滤(Markus Wanner) §
减少不使用 AS 就不能用作列标签的关键字数量(Mark Dilger) §
现在受限关键字减少了 90%。
允许为 JOIN 的 USING 子句指定别名(Peter Eisentraut) §
别名通过在 USING 子句后写 AS 来创建。 它可用作合并的 USING 列的表限定。
允许将 DISTINCT 添加到 GROUP BY 以移除重复的 GROUPING SET 组合(Vik Fearing) §
例如,GROUP BY CUBE (a,b), CUBE (b,c) 在没有 DISTINCT 的情况下会生成重复的分组组合。
正确处理 INSERT 中多行 VALUES 列表中的 DEFAULT 条目(Dean Rasheed) §
此类情况以前会抛出错误。
为公共表表达式增加 SQL 标准的 SEARCH 和 CYCLE 子句(Peter Eisentraut) § §
使用现有语法也可以达到相同的结果,但远没有这么方便。
允许 ON CONFLICT 的 WHERE 子句中的列名使用表限定(Tom Lane) §
但是,只能引用目标表。
允许 REFRESH MATERIALIZED VIEW 使用并行执行(Bharath Rupireddy) §
允许 REINDEX 更改新索引的表空间(Alexey Kondratov,Michael Paquier,Justin Pryzby) § §
这通过指定 TABLESPACE 子句来完成。 reindexdb 也增加了 --tablespace 选项来控制此功能。
允许 REINDEX 处理分区关系的所有子表或索引(Justin Pryzby,Michael Paquier) §
允许使用 CONCURRENTLY 的索引命令避免等待 其他使用 CONCURRENTLY 的操作完成(Álvaro Herrera) § § §
在视图定义中保留 SQL 定义函数的 SQL 标准语法(Tom Lane) §
以前,对 SQL 标准函数(如 EXTRACT()) 的调用以普通函数调用语法显示。现在显示视图或规则时会保留原始语法。
为 GRANT 和 REVOKE 增加 SQL 标准的 GRANTED BY 子句(Peter Eisentraut) §
为 CREATE TRIGGER 增加 OR REPLACE 选项(Takamichi Osumi) §
这允许有条件地替换已存在的触发器。
允许 TRUNCATE 操作外部表(Kazutaka Onishi,Kohei KaiGai) §
postgres_fdw 模块现在也支持此功能。
允许更方便地向订阅中添加和从中移除发布(Japin Li) §
新语法为 ALTER SUBSCRIPTION ... ADD/DROP PUBLICATION。这避免了需要指定所有发布来添加/移除条目。
为系统目录增加主键、唯一约束和外键(Peter Eisentraut) § §
这些更改帮助 GUI 工具分析系统目录。 目录现有的唯一索引现在具有关联的 UNIQUE 或 PRIMARY KEY 约束。外键关系实际上并未作为约束存储或实现, 但可通过函数 pg_get_catalog_foreign_keys() 获取以供显示。
在接受 CURRENT_USER 的每个地方都允许 CURRENT_ROLE(Peter Eisentraut) §
允许扩展和内置数据类型实现下标运算(Dmitry Dolgov) §
以前下标处理是在服务器中硬编码的,因此下标运算只能应用于数组类型。 此更改允许对任何有意义的类型使用下标记法来提取或赋值部分值。
允许对 JSONB 使用下标运算(Dmitry Dolgov) § § §
JSONB 下标运算可用于提取和赋值 JSONB 文档的部分内容。
增加对多范围数据类型的支持(Paul Jungwirth,Alexander Korotkov) § § § §
这类似于范围数据类型,但允许指定多个有序、不重叠的范围。 每个范围类型都会自动创建一个关联的多范围类型。
增加对亚美尼亚语、巴斯克语、加泰罗尼亚语、印地语、塞尔维亚语和意第绪语的 词干化支持(Peter Eisentraut) § § §
允许 tsearch 数据文件 具有无限行长度(Tom Lane) §
之前的限制为 4K 字节。同时移除函数 t_readline()。
增加对 numeric 数据类型中 Infinity 和 -Infinity 值的支持(Tom Lane) §
浮点数据类型已经支持这些值。
增加点操作符 <<| 和 |>> 表示严格在上方/下方测试(Emre Hasegeli) §
以前这些叫做 >^ 和 <^,但该命名与其他几何数据类型不一致。 旧名称仍然可用,但将来可能被移除。
为系统目录创建复合数组类型(Wenjing Zeng) §
用户定义的关系长期以来就有关联的复合类型,也有这些复合类型上的数组类型。 系统目录现在也是如此。此更改还修复了在单用户模式下 创建用户定义表时无法创建复合数组类型的不一致性。
允许 SQL 语言函数和过程使用 SQL 标准函数体(Peter Eisentraut) §
以前仅支持字符串字面量函数体。 以 SQL 标准语法编写函数或过程时,函数体会被立即解析并存储为解析树。 这允许更好地跟踪函数依赖关系,并具有安全优势。
允许某些数组函数在兼容数据类型的组合上操作(Tom Lane) §
函数 array_append()、 array_prepend()、 array_cat()、 array_position()、 array_positions()、 array_remove()、 array_replace() 和 width_bucket() 现在接受 anycompatiblearray 而不是 anyarray 参数。这使它们对参数类型的精确匹配要求更低。
增加 SQL 标准的 trim_array() 函数(Vik Fearing) §
使用数组切片也可以实现此功能,但不那么方便。
在 split_part() 中支持负索引(Nikhil Benesch) §
负值从最后一个字段开始向前计数。
增加 string_to_table() 函数以按分隔符拆分字符串(Pavel Stehule) §
这类似于 regexp_split_to_table() 函数。
增加 unistr() 函数以允许在字符串中以反斜杠十六进制转义形式指定 Unicode 字符(Pavel Stehule) §
这类似于在字面量字符串中指定 Unicode 的方式。
增加函数 bit_count() 以返回位或字节字符串中设置的位数(David Fetter) §
增加 date_bin() 函数(John Naylor) § §
此函数将输入时间戳进行“分箱”, 将它们分组到与指定原点对齐的均匀长度的区间中。
允许 make_timestamp()/make_timestamptz() 接受负年份(Peter Eisentraut) §
负值被解释为 BC 年。
增加更新的正则表达式 substring() 语法(Peter Eisentraut) §
新的 SQL 标准语法为 SUBSTRING(text SIMILAR pattern ESCAPE escapechar)。之前的标准语法 SUBSTRING(text FROM pattern FOR escapechar) 仍被 PostgreSQL 接受。
增加 [[:word:]] 作为正则表达式字符类,等同于 \w(Tom Lane) §
使非零浮点值除以无穷大返回零(Kyotaro Horiguchi) §
以前此类操作产生下溢错误。
使浮点 NaN 除以零返回 NaN(Tom Lane) §
以前这返回一个错误。
使 exp() 和 power() 在负无穷大指数时返回零(Tom Lane) § § §
以前它们经常返回下溢错误。
改进涉及无穷大的几何计算的精度(Tom Lane) §
尽可能将内置类型转换函数标记为防泄漏(Tom Lane) §
这允许在安全敏感情况下更多地使用需要类型转换的函数。
改变 pg_describe_object()、 pg_identify_object() 和 pg_identify_object_as_address(), 使其始终为不存在的对象报告有用的错误消息(Michael Paquier) §
为 libpq 增加管道模式(Craig Ringer,Matthieu Garrigues,Álvaro Herrera) §
这允许发送多个查询,仅在发送特定同步消息时等待完成。
增强 libpq 的 target_session_attrs 参数选项(Haribabu Kommi,Greg Nancarrow,Vignesh C,Tom Lane) § §
新选项为 read-only、 primary、standby 和 prefer-standby。
允许将 ECPG SQL 标识符链接到特定连接(Hayato Kuroda) §
这通过 DECLARE ... STATEMENT 完成。
允许 vacuumdb 跳过索引清理和截断(Nathan Bossart) §
选项为 --no-index-cleanup 和 --no-truncate。
允许 pg_dump 仅导出特定扩展(Guillaume Lelarge) §
这由选项 --extension 控制。
增加 pgbench 的 permute() 函数以随机打乱值(Fabien Coelho,Hironobu Suzuki,Dean Rasheed) §
在 pgbench 使用 -C 选项 测量的重连开销中包含断开连接时间(Yugo Nagata) §
允许多次指定详细选项(-v)以增加日志详细程度(Tom Lane) §
pg_dump、 pg_dumpall 和 pg_restore 支持此行为。
允许 psql 的 \df 和 \do 命令指定函数和操作符参数类型(Greg Sabino Mullane,Tom Lane) §
这有助于减少重载名称打印的匹配数。
在 psql 的 \d[i|m|t]+ 输出中增加访问方法列(Georgios Kokolatos) §
允许 psql 的 \dt 和 \di 显示 TOAST 表及其索引(Justin Pryzby) §
增加 psql 命令 \dX 以列出扩展统计对象(Tatsuro Yamada) §
修复 psql 的 \dT 以理解数组语法和后端语法别名, 如 int 代替 integer(Greg Sabino Mullane,Tom Lane) §
当使用 psql 的 \e 编辑 之前的查询或文件,或使用 \ef 和 \ev 时, 如果编辑器未保存就退出则忽略结果(Laurenz Albe) §
以前,这种编辑会将之前的查询加载到查询缓冲区中, 并且通常会立即执行。这被认为可能不是用户想要的。
改进 Tab 补全(Vignesh C,Michael Paquier,Justin Pryzby,Georgios Kokolatos,Julien Rouhaud) § § § § § § § § § § § § § § § § § §
增加命令行工具 pg_amcheck 以简化在多个关系上运行 contrib/amcheck 测试(Mark Dilger) §
为 initdb 增加 --no-instructions 选项(Magnus Hagander) §
这会抑制通常打印的服务器启动说明。
停止 pg_upgrade 创建 analyze_new_cluster 脚本(Magnus Hagander) §
取而代之的是给出类似的 vacuumdb 说明。
移除对 postmaster -o 选项的支持(Magnus Hagander) §
此选项是不必要的,因为所有传递的选项都已经可以直接指定。
增加 factorial() 函数的文档(Peter Eisentraut) §
随着此版本移除了 ! 操作符,factorial() 是计算阶乘的唯一内置方式。
增加 configure 选项 --with-ssl={openssl} 以允许将来选择要使用的 SSL 库(Daniel Gustafsson,Michael Paquier) §
保留 --with-openssl 拼写以兼容。
增加对抽象 Unix 域套接字的支持(Peter Eisentraut) §
目前在 Linux 和 Windows 上受支持。
允许 Windows 正确处理大于 4GB 的文件(Juan José Santamaría Flecha) §
增加服务器参数 debug_discard_caches 以控制用于测试目的的缓存刷新(Craig Ringer) § § §
以前此行为只能在编译时设置。要在 initdb 期间 调用它,使用新选项 --discard-caches。
增加正则表达式包的测试模块(Tom Lane) §
增加对 LLVM 版本 12 的支持(Andres Freund) §
将 SHA1、SHA2 和 MD5 哈希计算改为使用 OpenSSL EVP API(Michael Paquier) § § § §
这更加现代并支持 FIPS 模式。
移除对随机数生成器选择的单独构建时控制(Daniel Gustafsson) §
现在始终由 SSL 库的选择决定。
增加 EUC_TW 和 Big5 编码之间的直接转换例程(Heikki Linnakangas) §
增加 FreeBSD 的排序规则版本支持(Thomas Munro) §
在索引访问方法 API 中增加 amadjustmembers(Tom Lane) §
这允许索引访问方法在创建新操作符类或族时提供有效性检查。
在 libpq-fe.h 中提供最近添加的 libpq 功能的特性测试宏(Tom Lane,Álvaro Herrera) §
历史上,应用程序通常使用 PG_VERSION_NUM 的编译时检查来测试功能是否可用。但那通常是服务器版本, 可能不能很好地指导 libpq 的版本。 libpq-fe.h 现在提供 #define 符号表示 v14 中添加的应用程序可见功能; 意图是在将来的版本中继续为此类功能添加符号。
允许 GiST/GIN pg_trgm 索引 进行等值查找(Julien Rouhaud) §
这类似于 LIKE,只是不识别通配符。
允许 pgstattuple_approx() 报告 TOAST 表(Peter Eisentraut) §
增加 contrib 模块 pg_surgery 以允许更改行可见性(Ashutosh Sharma) §
这对于修复数据库损坏很有用。
增加 contrib 模块 old_snapshot, 用于报告活动的 old_snapshot_threshold 所使用的 XID/时间映射(Robert Haas) §
允许 amcheck 也检查堆页面(Mark Dilger) §
以前它只检查 B-Tree 索引页面。
允许 pageinspect 检查 GiST 索引(Andrey Borodin,Heikki Linnakangas) § §
将 btree_gist 函数标记为并行安全(Steven Winfield) §
将查询哈希计算从 pg_stat_statements 移至核心服务器(Julien Rouhaud) §
新服务器参数 compute_query_id 的 默认值 auto 将在加载此扩展时自动启用查询 ID 计算。
使 pg_stat_statements 分别跟踪顶层和嵌套语句(Julien Rohaud) §
以前,在跟踪所有语句时,相同的顶层和嵌套语句被作为单个条目跟踪; 但分开此类用法似乎更有用。
为 pg_stat_statements 增加工具命令的行计数(Fujii Masao,Katsuragi Yuta,Seino Yuki) § §
增加 pg_stat_statements_info 系统视图 以显示 pg_stat_statements 活动(Katsuragi Yuta,Yuki Seino,Naoki Nakamichi) § §
允许 postgres_fdw 批量 INSERT 行(Takayuki Tsunakawa,Tomas Vondra,Amit Langote) § §
允许 postgres_fdw 在 IMPORT FOREIGN SCHEMA ... LIMIT TO 指定时导入表分区(Matthias van de Meent) §
默认情况下,仅导入分区表的根表。
增加 postgres_fdw 函数 postgres_fdw_get_connections() 以报告打开的外部服务器连接(Bharath Rupireddy) §
允许控制外部服务器在事务完成后是否保持连接打开(Bharath Rupireddy) §
这由 keep_connections 控制,默认为开启。
允许 postgres_fdw 在必要时重新连接到外部服务器(Bharath Rupireddy) § §
以前外部服务器重启可能导致外部表访问错误。
增加 postgres_fdw 函数以丢弃缓存的连接(Bharath Rupireddy) §
以下人员(按字母顺序排列)作为补丁作者、提交者、审查者、测试者 或问题报告者为本版本做出了贡献。
| Abhijit Menon-Sen |
| Ádám Balogh |
| Adrian Ho |
| Ahsan Hadi |
| Ajin Cherian |
| Aleksander Alekseev |
| Alessandro Gherardi |
| Alex Kozhemyakin |
| Alexander Korotkov |
| Alexander Lakhin |
| Alexander Nawratil |
| Alexander Pyhalov |
| Alexandra Wang |
| Alexey Bashtanov |
| Alexey Bulgakov |
| Alexey Kondratov |
| Álvaro Herrera |
| Amit Kapila |
| Amit Khandekar |
| Amit Langote |
| Amul Sul |
| Anastasia Lubennikova |
| Andreas Grob |
| Andreas Kretschmer |
| Andreas Seltenreich |
| Andreas Wicht |
| Andres Freund |
| Andrew Bille |
| Andrew Dunstan |
| Andrew Gierth |
| Andrey Borodin |
| Andrey Lepikhov |
| Andy Fan |
| Anton Voloshin |
| Antonin Houska |
| Arne Roland |
| Arseny Sher |
| Arthur Nascimento |
| Arthur Zakirov |
| Ashutosh Bapat |
| Ashutosh Sharma |
| Ashwin Agrawal |
| Asif Rehman |
| Asim Praveen |
| Atsushi Torikoshi |
| Aya Iwata |
| Barry Pederson |
| Bas Poot |
| Bauyrzhan Sakhariyev |
| Beena Emerson |
| Benoît Lobréau |
| Bernd Helmle |
| Bernhard M. Wiedemann |
| Bertrand Drouvot |
| Bharath Rupireddy |
| Boris Kolpackov |
| Brar Piening |
| Brian Ye |
| Bruce Momjian |
| Bryn Llewellyn |
| Cameron Daniel |
| Chapman Flack |
| Charles Samborski |
| Charlie Hornsby |
| Chen Jiaoqian |
| Chris Wilson |
| Christian Quest |
| Christoph Berg |
| Christophe Courtois |
| Corey Huinker |
| Craig Ringer |
| Dagfinn Ilmari Mannsåker |
| Dana Burd |
| Daniel Cherniy |
| Daniel Gustafsson |
| Daniel Vérité |
| Daniel Westermann |
| Daniele Varrazzo |
| Dar Alathar-Yemen |
| Darafei Praliaskouski |
| Dave Cramer |
| David Christensen |
| David Fetter |
| David G. Johnston |
| David Geier |
| David Gilman |
| David Pirotte |
| David Rowley |
| David Steele |
| David Turon |
| David Zhang |
| Dean Rasheed |
| Denis Patron |
| Dian Fay |
| Dilip Kumar |
| Dimitri Nüscheler |
| Dmitriy Kuzmin |
| Dmitry Dolgov |
| Dmitry Marakasov |
| Domagoj Smoljanovic |
| Dong Wook |
| Douglas Doole |
| Duncan Sands |
| Edmund Horner |
| Edson Richter |
| Egor Rogov |
| Ekaterina Kiryanova |
| Elena Indrupskaya |
| Emil Iggland |
| Emre Hasegeli |
| Eric Thinnes |
| Erik Rijkers |
| Erwin Brandstetter |
| Etienne Stalmans |
| Etsuro Fujita |
| Eugen Konkov |
| Euler Taveira |
| Fabien Coelho |
| Fabrízio de Royes Mello |
| Federico Caselli |
| Felix Lechner |
| Filip Gospodinov |
| Floris Van Nee |
| Frank Gagnepain |
| Frits Jalvingh |
| Georgios Kokolatos |
| Greg Nancarrow |
| Greg Rychlewski |
| Greg Sabino Mullane |
| Gregory Smith |
| Grigory Smolkin |
| Guillaume Lelarge |
| Guy Burgess |
| Guyren Howe |
| Haiying Tang |
| Hamid Akhtar |
| Hans Buschmann |
| Hao Wu |
| Haribabu Kommi |
| Harisai Hari |
| Hayato Kuroda |
| Heath Lord |
| Heikki Linnakangas |
| Henry Hinze |
| Herwig Goemans |
| Himanshu Upadhyaya |
| Hironobu Suzuki |
| Hiroshi Inoue |
| Hisanori Kobayashi |
| Honza Horak |
| Hou Zhijie |
| Hubert Lubaczewski |
| Hubert Zhang |
| Ian Barwick |
| Ibrar Ahmed |
| Ildus Kurbangaliev |
| Isaac Morland |
| Israel Barth |
| Itamar Gafni |
| Jacob Champion |
| Jaime Casanova |
| Jaime Soler |
| Jakub Wartak |
| James Coleman |
| James Hilliard |
| James Hunter |
| James Inform |
| Jan Mussler |
| Japin Li |
| Jasen Betts |
| Jason Harvey |
| Jason Kim |
| Jeevan Ladhe |
| Jeff Davis |
| Jeff Janes |
| Jelte Fennema |
| Jeremy Evans |
| Jeremy Finzel |
| Jeremy Smith |
| Jesse Kinkead |
| Jesse Zhang |
| Jie Zhang |
| Jim Doty |
| Jim Nasby |
| Jimmy Angelakos |
| Jimmy Yih |
| Jiri Fejfar |
| Joe Conway |
| Joel Jacobson |
| John Naylor |
| John Thompson |
| Jonathan Katz |
| Josef Šimánek |
| Joseph Nahmias |
| Josh Berkus |
| Juan José Santamaría Flecha |
| Julien Rouhaud |
| Junfeng Yang |
| Jürgen Purtz |
| Justin Pryzby |
| Kazutaka Onishi |
| Keisuke Kuroda |
| Kelly Min |
| Kensuke Okamura |
| Kevin Sweet |
| Kevin Yeap |
| Kirk Jamison |
| Kohei KaiGai |
| Konstantin Knizhnik |
| Kota Miyake |
| Krzysztof Gradek |
| Kuntal Ghosh |
| Kyle Kingsbury |
| Kyotaro Horiguchi |
| Laurent Hasson |
| Laurenz Albe |
| Lee Dong Wook |
| Li Japin |
| Liu Huailing |
| Luc Vlaming |
| Ludovic Kuty |
| Luis Roberto |
| Lukas Eder |
| Ma Liangzhu |
| Maciek Sakrejda |
| Madan Kumar |
| Magnus Hagander |
| Mahendra Singh Thalor |
| Maksim Milyutin |
| Marc Boeren |
| Marcin Krupowicz |
| Marco Atzeri |
| Marek Szuba |
| Marina Polyakova |
| Mario Emmenlauer |
| Mark Dilger |
| Mark Wong |
| Mark Zhao |
| Markus Wanner |
| Martín Marqués |
| Martin Visser |
| Masahiko Sawada |
| Masahiro Ikeda |
| Masao Fujii |
| Mathis Rudolf |
| Matthias van de Meent |
| Matthieu Garrigues |
| Matthijs van der Vleuten |
| Maxim Orlov |
| Melanie Plageman |
| Merlin Moncure |
| Michael Banck |
| Michael Brown |
| Michael Meskes |
| Michael Paquier |
| Michael Paul Killian |
| Michael Powers |
| Michael Vastola |
| Michail Nikolaev |
| Michal Albrycht |
| Mikael Gustavsson |
| Movead Li |
| Muhammad Usama |
| Nagaraj Raj |
| Naoki Nakamichi |
| Nathan Bossart |
| Nathan Long |
| Nazli Ugur Koyluoglu |
| Neha Sharma |
| Neil Chen |
| Nick Cleaton |
| Nico Williams |
| Nikhil Benesch |
| Nikhil Sontakke |
| Nikita Glukhov |
| Nikita Konev |
| Nikolai Berkoff |
| Nikolay Samokhvalov |
| Nikolay Shaplov |
| Nitin Jadhav |
| Noah Misch |
| Noriyoshi Shinoda |
| Odin Ugedal |
| Oleg Bartunov |
| Oleg Samoilov |
| Önder Kalaci |
| Pascal Legrand |
| Paul Förster |
| Paul Guo |
| Paul Jungwirth |
| Paul Martinez |
| Paul Sivash |
| Pavan Deolasee |
| Pavel Boev |
| Pavel Borisov |
| Pavel Luzanov |
| Pavel Stehule |
| Pengcheng Liu |
| Peter Eisentraut |
| Peter Geoghegan |
| Peter Smith |
| Peter Vandivier |
| Petr Fedorov |
| Petr Jelínek |
| Phil Krylov |
| Philipp Gramzow |
| Philippe Beaudoin |
| Phillip Menke |
| Pierre Giraud |
| Prabhat Sahu |
| Quan Zongliang |
| Rafi Shamim |
| Rahila Syed |
| Rajkumar Raghuwanshi |
| Ranier Vilela |
| Regina Obe |
| Rémi Lapeyre |
| Robert Foggia |
| Robert Grange |
| Robert Haas |
| Robert Kahlert |
| Robert Sosinski |
| Robert Treat |
| Robin Abbi |
| Robins Tharakan |
| Roger Mason |
| Rohit Bhogate |
| Roman Zharkov |
| Ron L. Johnson |
| Ronan Dunklau |
| Ryan Lambert |
| Ryo Matsumura |
| Saeed Hubaishan |
| Sait Talha Nisanci |
| Sandro Mani |
| Santosh Udupi |
| Scott Ribe |
| Sehrope Sarkuni |
| Sergei Kornilov |
| Sergey Bernikov |
| Sergey Cherkashin |
| Sergey Koposov |
| Sergey Shinderuk |
| Sergey Zubkovsky |
| Shawn Wang |
| Shay Rojansky |
| Shi Yu |
| Shinya Kato |
| Shinya Okano |
| Sigrid Ehrenreich |
| Simon Norris |
| Simon Riggs |
| Sofoklis Papasofokli |
| Soumyadeep Chakraborty |
| Stas Kelvich |
| Stephan Springl |
| Stéphane Lorek |
| Stephen Frost |
| Steven Winfield |
| Surafel Temesgen |
| Suraj Kharage |
| Sven Klemm |
| Takamichi Osumi |
| Takashi Menjo |
| Takayuki Tsunakawa |
| Tang Haiying |
| Tatsuhito Kasahara |
| Tatsuo Ishii |
| Tatsuro Yamada |
| Theodor Arsenij Larionov-Trichkin |
| Thomas Kellerer |
| Thomas Munro |
| Thomas Trenz |
| Tijs van Dam |
| Tom Ellis |
| Tom Gottfried |
| Tom Lane |
| Tom Vijlbrief |
| Tomas Barton |
| Tomas Vondra |
| Tomohiro Hiramitsu |
| Tony Reix |
| Vaishnavi Prabakaran |
| Valentin Gatien-Baron |
| Victor Wagner |
| Victor Yegorov |
| Vignesh C |
| Vik Fearing |
| Vitaly Ustinov |
| Vladimir Sitnikov |
| Vyacheslav Shablistyy |
| Wang Shenhao |
| Wei Wang |
| Wells Oliver |
| Wenjing Zeng |
| Wolfgang Walther |
| Yang Lin |
| Yanliang Lei |
| Yaoguang Chen |
| Yaroslav Pashinsky |
| Yaroslav Schekin |
| Yasushi Yamashita |
| Yoran Heling |
| YoungHwan Joo |
| Yugo Nagata |
| Yuki Seino |
| Yukun Wang |
| Yulin Pei |
| Yura Sokolov |
| Yuta Katsuragi |
| Yuta Kondo |
| Yuzuko Hosoya |
| Zhihong Yu |
| Zhiyong Wu |
| Zsolt Ero |