版本日期: 2021-09-30
PostgreSQL 14 包含许多新功能和增强功能,包括:
存储过程现在可以通过OUT
返回数据参数.
parameters.
SQL 标准 SEARCH
和 CYCLE
表达式的 CYCLE 选项已实施.
下标现在可以应用于它是有用表示法的任何数据类型,而不仅仅是数组. 在此版本中,jsonb
和 hstore
类型获得了下标运算符.
通过添加多范围,扩展了范围类型,允许表示非连续数据范围。
对于并行查询、高度并发的工作负载、分区表、逻辑复制和清理,已经进行了大量性能改进.
更有效地管理B树索引更新,减少索引膨胀。
VACUUM
自动变得更具进取性
如果数据库开始接近事务ID环绕条件,则跳过不必要的清理
现在可以收集表达式的扩展统计信息,从而为复杂查询提供更好的规划结果.
libpq 现在有能力对多个查询进行流水线处理,这可以提高高延迟连接的吞吐量.
上述项目和其他新功能属于PostgreSQL 14,在下面的部分中更详细地解释.
需要使用 pg_dumpall进行转储/恢复,或使用 pg_upgrade 或逻辑复制希望从任何先前版本迁移数据.请参见 第 19.6 节 有关迁移到新专业的一般信息发布.
版本14包含许多可能影响与以前版本兼容性的更改。注意以下不兼容性:
必须重新创建引用某些内置数组函数及其参数类型的用户定义对象 (Tom Lane)
特别地, array_append()
,
array_prepend()
,
array_cat()
,
array_position()
,
array_positions()
,
array_remove()
,
array_replace()
, 和 width_bucket()
used to take anyarray
参数,但现在采用和anycompatiblearray
.因此,用户定义的对象(如引用这些数组函数签名的聚合和运算符)必须在升级之前删除,并在升级完成.
删除不推荐使用的包含运算符@
和~
内置geometric data types and
contrib modules cube, hstore,
intarray, 和seg (Justin Pryzby)
更一致的命名<@
和 @>
已推荐多年.
修复 to_tsquery()
and websearch_to_tsquery()
要正确解析包含丢弃标记的查询文本,请执行以下操作. (Alexander Korotkov)
某些被丢弃的标记(如下划线)导致这些函数的输出产生不正确的tsquery输出,例如
websearch_to_tsquery('"pg_class pg"')
和 to_tsquery('pg_class
<-> pg')
used to output ( 'pg' & 'class' ) <-> 'pg'
,
but now both output 'pg' <-> 'class' <-> 'pg'
.
修复websearch_to_tsquery()
要正确解析引号中的多个相邻丢弃标记,请执行以下操作.
(Alexander Korotkov)
以前,包含多个相邻丢弃标记的引用文本被视为多个标记,导致错误的tsquery输出 .如, websearch_to_tsquery('"aaa: bbb"')
过去用于输出
'aaa' <2> 'bbb'
, 但现在输出'aaa' <-> 'bbb'
.
改变 EXTRACT()
返回类型 numeric
来代替float8
(Peter Eisentraut)
这避免了某些使用中的精度损失问题。旧的行为仍然可以通过使用旧的底层函数获得
date_part()
.
此外, EXTRACT(date)
现在会为不属于date
数据类型的单位抛出错误 .
改变 var_samp()
and stddev_samp()
当输入为单个NaN值时,使用数值参数返回NULL (Tom Lane)
之前 NaN
被返回.
对于has_column_privilege()
使用属性号时检查不存在或删除的列 (Joe Conway)
以前,此类属性号返回了无效列错误.
无限的固定处理 window function ranges (Tom Lane)
之前 window frame 条款像 'inf' PRECEDING AND
'inf' FOLLOWING
返回不正确的结果.
删除阶乘算子 !
and
!!
, 以及函数
numeric_fac()
(Mark Dilger)
factorial()
函数依然被支持.
不允许负数的阶 factorial()
(Peter Eisentraut)
以前此类案例返回 1 .
删除对postfix (右一元)运算符 (Mark Dilger)
pg_dump 和 pg_upgrade 如果后缀运算符将发出警告 正在被转储.
允许 \D
和 \W
速记
匹配换行符 regular
expression 换行敏感模式 (Tom Lane)
以前,它们在此模式下不匹配换行符,但这与其他常见正则表达式引擎的行为不一致。 [^[:digit:]]
or
[^[:word:]]
可以用来获取旧行为.
匹配正则表达式时忽略约束 back-references (Tom Lane)
例如, 在(^\d+).*\1
,
^
约束应在字符串的开头应用,但在匹配时不应应用 \1
.
不允许 \w
作为正则表达式字符类中的范围开始或结束 (Tom Lane)
这在以前是允许的,但产生了意想不到的结果.
需要 custom server parameter 名称以仅使用在 中有效的字符 未加引号的 SQL标识符(Tom Lane)
更改 password_encryption
服务器参数 scram-sha-256
(Peter
Eisentraut)
以前是 md5
。 以前是 md5
。 所有新密码将存储为 SHA256,除非更改此服务器设置或
密码以 MD5 格式指定。 此外,遗产(和未记录的)以前是同义词的类似布尔值
对于 md5
不再被接受。
删除服务器参数
vacuum_cleanup_index_scale_factor
(Peter Geoghegan)
此设置从 PostgreSQL13.3.版本开始被忽略
删除服务器参数 operator_precedence_warning
(Tom Lane)
此设置用于警告应用程序在 PostgreSQL 9.5 更改。
彻底修改 clientcert
在 pg_hba.conf
(Kyotaro Horiguchi)
Values
1
/0
/no-verify
不再受支持; 仅字符串
verify-ca
和 verify-full
可以被使用. 。此外,如果启用了证书身份验证,则不允许证书verify-ca
因为证书需要
verify-full
检查。
删除对SSL 的支持压缩 (Daniel Gustafsson, Michael Paquier)
这在之前的版本中已默认禁用 PostgreSQL 版本, 这在之前的版本中已默认禁用 PostgreSQL版本,大多数现代OpenSSLTLS versions no longer support it.
删除服务器和 libpq 对第2版 有线协议 的支持(Heikki Linnakangas)
这是上次在PostgreSQL7.3(2002年发布)中用作默认值。
不允许在CREATE/DROP
LANGUAGE
中对语言名称进行单引号引用(Peter Eisentraut)
删除 复合类型 以前为序列和toast创建的
正确处理 ecpg SQL 命令字符串中的双引号 (Tom Lane)
以前,'abc''def'
作为'abc'def'
传递到服务器,而"abc""def"
作为"abc"def"
传递,导致语法错误。
防止 intarray的包含运算符 (<@
and
@>
)使用GiST索引 (Tom Lane)
以前需要进行完整的GiST索引扫描,因此请避免 然后扫描堆,速度更快。应删除为此目的创建的索引。
删除contrib程序pg_standby (Justin Pryzby)
防止tablefunc的函数
normal_rand()
接受负值(Ashutosh Bapat)
负值会产生不期望的结果。
您将在下面找到PostgreSQL14与上一个主要版本之间更改的详细说明。
添加预定义角色 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)
以前,元组的插入将超过页面的填充因 改为添加到新页面。
在中添加服务器名称指示(<首字母缩写>SNI</首字母缩写>) SSL连接数据包 (Peter Eisentraut)
可以通过关闭客户端连接选项sslsni
来禁用此功能。
当可移动索引项的数量不多时,允许真空跳过索引vacuuming (Masahiko Sawada, Peter Geoghegan)
真空参数INDEX_CLEANUP
具有
启用此优化的新默认值auto
。
允许vacuum更急切地将已删除的btree页面添加到免费 空间地图 (Peter Geoghegan)
以前,vacuum只能将标记为已被以前的vacuum删除的页面添加到可用空间映射.
允许vacuum回收未使用的尾随堆指针使用的空间 (Matthias van de Meent, Peter Geoghegan)
允许vacuum在最小锁定索引操作期间更积极地移除死行 (Álvaro Herrera)
具体来说,<command>CREATE INDEX CONCURRENTLY</command>和
同时重新索引
不再限制死区
其他关系的行删除.
加快对具有多个关系的数据库的清理 (Tatsuhito Kasahara)
减少vacuum_cost_page_miss的默认值,以更好地反映当前硬件功能 (Peter Geoghegan)
添加跳过TOAST表的vacuuming 处理的功能 (Nathan Bossart)
VACUUM
现在具有PROCESS_TOAST
,可设置为
false禁用TOAST 处理和vacuumdb
有一个-−没有进程toast
选项。
让COPY FREEZE
适当更新页面可见性位 (Anastasia Lubennikova,
Pavan Deolasee, Jeff Janes)
如果工作台接近xid或multixact环绕,则会导致真空操作更具攻击性 (Masahiko Sawada, Peter Geoghegan)
增加事务id和多事务环绕之前的警告时间和硬限制 (Noah Misch)
这将减少在未发出环绕警告的情况下发生故障的可能性。
将每个索引信息添加到autovacuum日志 输出 (Masahiko Sawada)
提高具有多个分区的分区表的更新和删除性能 (Amit Langote, Tom Lane)
这种更改大大减少了规划器在这种情况下的开销,还允许对分区表进行更新/删除,以使用执行时分区修剪。
允许分区为以非阻塞方式分离 (Álvaro Herrera)
语法是ALTER TABLE ... DETACH PARTITION
... CONCURRENTLY
, 和 FINALIZE
.
忽略分区边界中的COLLATE
子句价值观 (Tom Lane)
以前,任何这样的子句都必须与分区密钥;但更一致的是,考虑自动强制为分区键的排序规则。
允许将btree索引添加到删除过期的索引项防止页面拆分 (Peter Geoghegan)
这对于减少表上的索引膨胀特别有帮助其索引列经常更新。
允许BRIN索引记录每个范围的多个最小/最大值 (Tomas Vondra)
如果每个页面范围中都有一组值,则这很有用。
允许BRIN 索引使用bloom过滤器 (Tomas Vondra)
这使得 BRIN 索引得到有效使用数据在堆中没有很好地本地化。
允许构建一些GiST索引通过对数据进行预排序 (Andrey Borodin)
预排序自动进行,并允许更快的索引创建和更小的索引。
允许SP-GiST indexes to contain
INCLUDE
'd列 (Pavel Borisov)
允许对带有多个常量的IN
子句进行哈希查找 (James Coleman, David Rowley)
以前,代码总是顺序扫描列表值。
增加位置数扩展统计数据可以用于OR
子句估计(Tomas Vondra,
Dean Rasheed)
允许对表达式进行扩展统计 (Tomas Vondra)
这允许对一组表达式和列进行统计,而不是像以前那样仅列。系统视图pg_stats_ext_exprs
这些统计数据的报告。
允许对TIDs
的范围进行高效堆扫描(Edmund Horner, David Rowley)
以前,不相等需要顺序扫描TID
规格。
修复EXPLAIN CREATE TABLE
AS
和EXPLAIN CREATE MATERIALIZED
VIEW
以尊重如果不存在
(Bharath Rupireddy)
先前如果对象已经存在,EXPLAIN
将失败。
提高计算速度MVCC 可见性快照在具有多个CPU和高会话计数 (Andres Freund)
当存在许多空闲会话时,这也提高了性能。
添加executor方法以从嵌套循环连接 (David Rowley)
如果只选中了一小部分行,这将非常有用内侧。可以通过服务器参数enable_memoize。
允许窗口函数执行增量排序 (David Rowley)
提高并行顺序扫描的I/O性能 (Thomas Munro, David Rowley)
这是通过将组中的块分配给并行工作者。
允许查询引用多个要执行的外部表并行外部表扫描(Robert Haas, Kyotaro Horiguchi,Thomas Munro, Etsuro Fujita)
postgres_fdw支持这种类型的扫描,如果async_capable
设置。
允许分析进行页面预取 (Stephen Frost)
提高正则表达式搜索的性能 (Tom Lane)
显著提高Unicode规范化性能 (John Naylor)
此速度<normalize()
和是标准化的
。
添加使用LZ4压缩 在TOAST的数据 (Dilip Kumar)
这可以在列级别设置,也可以通过服务器设置为默认值参数default_toast_compression。
必须使用--with-lz4
以支持此功能。默认设置仍然是pglz。
如果服务器参数compute_query_id启用时,在pg_stat_activity
,
EXPLAIN VERBOSE
, csvlog, and optionally in log_line_prefix(Julien Rouhaud)
还将显示由扩展计算的查询id。
改进日志记录自动vacuum和自动analyze (Stephen Frost, Jakub Wartak)
如果启用了track_io_timing功能,则报告auto-vacuum和自动分析的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_locks
(Atsushi Torikoshi)
使归档程序进程在中可见pg_stat_activity
(Kyotaro Horiguchi)
添加等待事件WalReceiverExit
要报告WAL接收器退出等待时间: (Fujii
Masao)
实现信息模式视图routine_column_usage
跟踪函数和过程默认引用的列的步骤表达 (Peter Eisentraut)
允许SSL证书的可分辨名称 (DN) 要与客户端证书身份验证匹配 (Andrew Dunstan)
新的 pg_hba.conf
option clientname=DN
,允许与证书属性超出了CN
,并且可以与识别图结合使用。
允许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。
允许%P
在log_line_prefix中报告并行工作人员的并行组长PID (Justin Pryzby)
允许unix_socket_directories将路径指定为单独的逗号分隔引号字符串 (Ian Lawrence Barwick)
以前,所有路径都必须在单引号字符串中。
允许动态共享内存的启动分配 (Thomas Munro)
这由min_dynamic_shared_memory。这允许更多使用巨大的页面。
向huge_page_size控制Linux上使用的巨大页面的大小(Odin Ugedal)
允许备用服务器通过 pg_rewind (Heikki Linnakangas)
允许在服务器重新加载期间更改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打开数据库集群中的每个数据文件,并在开始崩溃恢复。新设置,xref
linkend="guc-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)
立即WAL-记录子事务和顶级事务
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)
Reduce the number of keywords that can't be used as column labels
without 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
。
正确处理DEFAULT
多行中的 VALUES
lists in INSERT
(Dean Rasheed)
这种情况用于抛出错误。
添加SQL-standard SEARCH
和 CYCLE
语句用于 通用表表达式的查询(Peter
Eisentraut)
使用现有语法可以实现相同的结果,但是更不方便。
允许列名在WHERE
子句中 ON CONFLICT
为表限定 (Tom Lane)
但是,只能引用目标表。
允许REFRESH
MATERIALIZED VIEW
使用并行 (Bharath
Rupireddy)
允许REINDEX
更改新索引的表空间 (Alexey Kondratov,
Michael Paquier, Justin Pryzby)
这是通过指定TABLESPACE
子句实现的。-−tablespace
选项也被添加到reindexdb以控制这一点。
允许REINDEX
处理所有子表,或分区关系的索引 (Justin Pryzby, Michael Paquier)
允许同时使用CONCURRENTLY
将索引命令使用避免等待其他操作完成CONCURRENTLY
(Álvaro Herrera)
在二进制模式,提高COPY
FROM
的性能(Bharath Rupireddy, Amit
Langote)
保护SQLSQL定义的标准语法功能视图定义 (Tom Lane)
以前,调用SQL标准函数,如EXTRACT()
以普通函数调用语法显示。原始语法现在在显示视图或规则时保留。
为OR REPLACE
选项 CREATE TRIGGER
(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_ROLE
每个位置 CURRENT_USER
都被接受 (Peter
Eisentraut)
允许扩展和内置数据类型实现订阅 (Dmitry Dolgov)
以前,下标处理是硬编码到服务器中的,因此该下标只能应用于数组类型。这种变化允许使用下标符号提取或分配部分对于概念有意义的任何类型的值。
允许订阅JSONB
(Dmitry Dolgov)
JSONB
订阅可用于提取和分配到JSONB
文档的部分。
添加多范围数据类型 (Paul Jungwirth, Alexander Korotkov)
这些数据类型类似于范围数据类型,但它们允许规范多个有序的非重叠范围。关联为每个范围类型自动创建多范围类型。
添加对词干语言亚美尼亚语、巴斯克语、加泰罗尼亚语、印地语、塞尔维亚语和意第绪语 (Peter Eisentraut)
允许 t搜索数据文件具有无限的行长度 (Tom Lane)
之前的限制是4K字节。也删除函数 t_readline()
。
添加支持给无穷大的
和-无穷的
值在数值数据类型 (Tom Lane)
这些已经支持浮点数据类型。
添加 point operators
<<|
and |>>
严格表示高于/低于测试 (Emre Hasegeli)
以前,这些被称为>^
和 <^
,但该命名与其他几何数据类型。旧名称仍然可用,但有一天可能被移除。
添加运算符以添加和减去LSN
和数字(字节)值 (Fujii Masao)
允许二进制数据传输以更宽容阵列和记录OID
不匹配 (Tom Lane)
为系统目录创建复合数组类型 (Wenjing Zeng)
长期以来,用户定义的关系一直与复合类型相关联以及这些复合类型上的数组类型。系统目录现在也可以。此更改还修复了 在单个用户中创建用户定义表的不一致性模式将无法创建复合数组类型。
允许SQL-语言 函数 和 过程 来使用 SQL-标准函数体(Peter Eisentraut)
以前只支持字符串文字函数体。当以SQL标准语法编写函数或过程时,正文立即被解析并存储为解析树。 这允许更好地跟踪函数依赖关系,并且可以安全利益。
允许
程序来拥有
OUT
参数 (Peter Eisentraut)
允许某些数组函数对兼容数据的混合进行操作类型 (Tom Lane)
函数array_append()
,
array_prepend()
,
array_cat()
,
array_position()
,
array_positions()
,
array_remove()
,
array_replace()
, 和width_bucket()
现在使用 anycompatiblearray
而不是任意数组
arguments. 这使他们不那么挑剔关于参数类型的精确匹配。
添加<acronym>SQL<acronomm>标准<trim_array()
作用 (Vik Fearing)
这已经可以通过阵列切片完成,但不太容易。
添加bytea
等效的ltrim()
和 rtrim()
(Joel Jacobson)
支持split_part()
中的负索引
(Nikhil Benesch)
负值从最后一个字段开始并向后计数。
添加string_to_table()
函数在分隔符上拆分字符串 (Pavel Stehule)
这类似于regexp_split_to_table()
作用
添加 unistr()
函数允许将Unicode字符指定为字符串中的反斜杠十六进制转义(Pavel Stehule)
这类似于在文字字符串中指定Unicode的方式。
添加 bit_xor()
聚合函数的异或(Alexey Bashtanov)
添加函数 bit_count()
返回位或字节字符串中设置的位数(David
Fetter)
添加 date_bin()
作用 (John Naylor)
此函数 “bins”输入时间戳,并对它们进行分组成与指定原点对齐的均匀长度的间隔。
允许make_timestamp()
/make_timestamptz()
接受消极的年份 (Peter Eisentraut)
负值被解释为BC
年。
添加新的正则表达式substring()
语法 (Peter Eisentraut)
新的SQL标准语法是SUBSTRING(text SIMILAR
pattern ESCAPE escapechar)
。以前的标准语法是
SUBSTRING(text FROM pattern FOR escapechar)
,
PostgreSQL仍接受此选项。
允许补字符类转义\D, \S
,
和 \W
在正则表达式括号内 (Tom Lane)
添加[[:word:]]
作为正则表达式字符类,等效到\w
(Tom Lane)
默认值允许更灵活的数据类型lead()
和 lag()
窗口函数 (Vik Fearing)
使非零的浮点值 floating-point values除以无穷大返回零 (Kyotaro Horiguchi)
以前,此类操作会产生下溢错误。
将NaN除以零,返回NaN (Tom Lane)
之前,这返回了一个错误。
原因 exp()
and
power()
对于负无穷指数
归零 (Tom Lane)
以前,它们经常返回下溢错误。
提高几何计算的准确性,包括:无穷(Tom Lane)
尽可能将内置类型强制功能标记为防漏功能 (Tom Lane)
这允许更多地使用中需要类型转换的函数安全敏感局势。
更改pg_describe_object()
,
pg_identify_object()
, 和
pg_identify_object_as_address()
始终报告不存在对象的有用错误消息 (Michael Paquier)
改进PL/pgSQL的表达式和 赋值 解析 (Tom Lane)
此更改允许分配给数组切片和嵌套记录 fields.
允许plpgsql的 RETURN
QUERY
使用并行性执行查询
(Tom Lane)
提高重复CALLs程序(Pavel Stehule, Tom Lane)
将管道pipeline mode添加到libpq (Craig Ringer, Matthieu Garrigues, Álvaro Herrera)
这允许发送多个查询,只等待完成当发送特定同步消息时。
增强libpq的target_session_attrs
参数选项 (Haribabu Kommi, Greg Nancarrow, Vignesh C,
Tom Lane)
新选项为只读
,
主
, 备用
, 和
首选待机状态
。
改进libpq的输出格式PQtrace()
(Aya Iwata, Álvaro Herrera)
允许将ECPG SQL标识符链接到特定的联系 (Hayato Kuroda)
允许vacuumdb跳过索引清理和截断 (Nathan Bossart)
选项有:-−无索引清理
和
-−不截断
。
允许pg_dump仅转储某些扩展 (Guillaume Lelarge)
这由选项-−扩展名
控制。
添加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's
\d[i|m|t]+
输出 (Georgios Kokolatos)
允许psql的 \dt
和 \di
显示TOAST表及其索引 (Justin Pryzby)
添加psql 命令\dX
要列出扩展统计对象,请执行以下操作:(Tatsuro Yamada)
修复psql的 \dT
到了解数组语法和后端语法别名,类似于初始化
对 整数
(Greg Sabino Mullane, Tom Lane)
使用编辑上一个查询或文件时psql的\e
, 或者使用
\ef
和\ev
,如果编辑器退出而不保存则忽略结果, (Laurenz Albe)
以前,此类编辑会将以前的查询加载到查询缓冲区,通常立即执行。这是被认为可能不是用户想要的。
改进选项卡完成 (Vignesh C, Michael Paquier, Justin Pryzby, Georgios Kokolatos, Julien Rouhaud)
添加命令行实用程序pg_amcheck要简化运行contrib/amcheck
对许多关系的测试
(Mark Dilger)
将-−无指令
选项添加到 initdb
(Magnus Hagander)
这将抑制正常打印的服务器启动指令。
停止pg_upgrade
从创建analyze_new_cluster
脚本
(Magnus Hagander)
相反,给出可比较的vacuumdb说明书
删除支持给 postmaster
-o
选项 (Magnus Hagander)
该选项是不必要的,因为所有传递的选项都可以直接指定。
重命名"Default Roles"为“Predefined Roles” (Bruce Momjian, Stephen Frost)
为factorial()
添加文档功能(Peter Eisentraut)
随着移除!操作员在此释放中,
factorial()
是唯一的内置计算方法阶乘。
添加配置选项-−with-ssl={openssl}
允许将来选择要使用的SSL库 (Daniel Gustafsson,
Michael Paquier)
拼写--with openssl
是为了兼容性而保留的。
添加对 抽象unix域套接字(Peter Eisentraut)
当前支持Linux 和 Windows。
允许Windows正确处理大于4 GB的文件 (Juan José Santamaría Flecha)
添加服务器参数debug_discard_caches为测试目的控制缓存刷新 (Craig Ringer)
以前,此行为只能在编译时设置。要在 initdb, 使用新的选项
-−discard-caches
。
valgrind中的各种改进 valgrind错误检测能力 (Álvaro Herrera, Peter Geoghegan)
为正则表达式包添加测试模块 (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)
添加amadjustmembers
到索引访问方法API(Tom Lane)
这允许索引访问方法在创建新运算符类或族期间提供有效性检查。
在libpq fe.h
中提供对于最近添加的libpq功能的测试宏
(Tom Lane, Álvaro Herrera)
历史上,应用程序通常使用编译时检查PG_VERSION_NUM
来测试功能是否
可获得的但这通常是服务器版本不是libpq的版本. libpq-fe.h
现在提供 #define
符号表示v14中添加的应用程序可见功能;目的是保持在未来版本中为这些功能添加符号。
允许订阅hstore值 (Tom Lane, Dmitry Dolgov)
允许GiST/GINpg_trgm 索引进行平等查找 (Julien Rouhaud)
这与<literal>类似,但没有通配符很荣幸。
允许cube 数据类型以二进制模式传输 (KaiGai Kohei)
允许pgstattuple_approx()
要报告 TOAST表(Peter Eisentraut)
添加contrib模块pg_surgery这允许更改行可见性 (Ashutosh Sharma)
这对于纠正数据库损坏非常有用。
添加contrib模块<old_snapshot
来报告 XID
/活动使用的时间映射
old_snapshot_threshold (Robert Haas)
允许amcheck同时检查堆页 (Mark Dilger)
以前它只检查B树索引页。
允许pageinspect检查GiST索引 (Andrey Borodin, Heikki Linnakangas)
更改页面检查block编号成为bigints
(Peter Eisentraut)
标记btree_gist用作并行安全 (Steven Winfield)
将查询哈希计算从 pg_stat_statements到核心服务器 (Julien Rouhaud)
新的服务器参数compute_query_id默认的自动
将自动启用查询加载此扩展时的id计算。
使pg_stat_statements跟踪top和嵌套语句 (Julien Rohaud)
以前,当跟踪所有语句时,相同的top和嵌套将报表作为单个条目进行跟踪;但它似乎更有用以分离这些用途。
将实用程序命令的行数添加到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 |