# E.3. Release 14
E.3.1. OverviewE.3.2. Migration to Version 14E.3.3. ChangesE.3.4. Acknowledgments
**Release date:**2021-09-30
# E.3.1. Overview
PostgreSQL 14 contains many new features and enhancements, including:
Stored procedures can now return data via
OUT
parameters.The SQL-standard
SEARCH
andCYCLE
options for common table expressions have been implemented.Subscripting can now be applied to any data type for which it is a useful notation, not only arrays. In this release, the
jsonb
andhstore
types have gained subscripting operators.Range types have been extended by adding multiranges, allowing representation of noncontiguous data ranges.
Numerous performance improvements have been made for parallel queries, heavily-concurrent workloads, partitioned tables, logical replication, and vacuuming.
B-tree index updates are managed more efficiently, reducing index bloat.
VACUUM
automatically becomes more aggressive, and skips inessential cleanup, if the database starts to approach a transaction ID wraparound condition.Extended statistics can now be collected on expressions, allowing better planning results for complex queries.
libpq now has the ability to pipeline multiple queries, which can boost throughput over high-latency connections.
The above items and other new features of PostgreSQL 14 are explained in more detail in the sections below.
# E.3.2. Migration to Version 14
A dump/restore usingpg_dumpallor use ofpg_upgradeor logical replication is required for those wishing to migrate data from any previous release. SeeSection 19.6for general information on migrating to new major releases.
Version 14 contains a number of changes that may affect compatibility with previous releases. Observe the following incompatibilities:
User-defined objects that reference certain built-in array functions along with their argument types must be recreated (Tom Lane)
Specifically,
array_append()
,array_prepend()
,array_cat()
,array_position()
,array_positions()
,array_remove()
,array_replace()
, andwidth_bucket()
用来拿任意数组
论据,但现在采取任何兼容数组
.因此,用户定义的对象(如引用这些数组函数签名的聚合和运算符)必须在升级之前删除,并在升级完成后重新创建。删除不推荐使用的包含操作符
@
和~
用于内置几何数据类型和贡献模块立方体,hstore,数组内, 和段(贾斯汀·普里兹比)更一致的命名
<@
和@>
已经推荐了很多年。使固定
to_tsquery()
和websearch_to_tsquery()
正确解析包含丢弃标记的查询文本 (Alexander Korotkov)某些丢弃的标记,如下划线,导致这些函数的输出产生不正确的 tsquery 输出,例如,两者
websearch_to_tsquery('"pg_class pg"')
和to_tsquery('pg_class <-> pg')
用来输出('pg' & 'class') <-> 'pg'
,但现在都输出'pg' <-> '类' <-> 'pg'
.使固定
websearch_to_tsquery()
正确解析引号中的多个相邻丢弃标记 (Alexander Korotkov)以前,包含多个相邻丢弃标记的引用文本被视为多个标记,导致不正确的 tsquery 输出,例如,
websearch_to_tsquery('"aaa: bbb"')
用来输出'aaa' <2> 'bbb'
,但现在输出'aaa' <-> 'bbb'
.改变
提炼()
返回类型数字
代替浮动8
(彼得·艾森特劳特)这避免了某些用法中的精度损失问题。旧的行为仍然可以通过使用旧的底层函数来获得
日期部分()
.还,
摘录(日期)
现在对不属于日期
数据类型。改变
var_samp()
和stddev_samp()
当输入为单个 NaN 值时,使用数字参数返回 NULL (Tom Lane)之前
钠
被退回。返回 false 为
has_column_privilege()
使用属性号时检查不存在或删除的列 (Joe Conway)以前,此类属性编号会返回无效列错误。
修复无限处理窗口函数范围(汤姆·莱恩)
以前的窗框子句如
'inf' 前面和 'inf' 下面
返回不正确的结果。删除阶乘运算符
!
和!!
, 以及函数numeric_fac()
(马克·迪尔格)这
阶乘()
功能仍受支持。不允许
阶乘()
负数 (Peter Eisentraut)以前此类案例返回 1.
删除对后缀(右一元)运算符(Mark Dilger)
皮克_转储和 pg_如果 postfix 运算符被转储,升级将发出警告。
允许
\D
和\W
匹配换行符的简写正则表达式换行敏感模式 (Tom Lane)以前它们在此模式下不匹配换行符,但这与其他常见正则表达式引擎的行为不一致。
[^[:数字:]]
要么[^[:word:]]
可用于获取旧行为。匹配正则表达式时忽略约束反向引用(汤姆·莱恩)
例如,在
(^\d+).*\1
, 这^
约束应该在字符串的开头应用,但不是在匹配时\1
.不允许
\w
作为正则表达式字符类中的范围开始或结束 (Tom Lane)这以前是允许的,但产生了意想不到的结果。
要求自定义服务器参数名称仅使用在不带引号的 SQL 标识符中有效的字符 (Tom Lane)
更改默认值密码_加密服务器参数为
scram-sha-256
(彼得·艾森特劳特)以前是
md5
.除非更改此服务器设置或以 MD5 格式指定密码,否则所有新密码都将存储为 SHA256.此外,遗留的(和未记录的)类似布尔值的值是以前的同义词md5
不再被接受。删除服务器参数
vacuum_cleanup_index_scale_factor
(彼得·吉根)从 PostgreSQL 版本 13.3 开始,此设置被忽略。
删除服务器参数
operator_precedence_warning
(汤姆·莱恩)此设置用于警告应用程序有关 PostgreSQL 9.5 更改。
大修规范
客户证书
在pg_hba.conf
(堀口京太郎)价值观
1
/0
/不验证
不再支持;只有字符串验证-ca
和验证完整
可以使用。还有,不允许验证-ca
如果启用了证书身份验证,因为证书需要验证完整
检查。删除对SSL压缩(丹尼尔·古斯塔夫森、迈克尔·帕奎尔)
这在以前的 PostgreSQL 版本中已经默认禁用,大多数现代 OpenSSL 和 TLS 版本不再支持它。
-
这是最后一次在 PostgreSQL 7.3(2002 年发布)中用作默认值。
不允许在
创建/删除语言
命令(彼得·艾森特劳特)除掉复合类型以前为序列和吐司表创建的 (Tom Lane)
处理双引号心电图SQL 命令字符串正确 (Tom Lane)
之前
'abc''定义'
被传递到服务器作为'abc'定义'
, 和“ABC”“定义”
被通过了“ABC”定义
,导致语法错误。防止收容操作员(
<@
和@>
) 为了数组内从使用 GiST 索引 (Tom Lane)以前需要完整的 GiST 索引扫描,所以只需避免这种情况并扫描堆,这样会更快。应删除为此目的创建的索引。
删除贡献程序 pg_standby (Justin Pryzby)
Preventtablefunc's function
normal_rand()
from accepting negative values (Ashutosh Bapat)Negative values produced undesirable results.
# E.3.3. Changes
Below you will find a detailed account of the changes between PostgreSQL 14 and the previous major release.
# E.3.3.1. Server
Add predefined roles
pg_read_all_data
andpg_write_all_data
(Stephen Frost)These non-login roles can be used to give read or write permission to all tables, views, and sequences.
Add predefined role
pg_database_owner
that contains only the current database's owner (Noah Misch)This is especially useful in template databases.
Remove temporary files after backend crashes (Euler Taveira)
Previously, such files were retained for debugging purposes. If necessary, deletion can be disabled with the new server parameterremove_temp_files_after_碰撞.
如果客户端断开连接,则允许取消长时间运行的查询 (Sergey Cherkashin, Thomas Munro)
服务器参数客户_联系_查看_间隔允许控制是否检查内部查询的连接丢失。(这在 Linux 和一些其他操作系统上受支持。)
添加一个可选的超时参数到
pg_terminate_backend()
(马格努斯·哈根德)允许始终将宽元组添加到几乎为空的堆页面(John Naylor,Floris van Nee)
以前插入的元组会超过页面的填充因子而是添加到新页面。
在 SSL 连接数据包中添加服务器名称指示 (SNI) (Peter Eisentraut)
这可以通过关闭客户端连接选项来禁用
sslsni
.
# E.3.3.1.1.吸尘
当可移动索引条目的数量微不足道时,允许清理以跳过索引清理(Masahiko Sawada,Peter Geoghegan)
真空参数
INDEX_CLEANUP
有一个新的默认值汽车
启用此优化。允许真空更急切地将已删除的 btree 页面添加到可用空间映射 (Peter Geoghegan)
以前,vacuum 只能将页面添加到被之前的vacuum 标记为已删除的可用空间映射中。
允许真空回收未使用的尾随堆行指针使用的空间 (Matthias van de Meent, Peter Geoghegan)
允许真空在最小锁定索引操作期间更积极地删除死行 (Álvaro Herrera)
具体来说,
并发创建索引
和同时重新索引
不再限制其他关系的死排移除。加快清理具有许多关系的数据库(Tatsuhito Kasahara)
减少默认值真空_成本_页_错过更好地反映当前的硬件能力 (Peter Geoghegan)
添加跳过 TOAST 表清理的功能 (Nathan Bossart)
真空
现在有一个PROCESS_TOAST
可以设置为 false 以禁用 TOAST 处理的选项,以及真空数据库有一个--no-process-toast
选项。有
复制冻结
适当更新页面可见性位(Anastasia Lubennikova、Pavan Deolasee、Jeff Janes)如果表靠近 xid 或 multixact 环绕,则使真空操作更加激进(Masahiko Sawada,Peter Geoghegan)
在事务 id 和多事务环绕之前增加警告时间和硬限制 (Noah Misch)
这应该会减少在未发出有关环绕的警告的情况下发生故障的可能性。
将每个索引信息添加到自动真空记录输出(泽田正彦)
# E.3.3.1.2.分区
提高具有许多分区的分区表的更新和删除性能(Amit Langote,Tom Lane)
这种变化极大地减少了规划器在这种情况下的开销,并且还允许对分区表的更新/删除使用执行时分区修剪。
允许分区分离的in a non-blocking manner (Álvaro Herrera)
The syntax is
ALTER TABLE ... DETACH PARTITION ... CONCURRENTLY
, andFINALIZE
.Ignore
COLLATE
clauses in partition boundary values (Tom Lane)Previously any such clause had to match the collation of the partition key; but it's more consistent to consider that it's automatically coerced to the collation of the partition key.
# E.3.3.1.3. Indexes
Allow btree index additions toremove expired index entriesto prevent page splits (Peter Geoghegan)
This is particularly helpful for reducing index bloat on tables whose indexed columns are frequently updated.
AllowBRINindexes to record multiple min/max values per range (Tomas Vondra)
This is useful if there are groups of values in each page range.
Allow BRIN indexes to use bloom filters (Tomas Vondra)
This allows BRIN indexes to be used effectively with data that is not well-localized in the heap.
Allow someGiSTindexes to be built by presorting the data (Andrey Borodin)
Presorting happens automatically and allows for faster index creation and smaller indexes.
AllowSP-GiSTindexes to contain
INCLUDE
'd columns (Pavel Borisov)
# E.3.3.1.4. Optimizer
Allow hash lookup for
IN
clauses with many constants (James Coleman, David Rowley)Previously the code always sequentially scanned the list of values.
Increase the number of placesextended statisticscan be used for
OR
clause estimation (Tomas Vondra, Dean Rasheed)Allow extended statistics on expressions (Tomas Vondra)
This allows statistics on a group of expressions and columns, rather than only columns like previously. System view
pg_stats_ext_exprs
reports such statistics.Allow efficient heap scanning of a range of
TIDs
(Edmund Horner, David Rowley)Previously a sequential scan was required for non-equality
TID
specifications.Fix
EXPLAIN CREATE TABLE AS
andEXPLAIN CREATE MATERIALIZED VIEW
to honorIF NOT EXISTS
(Bharath Rupireddy)Previously, if the object already existed,
EXPLAIN
would fail.
# E.3.3.1.5. General Performance
Improve the speed of computing MVCCvisibility snapshotson systems with many CPUs and high session counts (Andres Freund)
This also improves performance when there are many idle sessions.
Add executor method to memoize results from the inner side of a nested-loop join (David Rowley)
This is useful if only a small percentage of rows is checked on the inner side. It can be disabled via server parameterenable_memoize.
Allowwindow functionsto perform incremental sorts (David Rowley)
Improve the I/O performance of parallel sequential scans (Thomas Munro, David Rowley)
This was done by allocating blocks in groups toparallel workers.
Allow a query referencing multipleforeign tablesto perform foreign table scans in parallel (Robert Haas, Kyotaro Horiguchi, Thomas Munro, Etsuro Fujita)
postgres_fdwsupports this type of scan if
async_capable
is set.Allowanalyzeto do page prefetching (Stephen Frost)
This is controlled bymaintenance_io_concurrency.
Improve performance ofregular expressionsearches (Tom Lane)
Dramatically improve Unicode normalization performance (John Naylor)
This speeds
normalize()
andIS NORMALIZED
.Add ability to useLZ4 compressionon TOAST data (Dilip Kumar)
This can be set at the column level, or set as a default via server parameterdefault_toast_compression. The server must be compiled with
--with-lz4
to support this feature. The default setting is still pglz.
# E.3.3.1.6. Monitoring
If server parameter计算_询问_id启用,显示查询ID
pg_stat_activity
,详细解释
,csv日志,并且可选地在日志_线_字首(朱利安·鲁豪)还将显示由扩展程序计算的查询 ID。
改进日志记录自动真空和自动分析(Stephen Frost,Jakub Wartak)
这会报告自动清空和自动分析的 I/O 时序,如果追踪_io_定时已启用。此外,报告缓冲区读取率和脏率以进行自动分析。
将有关客户端提供的原始用户名的信息添加到log_connections(Jacob Champion)
# E.3.3.1.7. System Views
Add system view
pg_stat_progress_copy
to reportCOPY
progress (Josef Šimánek, Matthias van de Meent)Add system view
pg_stat_wal
to report WAL activity (Masahiro Ikeda)Add system view
pg_stat_replication_slots
to report replication slot activity (Masahiko Sawada, Amit Kapila, Vignesh C)The function
pg_stat_reset_replication_slot()
resets slot statistics.Add system view
pg_backend_memory_contexts
to report session memory usage (Atsushi Torikoshi, Fujii Masao)Add function
pg_log_backend_memory_contexts()
to output the memory contexts of arbitrary backends (Atsushi Torikoshi)Add session statistics to the
pg_stat_database
system view (Laurenz Albe)Add columns to
pg_prepared_statements
to report generic and custom plan counts (Atsushi Torikoshi, Kyotaro Horiguchi)Add lock wait start time to
pg_locks
(Atsushi Torikoshi)Make the archiver process visible in
pg_stat_activity
(Kyotaro Horiguchi)Add wait event
WalReceiverExit
to report WAL receiver exit wait time (Fujii Masao)Implement information schema view
routine_column_usage
to track columns referenced by function and procedure default expressions (Peter Eisentraut)
# E.3.3.1.8. Authentication
Allow an SSL certificate's distinguished name (DN) to be matched for client certificate authentication (Andrew Dunstan)
The new
pg_hba.conf
optionclientname=DN
allows comparison with certificate attributes beyond theCN
and can be combined with ident maps.Allow
pg_hba.conf
andpg_ident.conf
records to span multiple lines (Fabien Coelho)A backslash at the end of a line allows record contents to be continued on the next line.
Allow the specification of a certificate revocation list (CRL) directory (Kyotaro Horiguchi)
This is controlled by server parameterssl_crl_dirand libpq connection optionsslcrldir. Previously only single CRL files could be specified.
Allow passwords of an arbitrary length (Tom Lane, Nathan Bossart)
# E.3.3.1.9. Server Configuration
Add server parameteridle_session_timeoutto close idle sessions (Li Japin)
This is similar toidle_in_transaction_session_timeout.
Changecheckpoint_完成_目标默认为 0.9(斯蒂芬弗罗斯特)
之前的默认值为 0.5.
允许
%P
在日志_线_字首报告并行工作人员的并行组长的 PID (Justin Pryzby)允许unix_插座_目录将路径指定为单独的、逗号分隔的引号字符串 (Ian Lawrence Barwick)
以前,所有路径都必须在单引号字符串中。
允许动态共享内存的启动分配 (Thomas Munro)
这是由分钟_动态的_共享_记忆力.这样可以更多地使用大型页面。
添加服务器参数巨大的_页_大小控制Linux上使用的巨大页面的大小(Odin Ugedal)
# E.3.3.2.流式复制和恢复
允许备用服务器通过pg_重绕(Heikki Linnakangas)
允许恢复_命令服务器重新加载期间要更改的设置(Sergei Kornilov)
你也可以设置
恢复命令
到空字符串并重新加载,以强制恢复仅从普格沃尔
目录添加服务器参数日志_恢复_冲突_等待报告恢复冲突等待时间长(Bertrand Drouvot,Masahiko Sawada)
如果主服务器更改其参数以防止在备用服务器上重播,则暂停热备用服务器上的恢复 (Peter Eisentraut)
以前备用服务器会立即关闭。
添加功能
pg_get_wal_replay_pause_state()
报告恢复状态 (Dilip Kumar)它提供了比
pg_is_wal_replay_paused()
,它仍然存在。添加新的只读服务器参数在_热的_支持(哈里巴布·科米、格雷格·南卡罗、汤姆·莱恩)
这允许客户端轻松检测它们是否连接到热备用服务器。
在具有大量共享缓冲区的集群上恢复期间快速截断小表 (Kirk Jamison)
在 Linux 上的崩溃恢复开始时允许文件系统同步 (Thomas Munro)
默认情况下,PostgreSQL 在崩溃恢复开始时打开并 fsync 数据库集群中的每个数据文件。新设定,恢复_在里面_同步_方法
=同步文件
,而是同步集群使用的每个文件系统。这允许在具有许多数据库文件的系统上更快地恢复。添加功能
pg_xact_commit_timestamp_origin()
返回指定事务的提交时间戳和复制源(Movead Li)将复制源添加到返回的记录中
pg_last_committed_xact()
(移动李)允许复制原点函数使用标准功能权限控件进行控制 (Martín Marqués)
以前这些功能只能由超级用户执行,这仍然是默认设置。
# E.3.3.2.1.逻辑复制
允许逻辑复制向订阅者传输长时间的正在进行的事务(Dilip Kumar、Amit Kapila、Ajin Cherian、Tomas Vondra、Nikhil Sontakke、Stas Kelvich)
以前的交易超过合乎逻辑的_解码_工作_内存被写入磁盘直到事务完成。
增强逻辑复制 API 以允许流式处理大型正在进行的事务(Tomas Vondra、Dilip Kumar、Amit Kapila)
输出函数以
溪流
.测试_解码也支持这些。在逻辑复制中的表同步期间允许多个事务 (Peter Smith, Amit Kapila, Takamichi Osumi)
立即 WAL-log 子事务和顶级
XID
协会(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)
# E.3.3.3.选择
,插入
减少不能用作列标签的关键字数量
作为
(马克·迪尔格)现在受限关键字减少了 90%。
允许指定别名
加入
的使用
子句(彼得·艾森特劳特)别名是通过编写创建的
作为
之后使用
条款。它可以用作合并的表限定使用
列。允许
清楚的
要添加到通过...分组
删除重复的分组集
组合(维克恐惧)例如,
按多维数据集 (a,b)、多维数据集 (b,c) 分组
将生成重复的分组组合清楚的
.妥善处理
默认
多行条目价值观
列出在插入
(院长拉希德)这种情况通常会引发错误。
添加SQL标准
搜索
和周期
条款通用表表达式(彼得·艾森特)同样的结果也可以使用现有的语法来实现,但要方便得多。
允许在
哪里
条款关于冲突
符合资格(汤姆·莱恩)但是,只能引用目标表。
# E.3.3.4.实用程序命令
允许
刷新物化视图
使用平行度(Bharath Rupireddy)允许
重新索引
更改新索引的表空间(Alexey Kondratov、Michael Paquier、Justin Pryzby)这是通过指定
表空间
条款A.--表空间
选项也被添加到reindexdb来控制这一切。允许
重新索引
处理分区关系的所有子表或索引 (Justin Pryzby, Michael Paquier)允许使用索引命令
同时
避免使用等待其他操作完成同时
(阿尔瓦罗·埃雷拉)提高性能
复制自
二进制模式 (Bharath Rupireddy, Amit Langote)为 SQL 定义的函数保留 SQL 标准语法查看定义(汤姆·莱恩)
以前,调用 SQL 标准函数,例如
提炼()
以简单的函数调用语法显示。现在在显示视图或规则时保留原始语法。添加
或更换
选项创建触发器
(大隅高道)这允许有条件地替换预先存在的触发器。
允许
截短
在外国桌子上操作(Kazutaka Onishi,Kohei KaiGai)这postgres_fdw模块现在也支持这个。
允许更轻松地将出版物添加到订阅中和从订阅中删除 (Japin Li)
新语法是
更改订阅...添加/删除发布
.这避免了必须指定所有发布来添加/删除条目。将主键、唯一约束和外键添加到系统目录(彼得·艾森特劳特)
这些更改有助于 GUI 工具分析系统目录。现有的目录唯一索引现在已关联
独特
要么首要的关键
约束。外键关系实际上并没有作为约束存储或实现,而是可以从函数中获取用于显示皮克_得到_目录_外国的_键().允许
目前角色
every placeCURRENT_USER
is accepted (Peter Eisentraut)
# E.3.3.5. Data Types
Allow extensions and built-in data types to implementsubscripting(Dmitry Dolgov)
Previously subscript handling was hard-coded into the server, so that subscripting could only be applied to array types. This change allows subscript notation to be used to extract or assign portions of a value of any type for which the concept makes sense.
Allow subscripting of
JSONB
(Dmitry Dolgov)JSONB
subscripting can be used to extract and assign to portions ofJSONB
documents.Add support formultirange data types(Paul Jungwirth, Alexander Korotkov)
These are like range data types, but they allow the specification of multiple, ordered, non-overlapping ranges. An associated multirange type is automatically created for every range type.
Add support for thestemmingof languages Armenian, Basque, Catalan, Hindi, Serbian, and Yiddish (Peter Eisentraut)
Allowtsearch data filesto have unlimited line lengths (Tom Lane)
The previous limit was 4K bytes. Also remove function
t_readline()
.Add support for
Infinity
and-Infinity
values in thenumeric data type(Tom Lane)Floating-point data types already supported these.
Addpoint operators
<<|
and|>>
representing strictly above/below tests (Emre Hasegeli)Previously these were called
>^
and<^
, but that naming is inconsistent with other geometric data types. The old names remain available, but may someday be removed.Add operators to add and subtract
LSN
and numeric (byte) values (Fujii Masao)Allowbinary data transferto be more forgiving of array and record
OID
mismatches (Tom Lane)Create composite array types for system catalogs (Wenjing Zeng)
User-defined relations have long had composite types associated with them, and also array types over those composite types. System catalogs now do as well. This change also fixes an inconsistency that creating a user-defined table in single-user mode would fail to create a composite array type.
# E.3.3.6. Functions
Allow SQL-languagefunctions和程序使用 SQL 标准函数体 (Peter Eisentraut)
以前只支持字符串文字函数体。使用 SQL 标准语法编写函数或过程时,会立即解析主体并存储为解析树。这允许更好地跟踪函数依赖关系,并且可以具有安全优势。
允许程序拥有
出去
参数(彼得·艾森特劳特)允许一些数组函数对混合的兼容数据类型进行操作 (Tom Lane)
功能
array_append()
,array_prepend()
,数组猫()
,数组位置()
,数组位置()
,array_remove()
,数组替换()
, 和宽度_桶()
现在采取任何兼容数组
代替任意数组
论据。这使他们对参数类型的精确匹配不那么挑剔。添加 SQL 标准
修剪数组()
功能(Vik Fearing)这可以通过数组切片完成,但不太容易。
添加
拜茶
等价物ltrim()
和rtrim()
(乔尔·雅各布森)支持负索引
拆分部分()
(尼基尔·贝内施)负值从最后一个字段开始并向后计数。
添加
string_to_table()
在分隔符上拆分字符串的函数 (Pavel Stehule)这类似于
regexp_split_to_table()
功能。添加
unistr()
允许将 Unicode 字符指定为字符串中的反斜杠十六进制转义的函数 (Pavel Stehule)这类似于如何在文字字符串中指定 Unicode。
添加
位异或()
XOR 聚合函数 (Alexey Bashtanov)添加功能
位计数()
返回在位或字节串中设置的位数 (David Fetter)添加
date_bin()
函数(约翰·奈勒)此函数“分箱”输入时间戳,将它们分组为与指定原点对齐的统一长度的间隔。
允许
make_timestamp()
/make_timestamptz()
接受负数年(彼得·艾森特劳特)负值被解释为
公元前
年。添加更新的正则表达式
子串()
语法(彼得·艾森特劳特)新的 SQL 标准语法是
SUBSTRING(文本类似模式 ESCAPE 转义字符)
.以前的标准语法是SUBSTRING(转义字符的文本来自模式)
,它仍然被 PostgreSQL 接受。允许补充字符类转义\D,
\S
, 和\W
在正则表达式括号内 (Tom Lane)添加
[[:单词:]]
作为正则表达式字符类,相当于\w
(汤姆·莱恩)允许为默认值提供更灵活的数据类型
带领()
和落后()
窗函数(Vik Fearing)使非零浮点值除以无穷大归零(堀口京太郎)
以前此类操作会产生下溢错误。
用零返回 NaN 对 NaN 进行浮点除法 (Tom Lane)
以前这会返回错误。
原因
exp()
和力量()
负无穷指数返回零 (Tom Lane)以前它们经常返回下溢错误。
提高涉及无穷大的几何计算的准确性 (Tom Lane)
尽可能将内置类型强制功能标记为防漏 (Tom Lane)
这允许在安全敏感的情况下更多地使用需要类型转换的函数。
改变
pg_describe_object()
,pg_identify_object()
, 和pg_identify_object_as_address()
to always report helpful error messages for non-existent objects (Michael Paquier)
# E.3.3.7.PL/pgSQL
Improve PL/pgSQL'sexpressionandassignmentparsing (Tom Lane)
This change allows assignment to array slices and nested record fields.
Allow plpgsql's
RETURN QUERY
to execute its query using parallelism (Tom Lane)Improve performance of repeatedCALLs within plpgsql procedures (Pavel Stehule, Tom Lane)
# E.3.3.8. Client Interfaces
Addpipelinemode to libpq (Craig Ringer, Matthieu Garrigues, Álvaro Herrera)
This allows multiple queries to be sent, only waiting for completion when a specific synchronization message is sent.
Enhance libpq's
target_session_attrs
parameter options (Haribabu Kommi, Greg Nancarrow, Vignesh C, Tom Lane)The new options are
read-only
,primary
,standby
, andprefer-standby
.Improve the output format of libpq's
PQtrace()
(Aya Iwata, Álvaro Herrera)Allow an ECPG SQL identifier to be linked to a specific connection (Hayato Kuroda)
This is done via
DECLARE ... STATEMENT
.
# E.3.3.9. Client Applications
Allowvacuumdbto skip index cleanup and truncation (Nathan Bossart)
The options are
--no-index-cleanup
and--no-truncate
.Allowpg_dumpto dump only certain extensions (Guillaume Lelarge)
This is controlled by option
--extension
.Addpgbench
permute()
随机打乱值的函数(Fabien Coelho、Hironobu Suzuki、Dean Rasheed)在 pgbench 测量的重新连接开销中包括断开时间
-C
(永田勇吾)允许多个详细选项规范(
-v
) 以增加日志记录的详细程度 (Tom Lane)
# E.3.3.9.1.psql
允许 psql 的
\df
和\做
指定函数和运算符参数类型的命令(Greg Sabino Mullane,Tom Lane)这有助于减少为重载名称打印的匹配数。
将访问方法列添加到 psql 的
\d[i|m|t]+
output (Georgios Kokolatos)Allow psql's
\dt
and\di
to show TOAST tables and their indexes (Justin Pryzby)Add psql command
\dX
to list extended statistics objects (Tatsuro Yamada)Fix psql's
\dT
to understand array syntax and backend grammar aliases, likeint
forinteger
(Greg Sabino Mullane, Tom Lane)When editing the previous query or a file with psql's
\e
, or using\ef
and\ev
, ignore the results if the editor exits without saving (Laurenz Albe)Previously, such edits would load the previous query into the query buffer, and typically execute it immediately. This was deemed to be probably not what the user wants.
Improve tab completion (Vignesh C, Michael Paquier, Justin Pryzby, Georgios Kokolatos, Julien Rouhaud)
# E.3.3.10. Server Applications
Add command-line utilitypg_amcheckto simplify running
contrib/amcheck
tests on many relations (Mark Dilger)Add
--no-instructions
option toinitdb(Magnus Hagander)This suppresses the server startup instructions that are normally printed.
Stoppg_upgradefrom creating
analyze_new_cluster
script (Magnus Hagander)Instead, give comparablevacuumdbinstructions.
Remove support for thepostmaster
-o
option (Magnus Hagander)This option was unnecessary since all passed options could already be specified directly.
# E.3.3.11. Documentation
Rename "Default Roles" to"Predefined Roles"(Bruce Momjian, Stephen Frost)
Add documentation for the
factorial()
功能(彼得·艾森特)随着这座城市的拆除!在这个版本中,
阶乘()
是计算阶乘的唯一内置方法。
# E.3.3.12.源代码
添加配置选项
--使用ssl={openssl}
允许将来选择使用SSL库(Daniel Gustafsson,Michael Paquier)拼写
--使用openssl
为了兼容性而保留。添加对抽象Unix域套接字(彼得·艾森特)
这在Linux和Windows上目前是受支持的。
允许Windows正确处理超过4G字节的文件(胡安·何塞·桑塔马里亚·弗莱查)
添加服务器参数调试_丢弃_储藏室为测试目的控制缓存刷新(克雷格·林格)
以前,这种行为只能在编译时设置。要在initdb期间调用它,请使用新选项
--丢弃缓存
.Various improvements in valgrind error detection ability (Álvaro Herrera, Peter Geoghegan)
Add a test module for the regular expression package (Tom Lane)
Add support for LLVM version 12 (Andres Freund)
Change SHA1, SHA2, and MD5 hash computations to use the OpenSSL EVP API (Michael Paquier)
This is more modern and supports FIPS mode.
Remove separate build-time control over the choice of random number generator (Daniel Gustafsson)
This is now always determined by the choice of SSL library.
Add direct conversion routines between EUC_TW and Big5 encodings (Heikki Linnakangas)
Add collation version support for FreeBSD (Thomas Munro)
Add
amadjustmembers
to the index access method API (Tom Lane)This allows an index access method to provide validity checking during creation of a new operator class or family.
Provide feature-test macros in
libpq-fe.h
for recently-added libpq features (Tom Lane, Álvaro Herrera)Historically, applications have usually used compile-time checks of
PG_VERSION_NUM
to test whether a feature is available. But that's normally the server version, which might not be a good guide to libpq's version.libpq-fe.h
now offers#define
symbols denoting application-visible features added in v14; the intent is to keep adding symbols for such features in future versions.
# E.3.3.13. Additional Modules
Allow subscripting ofhstorevalues (Tom Lane, Dmitry Dolgov)
Allow GiST/GIN皮克_trgm进行等式查找的索引 (Julien Rouhaud)
这类似于
喜欢
除了不支持通配符。允许立方体以二进制模式传输的数据类型 (KaiGai Kohei)
允许
pgstattuple_approx()
报告 TOAST 表 (Peter Eisentraut)添加贡献模块皮克_手术允许更改行可见性 (Ashutosh Sharma)
这对于纠正数据库损坏很有用。
允许安检还要检查堆页 (Mark Dilger)
以前它只检查 B-Tree 索引页。
允许页面检查检查 GiST 索引 (Andrey Borodin, Heikki Linnakangas)
将 pageinspect 块号更改为
大整数
(彼得·艾森特劳特)标记btree_要旨用作并行安全 (Steven Winfield)
# E.3.3.13.1.皮克_统计_陈述
从 pg 移动查询哈希计算_统计_对核心服务器的声明 (Julien Rouhaud)
新的服务器参数计算_询问_id的默认值
汽车
加载此扩展时将自动启用查询 ID 计算。原因 pg_统计_分别跟踪顶部和嵌套语句的语句 (Julien Rohaud)
以前,在跟踪所有语句时,将相同的顶部和嵌套语句作为单个条目进行跟踪;但将这些用法分开似乎更有用。
将实用程序命令的行数添加到 pg_统计_声明(藤井正男、葛城雄太、西野由纪)
添加
pg_stat_statements_info
系统视图显示 pg_统计_声明活动(葛城裕太、西野由纪、中道直树)
# E.3.3.13.2.postgres_fdw
允许 postgres_fdw to
INSERT
rows in bulk (Takayuki Tsunakawa, Tomas Vondra, Amit Langote)Allow postgres_fdw to import table partitions if specified by
IMPORT FOREIGN SCHEMA ... LIMIT TO
(Matthias van de Meent)By default, only the root of a partitioned table is imported.
Add postgres_fdw function
postgres_fdw_get_connections()
to report open foreign server connections (Bharath Rupireddy)Allow control over whether foreign servers keep connections open after transaction completion (Bharath Rupireddy)
This is controlled by
keep_connections
and defaults to on.Allow postgres_fdw to reestablish foreign server connections if necessary (Bharath Rupireddy)
Previously foreign server restarts could cause foreign table access errors.
Add postgres_fdw functions to discard cached connections (Bharath Rupireddy)
# E.3.4. Acknowledgments
The following individuals (in alphabetical order) have contributed to this release as patch authors, committers, reviewers, testers, or reporters of issues.
Abhijit Menon-Sen |
---|
Ádám Balogh |
阿德里安·何 |
阿山哈迪 |
阿金切里安 |
亚历山大·阿列克谢耶夫 |
亚历山德罗·盖拉尔迪 |
亚历克斯·科热米亚金 |
亚历山大·科罗特科夫 |
亚历山大·拉欣 |
亚历山大·纳夫拉蒂尔 |
亚历山大·皮哈洛夫 |
亚历山德拉王 |
阿列克谢·巴什坦诺夫 |
阿列克谢·布尔加科夫 |
阿列克谢·康德拉托夫 |
阿尔瓦罗·埃雷拉 |
阿米特·卡皮拉 |
阿米特·坎德卡 |
阿米特·朗格特 |
南阿穆尔 |
阿纳斯塔西娅·卢本尼科娃 |
安德鲁·格罗布 |
安德鲁·克雷施默 |
安德鲁·瑞尔帝国 |
安德烈亚斯·维希特 |
安德烈的朋友 |
安德鲁·比尔 |
安德鲁·邓斯坦 |
安德鲁·吉尔思 |
安德烈·鲍罗丁 |
安德烈·列皮霍夫 |
安迪范 |
安东·沃罗申 |
安东尼·豪斯卡 |
阿恩·罗兰 |
阿尔塞尼·谢尔 |
亚瑟·纳西门托 |
亚瑟·扎基洛夫 |
阿舒托什·巴帕特 |
阿舒托什·夏尔马 |
阿什温·阿格拉瓦尔 |
阿西夫·雷曼 |
阿西姆·普拉文 |
鸟越淳 |
岩田绫 |
巴里·佩德森 |
巴斯普 |
鲍伊尔詹·萨哈里耶夫 |
比娜·艾默生 |
贝努瓦·洛布雷奥 |
伯恩德·赫尔姆 |
伯恩哈德·M·维德曼 |
伯特兰·德鲁沃 |
巴拉特·鲁皮雷迪 |
鲍里斯·科尔帕科夫 |
布拉尔接头 |
布莱恩·叶 |
布鲁斯·莫吉安 |
布林·卢埃林 |
卡梅伦丹尼尔 |
查普曼弗莱克 |
查尔斯·桑博尔斯基 |
查理·霍恩斯比 |
陈娇倩 |
克里斯·威尔逊 |
基督教探索 |
克里斯托弗·伯格 |
克里斯托夫·库尔图瓦 |
科里·亨克 |
克雷格·林格 |
Dagfinn Ilmari Mannsåker |
达纳伯德 |
丹尼尔·切尔尼 |
丹尼尔·古斯塔夫森 |
丹尼尔·维瑞特 |
丹尼尔韦斯特曼 |
丹尼尔·瓦拉佐 |
Dar Alathar-也门 |
达拉菲·普拉利亚斯科斯基 |
戴夫克莱默 |
大卫克里斯滕森 |
大卫费特 |
大卫·G·约翰斯顿 |
大卫·盖尔 |
大卫吉尔曼 |
大卫·皮罗特 |
大卫·罗利 |
大卫斯蒂尔 |
大卫·特隆 |
张大卫 |
院长拉希德 |
丹尼斯赞助人 |
点飞 |
迪利普库马尔 |
迪米特里·努舍勒 |
德米特里·库兹明 |
德米特里·多尔戈夫 |
德米特里·马拉卡索夫 |
多马戈伊·斯莫利亚诺维奇 |
东旭 |
道格拉斯·杜尔 |
邓肯金沙 |
埃德蒙霍纳 |
埃德森·里希特 |
叶戈尔·罗戈夫 |
叶卡捷琳娜·基里亚诺娃 |
埃琳娜·英卓普斯卡娅 |
埃米尔·伊格兰 |
埃姆雷·哈塞格利 |
埃里克·蒂恩斯 |
埃里克·赖克斯 |
欧文·布兰德施泰特 |
艾蒂安·斯塔曼斯 |
藤田悦郎 |
欧根康科夫 |
欧拉·塔维拉 |
法比安·科埃略 |
法布里齐奥·德·罗耶斯·梅洛 |
费德里科·卡塞利 |
费利克斯·莱赫纳 |
菲利普·戈斯波迪诺夫 |
弗洛里斯·范尼 |
弗兰克·加涅潘 |
弗里斯·贾文 |
乔治斯·科科拉托斯 |
格雷格·南卡罗 |
格雷格·雷赫莱夫斯基 |
格雷格·萨比诺·穆兰 |
格雷戈里·史密斯 |
格里高利·斯莫尔金 |
纪尧姆·勒拉格 |
盖伊·伯吉斯 |
盖仁豪 |
海鹰堂 |
哈米德·阿赫塔尔 |
汉斯·布施曼 |
吴昊 |
哈里巴布·科米 |
哈里赛·哈里 |
黑田隼人 |
希斯勋爵 |
海基·林纳坎加斯 |
亨利·欣策 |
赫维格·戈曼斯 |
Himanshu Upadhyaya |
铃木博信 |
井上浩 |
小林久典 |
洪扎霍拉克 |
侯志杰 |
休伯特·卢巴切夫斯基 |
休伯特张 |
伊恩·巴维克 |
伊布拉·艾哈迈德 |
伊尔杜斯·库尔班加耶夫 |
艾萨克·莫兰 |
以色列巴特 |
伊塔马尔·加夫尼克 |
雅各布冠军 |
海梅·卡萨诺瓦 |
海梅·索勒 |
雅库布·瓦塔克 |
詹姆斯·科尔曼 |
詹姆斯·希利亚德 |
詹姆斯·亨特 |
詹姆斯通知 |
扬·穆斯勒 |
李嘉平 |
杰森·贝茨 |
杰森哈维 |
杰森金 |
吉万·拉德 |
杰夫戴维斯 |
杰夫·简斯 |
耶尔特·芬尼玛 |
杰里米·埃文斯 |
杰里米·芬泽尔 |
杰里米·史密斯 |
杰西·金基德 |
张杰西 |
张杰 |
吉姆·多蒂 |
吉姆·纳斯比 |
吉米安吉拉科斯 |
吉米·伊 |
吉里·费法尔 |
乔·康威 |
乔尔·雅各布森 |
约翰·奈勒 |
约翰汤普森 |
乔纳森·卡茨 |
约瑟夫·希曼内克 |
约瑟夫·纳米亚斯 |
乔什·伯库斯 |
胡安·何塞·圣玛丽亚·弗莱查 |
朱利安·鲁豪 |
杨俊峰 |
于尔根·普茨 |
贾斯汀·普利兹比 |
大西和孝 |
黑田圭佑 |
凯利敏 |
冈村健介 |
凯文·斯威特 |
叶凯文 |
柯克·贾米森 |
光平开盖 |
康斯坦丁·克尼日尼克 |
三宅市 |
克日什托夫·格拉德克 |
昆塔尔戈什 |
凯尔金斯伯里 |
堀口京太郎 |
劳伦特·哈森 |
劳伦兹阿尔贝 |
李东旭 |
李嘉平 |
刘怀玲 |
卢克弗莱明 |
卢多维奇库蒂 |
路易斯·罗伯托 |
卢克·埃德 |
马良柱 |
马切克·萨克瑞达 |
马丹库马拉 |
马格努斯·哈根德 |
马亨德拉·辛格·塔罗 |
马克西姆米柳京 |
马克·博伦 |
马辛·克鲁波维茨 |
马可·阿策里克 |
马雷克·苏巴 |
玛丽娜·波利亚科娃 |
马里奥·埃门劳尔 |
马克·迪尔格 |
马克·黄 |
赵马克 |
马库斯·万纳 |
马丁·马克斯 |
马丁·维瑟 |
泽田正彦 |
池田正宏 |
藤井正夫 |
马蒂斯·鲁道夫 |
马蒂亚斯·范德米特 |
马修·加里格斯 |
马蒂斯·范德弗勒滕 |
马克西姆·奥尔洛夫 |
梅兰妮普拉格曼 |
梅林·蒙库尔 |
迈克尔·班克 |
迈克尔·布朗 |
迈克尔·梅克斯 |
迈克尔·帕奎尔 |
迈克尔·保罗·基利安 |
迈克尔·鲍尔斯 |
迈克尔·瓦斯托拉 |
迈克尔·尼古拉耶夫 |
迈克尔·阿尔布莱希特 |
米凯尔·古斯塔夫森 |
移动李 |
穆罕默德·乌萨马 |
纳加拉吉拉吉 |
中道直树 |
内森·博萨特 |
弥敦道隆 |
Nazli Ugur Koyluoglu |
内哈·夏尔马 |
尼尔陈 |
尼克克莱顿 |
尼科·威廉姆斯 |
尼基尔·贝内施 |
尼基尔·桑塔克 |
尼基塔·格鲁霍夫 |
尼基塔·科涅夫 |
尼古拉斯·伯科夫 |
尼古拉·萨莫赫瓦洛夫 |
尼古拉·沙普洛夫 |
尼廷·贾达夫 |
诺亚米施 |
筱田纪吉 |
奥丁乌格达尔 |
奥列格·巴尔图诺夫 |
奥列格·萨莫洛夫 |
恩德卡拉奇 |
帕斯卡勒格朗 |
保罗·福斯特 |
郭保罗 |
保罗·容沃思 |
保罗马丁内斯 |
保罗·西瓦什 |
帕万·德奥拉西 |
帕维尔·博耶夫 |
帕维尔鲍里索夫 |
帕维尔·卢扎诺夫 |
帕维尔·斯特胡勒 |
刘鹏程 |
彼得·艾森特劳特 |
彼得·吉根 |
彼得·史密斯 |
彼得·范迪维尔 |
彼得·费多罗夫 |
彼得·耶利内克 |
菲尔·克雷洛夫 |
菲利普·格拉姆佐 |
菲利普·博多安 |
菲利普·门克 |
皮埃尔·吉罗 |
普拉巴特萨胡 |
权宗良 |
拉菲·沙米姆 |
拉希拉赛义德 |
拉杰库马尔·拉古万希 |
拉尼尔·维莱拉 |
里贾纳奥贝 |
雷米·拉佩尔 |
罗伯特·福贾 |
罗伯特·格兰奇 |
罗伯特·哈斯 |
罗伯特·卡勒特 |
罗伯特·索辛斯基 |
罗伯特·特里特 |
罗宾·阿比 |
罗宾斯·塔拉坎 |
罗杰·梅森 |
罗希特·博盖特 |
罗曼·扎尔科夫 |
罗恩·约翰逊 |
罗南·邓克劳 |
瑞恩兰伯特 |
松村亮 |
赛义德虎白山 |
赛特·塔尔哈·尼桑奇 |
桑德罗·玛尼 |
桑托什·乌杜皮 |
斯科特·里伯 |
瑟罗普·萨库尼 |
谢尔盖·科尔尼洛夫 |
谢尔盖·贝尔尼科夫 |
谢尔盖·切尔卡申 |
谢尔盖·科波索夫 |
谢尔盖·辛德鲁克 |
谢尔盖·祖布科夫斯基 |
王肖恩 |
谢伊·罗扬斯基 |
石宇 |
加藤真也 |
冈野真也 |
西格丽德·埃伦赖希 |
西蒙·诺里斯 |
西蒙·里格斯 |
索福克利斯帕帕索福克利 |
Soumyadeep Chakraborty |
斯塔斯·凯尔维奇 |
斯蒂芬·斯普林尔 |
斯蒂芬·洛雷克 |
斯蒂芬弗罗斯特 |
史蒂文温菲尔德 |
苏拉菲尔·特梅斯根 |
苏拉吉·卡拉格 |
斯文克莱姆 |
大隅高道 |
面城隆 |
纲川孝之 |
唐海英 |
笠原达人 |
石井达男 |
山田达郎 |
西奥多·阿尔塞尼·拉里奥诺夫-特里奇金 |
托马斯·凯勒 |
托马斯·门罗 |
托马斯·特伦茨 |
蒂斯范达姆 |
汤姆·埃利斯 |
汤姆·戈特弗里德 |
汤姆·莱恩 |
汤姆·维吉尔布里夫 |
托马斯·巴顿 |
托马斯·冯德拉 |
平光智宏 |
托尼·雷克斯 |
毗湿奴普拉巴卡兰 |
瓦伦丁·加蒂安-男爵 |
维克多·瓦格纳 |
维克多·叶戈罗夫 |
维涅什 C |
维克恐惧 |
维塔利·乌斯蒂诺夫 |
弗拉基米尔·希特尼科夫 |
维亚切斯拉夫·沙布利斯蒂 |
王申豪 |
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 |