PostgreSQL 发布版本 13
- E.2.1. 概览
- E.2.2. 迁移到第13版
- E.2.3. 变化情况
- E.2.4. 致谢
发布日期: 2020-09-24
E.2.1. 概览
PostgreSQL 13 包含许多新的功能和增强功能,包括:
-
从B树索引条目的去重中节省空间和提高性能
-
提高了使用聚合表或分区表的查询性能
-
在使用扩展统计时,更好地进行查询计划
-
索引的并行vacuum回收
-
增量排序
上述项目和PostgreSQL13的其他新功能将在以下章节中详细解释。
E.2.2. 迁移到第13版
对于那些希望从任何以前的版本迁移数据的人来说,需要使用pg_dumpall进行转储/恢复,或者使用pg_upgrade或逻辑复制。 关于迁移到新的主要版本的一般信息,请参见第 18.6 节。
第13版包含一些变化,可能会影响与以前版本的兼容性。 请注意以下不兼容情况:
-
改变
SIMILAR TO ... ESCAPE NULL
以返回NULL
。 (Tom Lane)这个新行为符合SQL规范。以前,一个空的
ESCAPE
值被认为是指使用默认的转义字符串(一个反斜杠字符)。 这也适用于substring(
。 在旧的视图中,通过保持原函数不变,保留了以前的行为。text
FROMpattern
ESCAPEtext
) -
让
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并希望看到辅助进程的查询将需要使用左键连接。
-
重新命名各种wait events以提高一致性。 (Fujii Masao, Tom Lane)
-
修复
ALTER FOREIGN TABLE ... 重命名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。它是以兆字节为单位的,而不是像以前的参数那样以文件数为单位。如果你以前使用
wal_keep_segments
,下面的公式会给你一个近似的设置:wal_keep_size = wal_keep_segments * wal_segment_size (typically 16MB)
-
移除对使用PostgreSQL8.0以前的语法定义operator class的支持。(Daniel Gustafsson)
-
移除对定义foreign key constraints的支持,使用PostgreSQL 7.3以前的语法。 (Daniel Gustafsson)
-
移除对 "不透明"伪类型的支持,这些伪类型是由PostgreSQL7.3以前的服务器使用的。 (Daniel Gustafsson)
-
移除对升级未打包(9.1前)扩展的支持 (Tom Lane)
CREATE EXTENSION
的FROM
选项已不再被支持。 任何仍然使用未打包的扩展的安装,在更新到PostgreSQL13之前,应该将它们升级到打包的版本。 -
移除对时区数据库中
posixrules
文件的支持 (Tom Lane)IANA的时区组已经废弃了这个功能,这意味着它将在未来几年逐渐从系统的时区数据库中消失。 为了避免在时区数据更新时出现意外的行为变化,我们已经从第13版开始删除了PostgreSQL对该功能的支持。 这只影响POSIX风格的时区规范的行为,这些规范缺乏明确的夏令时过渡规则;以前,过渡规则可以通过安装一个自定义的
posixrules
文件来确定,但现在它是硬连接的。 对于任何受影响的安装,建议的修复方法是开始使用一个地理时区名称。 -
在ltree中,当
lquery
模式包含相邻的星号与大括号时,例如,*{2}.*{3}
,正确解释为*{5}
(Nikita Glukhov)。 -
修正pageinspect的
bt_metap()
,以返回更合适的数据类型,减少溢出的可能性。 (Peter Geoghegan)
E.2.3. 变化情况
下面你将看到PostgreSQL13和前一个主要版本之间的变化的详细说明。
E.2.3.1. 服务器
E.2.3.1.1. 分区
-
允许pruning分区在更多情况下发生。 (Yuzuko Hosoya, Amit Langote, Álvaro Herrera)
-
允许partitionwise joins在更多情况下发生。 (Ashutosh Bapat, Etsuro Fujita, Amit Langote, Tom Lane)
例如,分区连接现在可以在分区表之间发生,即使它们的分区边界不完全匹配。
-
在分区表上支持行级
BEFORE
触发器。 (Álvaro Herrera)但是,这样的触发器不允许改变数据写入的目的分区。
-
允许分区表通过publications进行逻辑复制。(Amit Langote)
以前,分区必须被单独复制。 现在,可以显式地发布一个分区表,使其所有的分区都自动发布。 添加/删除一个分区会导致它同样被添加到或从发布中删除。
CREATE PUBLICATION
选项publish_via_partition_root
控制是否对分区的修改还是作为它们父级的修改发布。 -
允许逻辑复制到订阅者的分区表内 (Amit Langote)
以前,订阅者只能接收非分区表的行。
-
允许在分区表达式中使用整行变量(即
table
.*
)。 (Amit Langote)
E.2.3.1.2. 索引
-
更有效地在B树索引中存储重复数据。 (Anastasia Lubennikova, Peter Geoghegan)
这允许对低基数的列进行有效的B-tree索引,只存储一次重复的键。 使用 pg_upgrade 升级的用户将需要使用
REINDEX
来让已有的索引使用这个功能。 -
允许GiST和SP-GiST索引在
box
列上支持ORDER BY
查询。 (Nikita Glukhov)box
<->point
-
允许GIN索引更有效地处理
tsquery
搜索中的!
(NOT) 从句 (Nikita Glukhov, Alexander Korotkov, Tom Lane, Julien Rouhaud) -
允许索引操作者类传参 (Nikita Glukhov)
-
允许
CREATE INDEX
指定GiST签名长度和整数范围的最大数量。 (Nikita Glukhov)在四字节和八字节的integer array、tsvector、pg_trgm、 ltree和hstore列上创建的索引现在可以控制这些GiST索引参数,而不是使用默认值。
-
防止使用非默认排序的索引被添加作为表的唯一或主键约束。 (Tom Lane)
索引的字符集或者排序规则必须与底层列的相匹配,但是
ALTER TABLE
以前没有检查这一点。
E.2.3.1.3. 优化器
E.2.3.1.4. 总体性能
-
实现 增量排序 (James Coleman, Alexander Korotkov, Tomas Vondra)
如果已知一个中间查询结果是由一个或多个所需排序的前导键排序的,那么如果行被分批排序,且前导键相等,则可以只考虑其余的键进行额外的排序。
如果需要,可以用enable_incremental_sort来控制。
-
提高排序inet值的性能。 (Brandur Leach)
-
允许哈希聚合对聚合大结果集使用磁盘存储。 (Jeff Davis)
以前,如果预计hash聚合会使用超过work_mem的内存,就会避免进行hash聚合。 现在,尽管如此,也可以选择一个哈希聚合计划。 如果哈希表超过
work_mem
几倍hash_mem_multiplier,就会溢出到磁盘。这种行为通常比旧的行为要好,在旧的行为中,一旦选择了哈希聚合,无论它有多大,哈希表都会被保存在内存中 — 如果计划器被错误地估计了,它可能会非常大。 如果需要,可以通过增加
hash_mem_multiplier
来获得类似的行为。 -
允许在autovacuum中插入,而不仅仅是更新和删除,以触发autovacuum清理行为。 (Laurenz Albe, Darafei Praliaskouski)
以前,仅插入数据会触发自动分析,但不会触发autovacuum自动清理,理由是不可能有任何被标记删除的行需要删除。 然而,vacuum扫描还有其他有用的副作用,比如设置页面全部可见的位,这提高了index-only扫描的效率。 另外,允许只插入表接受周期性的vacuum扫描有助于分散“freezing”旧元组的工作,这样,当整个表一下子达到反包围阈值时,就不会突然有大量的冻结工作要做。
如果有必要,可以用新的参数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的表,其文件将被sync而不是生成WAL。 以前,这只对
COPY
操作进行,但该实现有一个错误,在崩溃恢复期间可能导致数据丢失。 -
当许多表空间被使用时,重放
DROP DATABASE
命令时,改善性能。 (Fujii Masao) -
提高大表truncation的性能。(Kirk Jamison)
-
改进对TOAST的前导字节的检索。 (Binguo Bao, Andrey Borodin)
以前,压缩的行外TOAST值被完全fetch,即使已知只需要一些前导字节。现在 , 仅fetch产生结果的数据就好.
-
提高
LISTEN
/NOTIFY
的性能。 (Martijn van Oosterhout, Tom Lane) -
加快整数与文本的转换速度 (David Fetter)
-
减少包含许多SQL语句的查询字符串和扩展脚本的内存使用。 (Amit Langote)
E.2.3.1.5. 监控
-
允许
EXPLAIN
、auto_explain、autovacuum和 pg_stat_statements追踪WAL使用统计信息 (Kirill Bychik, Julien Rouhaud) -
允许记录SQL语句的样本,而不是所有的语句 (Adrien Nayrat)
log_statement_sample_rate这些语句中的一部分将被记录。 那些花费超过log_min_duration_sample时间的语句将被记录下来。
-
在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函数应该在出错时生成回溯记录。
-
让vacuum缓冲区计数器的宽度为64位,以避免溢出。 (Álvaro Herrera)
E.2.3.1.6. 系统视图
-
在pg_stat_activity中添加
leader_pid
,以报告一个并行worker的leader进程。 (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.2.3.1.7. 等待事件
-
在用
posix_fallocate()
创建DSM段时报告一个等待事件。 (Thomas Munro) -
添加等待事件VacuumDelay以报告基于成本的vacuum延迟 (Justin Pryzby)
-
为WAL存档和恢复暂停添加等待事件 (Fujii Masao)
新事件是BackupWaitWalArchive和RecoveryPause。
-
添加等待事件RecoveryConflictSnapshot和RecoveryConflictTablespace来监控恢复冲突 (Masahiko Sawada)
-
提高基于BSD的系统上等待事件的性能 (Thomas Munro)
E.2.3.1.8. 身份认证
-
只允许超级用户查看ssl_passphrase_command设置。 (Insung Moon)
作为一项安全预防措施,这一点被改变了。
-
将服务器默认的用于加密连接的最小TLS版本从1.0改为1.2。 (Peter Eisentraut)
这个选择可以由ssl_min_protocol_version控制。
E.2.3.1.9. 服务器配置
-
在只读事务模式下,收紧关于允许哪些实用程序命令的规则 (Robert Haas)
这一变化也增加了可以在并行查询中运行的实用命令的数量。
-
允许allow_system_table_mods在服务器启动后进行更改 (Peter Eisentraut)
-
当allow_system_table_mods被设置时,不允许非超级用户修改系统表。(Peter Eisentraut)
以前,如果allow_system_table_mods在服务器启动时被设置,非超级用户可以对系统表发出
INSERT
/UPDATE
/DELETE
命令。 -
启用对Windows上Unix-domain sockets的支持。 (Peter Eisentraut)
E.2.3.2. 流式复制和恢复
-
允许通过重新加载来改变流式复制的配置设置 (Sergei Kornilov)
以前,要改变primary_conninfo和primary_slot_name,需要重新启动服务器。
-
允许WAL接收者在未指定永久复制槽时使用临时复制槽。 (Peter Eisentraut, Sergei Kornilov)
这种行为可以用wal_receiver_create_temp_slot启用。
-
允许复制槽的WAL存储受到max_slot_wal_keep_size的限制。(Kyotaro Horiguchi)
需要超过该值的复制槽被标记为无效。
-
允许standby promotion取消任何要求的暂停。 (Fujii Masao)
以前,当备用机处于暂停状态时,不能进行promotion。
-
如果恢复没有达到指定的恢复目标,则生成一个错误。 (Leif Gunnar Erlandsen, Peter Eisentraut)
以前,在达到WAL的末尾时,即使没有达到目标,备机也会自我promote。
-
允许控制 逻辑解码在溢出到磁盘之前使用多少内存 (Tomas Vondra, Dilip Kumar, Amit Kapila)
这是由 logical_decoding_work_mem 参数控制。
-
即使无效的页面被WAL引用,也允许继续恢复。 (Fujii Masao)
这是用ignore_invalid_pages启用的。
E.2.3.3. 实用命令
-
允许
VACUUM
并行地处理一个表的索引。 (Masahiko Sawada, Amit Kapila)新的
PARALLEL
选项控制了这一点。 -
允许
FETCH FIRST
使用WITH TIES
来返回任何与最后结果行相匹配的额外记录。(Surafel Temesgen) -
在
EXPLAIN
的BUFFER
输出中报告规划时间的缓冲区使用情况。 (Julien Rouhaud) -
使
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
命令中的bug (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.2.3.4. 数据类型
-
增加多态数据类型,供需要兼容参数的函数使用 (Pavel Stehule)
新的数据类型是
anycompatible
、anycompatiblearray
、anycompatiblenonarray
和anycompatiblerange
。 -
添加SQL数据类型
xid8
以揭示完整的事务idFullTransactionId。 (Thomas Munro)现有的
xid
数据类型只有4个字节,所以它不提供事务年代。 -
增加数据类型
regcollation
和相关函数,以表示校对(字符集)对象的OIDs。 (Julien Rouhaud) -
在某些情况下使用glibc版本作为collation版本标识。(Thomas Munro)
如果glibc版本发生变化,将发出关于可能损坏依赖字符集的索引的警告。
-
增加对Windows上的字符集版本的支持 (Thomas Munro)
-
允许
ROW
表达式用后缀符号提取其成员 (Tom Lane)例如,
(ROW(4, 5.0)).f1
现在返回4。
E.2.3.5. Functions
-
增加
jsonb_set()
的替代版本,改进了NULL
的处理。 (Andrew Dunstan)新的函数,
jsonb_set_lax()
,处理一个NULL
的新值,方法是将指定的键设置为JSON空,删除键,引发异常,或者根据要求返回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()
使用。 -
添加
SSSS
日期格式模式作为SQL标准的SS
的别名。 (Nikita Glukhov, Alexander Korotkov) -
添加函数
gen_random_uuid()
以生成第4版UUIDs (Peter Eisentraut) -
增加最大公倍数(
gcd
)和最小公倍数(lcm
)函数 (Vik Fearing) -
提高
numeric
类型的平方根(sqrt
)和自然对数(ln
)函数的性能和准确性。 (Dean Rasheed) -
添加函数
min_scale()
,该函数返回小数点右边的数字数量,这些数字是完全精确地表示numeric
值所需要的。 (Pavel Stehule) -
添加函数
trim_scale()
,通过删除尾部的零来减少numeric
值的比例。 (Pavel Stehule) -
添加距离运算符的换算器。 (Nikita Glukhov)
例如,以前只支持
point
<->
line
,现在line
<->
point
也可以。 -
创建所有transaction ID函数的
xid8
版本。 (Thomas Munro)旧的基于
xid
的函数仍然存在,以便向后兼容。 -
允许
get_bit()
和set_bit()
设置bytea
值的前256MB以外的位。 (Movead Li) -
允许advisory-lock函数在某些并行操作中使用 (Tom Lane)
-
增加删除对象对扩展的依赖的能力 (Álvaro Herrera)
该对象可以是一个函数、物化视图、索引或触发器。语法是
ALTER ... NO DEPENDS ON
。
E.2.3.6. PL/pgSQL
-
提高简单PL/pgSQL表达式的性能 (Tom Lane, Amit Langote)
-
提高使用不可变表达式的PL/pgSQL函数的性能 (Konstantin Knizhnik)
E.2.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.2.3.8. 客户端应用
E.2.3.8.1. psql
-
在psql的默认prompts中添加事务状态(
%x
)。(Vik Fearing) -
允许次要的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)在verbose模式下,表/索引/视图显示该对象是永久的、临时的还是未记录的。
-
改进psql的
d
对TOAST表的输出。 (Justin Pryzby) -
修复psql的
\e
命令后的重新显示 (Tom Lane)当退出编辑器时,如果查询没有以分号或
\g
结束,现在将显示查询缓冲区的内容。 -
在psql中添加
\warn
命令 (David Fetter)这就像
echo
,只是文本被发送到stderr而不是stdout。 -
在命令行
--help
输出中添加PostgreSQL主页。(Peter Eisentraut)
E.2.3.8.2. pgbench
-
允许pgbench对其“accounts”表进行分区 (Fabien Coelho)
这允许对分区进行性能测试。
-
添加pgbench命令
/aset
,其行为类似于/gset
,但用于多个查询。 (Fabien Coelho) -
允许pgbench在服务器端生成其初始数据,而不是在客户端。 (Fabien Coelho)
-
允许pgbench使用选项
--show-script
来显示脚本内容。 (Fabien Coelho)
E.2.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在rewinding前自动运行崩溃恢复。 (Paul Guo, Jimmy Yih, Ashwin Agrawal)
这可以通过使用
--no-ensure-shutdown
来禁用。 -
增加
PREPARE TRANSACTION
相关信息,由pg_waldump报告。 (Fujii Masao) -
添加pg_waldump选项
--quiet
以抑制非错误输出。 (Andres Freund, Robert Haas) -
添加pg_dump选项
--include-foreign-data
来转储外部服务器的数据。 (Luis Carril) -
允许由vacuumdb运行的vacuum命令以并行模式运行 (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.2.3.10. 文档
-
在文档中增加一个glossary。 (Corey Huinker, Jürgen Purtz, Roger Harkavy, Álvaro Herrera)
-
重新格式化包含函数和操作符信息的表格,使之更加清晰。(Tom Lane)
-
升级到使用DocBook 4.5。 (Peter Eisentraut)
E.2.3.11. 源代码
-
增加对Visual Studio 2019上构建的支持 (Haribabu Kommi)
-
增加对MSYS2的构建支持 (Peter Eisentraut)
-
为Power PC编译器增加compare_exchange和fetch_add汇编语言代码 (Noah Misch)
-
更新Snowball stemmer全文搜索使用的词典 (Panagiotis Mavrogiorgos)
这增加了希腊语的词根,并改进了丹麦语和法语的词根。
-
删除对Windows 2000的支持 (Michael Paquier)
-
移除对非ELF BSD系统的支持。 (Peter Eisentraut)
-
移除对Python 2.5.X及以前版本的支持。 (Peter Eisentraut)
-
移除支持的OpenSSL 0.9.8和1.0.0版 (Michael Paquier)
-
移除configure选项
--disable-float8-byval
和--disable-float4-byval
。 (Peter Eisentraut)为了与一些零版本的C函数兼容,需要这些函数,但这些函数已不再被支持。
-
将查询字符串传递给计划器Hook函数 (Pascal Legrand, Julien Rouhaud)
-
添加
TRUNCATE
命令挂钩 (Yuli Khodorkovskiy) -
添加TLS初始hook (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.2.3.12. 其他模块
-
允许extensions被指定为可信的。 (Tom Lane)
拥有数据库级
CREATE
权限的用户可以在数据库中安装此类扩展,即使他们不是超级用户。 这一变化也删除了pg_pltemplate
系统目录。 -
允许非超级用户在不使用密码的情况下连接到postgres_fdw外部服务器 (Craig Ringer)
具体来说,允许超级用户为用户映射设置
password_required
为false。 仍然必须注意防止非超级用户使用超级用户凭证连接到外部服务器。 -
允许postgres_fdw使用证书认证 (Craig Ringer)
不同的用户可以使用不同的证书。
-
允许sepgsql控制访问
TRUNCATE
命令。 (Yuli Khodorkovskiy) -
添加扩展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)也允许非*查询使用数字范围({})的匹配。
-
增加对ltree、lquery和ltxtquery类型的二进制I/O的支持 (Nino Floris)
-
为dict_int增加一个选项,以忽略整数的signv。 (Jeff Janes)
-
添加adminpack函数
pg_file_sync()
以允许fsync'ing一个文件 (Fujii Masao) -
添加pageinspect函数来输出
t_infomask
/t_infomask2
值为人性化可读格式(Craig Ringer, Sawada Masahiko, Michael Paquier) -
在pageinspect输出中添加B树索引去重处理列 (Peter Geoghegan)
E.2.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 |