E.20. 发布版本 15 #
发布日期:. 2022-10-13
E.20.1. 概述 #
PostgreSQL 15 包含许多新特性和增强功能,包括:
支持 SQL
MERGE命令。在逻辑复制发布中,通过指定列列表和行过滤条件有选择地发布表的内容。
更多的压缩选项,包括支持 Zstandard(zstd)压缩。这也包括在 pg_basebackup 期间由服务器端执行压缩。
支持使用 JSON 格式进行结构化服务器日志输出。
性能改进,特别是在内存排序和磁盘排序方面。
上述条目以及 PostgreSQL 15 的其他新特性将在下面的章节中作更详细的说明。
E.20.2. 迁移到版本 15 #
对于希望从任何以前的版本迁移数据的人来说,需要使用 pg_dumpall 进行转储/恢复,或者使用 pg_upgrade 或逻辑复制。有关迁移到新主要版本的通用信息,请参阅第 19.6 节。
版本 15 包含多项可能影响与先前版本兼容性的变更。请注意以下不兼容之处:
移除
public模式对PUBLIC的创建权限(Noah Misch)§这一默认设置是模式的安全使用方式之一;自 CVE-2018-1058 安全发布以来,第 5.9.6 节一直推荐这种方式。此变更适用于新的数据库集簇和现有集簇中新创建的数据库。升级集簇或恢复数据库导出将保留
public的现有权限。对于现有数据库,尤其是多用户数据库,请考虑撤销
public模式上的CREATE权限,以采用这一新的默认设置。对于无需防御内部威胁的新数据库,授予CREATE权限即可恢复先前版本的行为。将
public模式的所有者更改为新的pg_database_owner角色(Noah Misch)§这使每个数据库的所有者都能对其数据库中的
public模式行使所有者权限。此前,该模式由引导超级用户拥有,因此非超级用户的数据库所有者无法对其执行任何操作。此变更适用于新的数据库集簇和现有集簇中新创建的数据库。升级集簇或恢复数据库导出将保留
public的现有所有权设置。移除长期弃用的独占备份模式(David Steele,Nathan Bossart)§
如果数据库服务器在此模式下突然停止,服务器可能无法启动。非独占备份模式在各方面都被认为更优。函数
pg_start_backup()/pg_stop_backup()已重命名为pg_backup_start()/pg_backup_stop(),而函数pg_backup_start_time()和pg_is_in_backup()已被移除。将
hash_mem_multiplier默认值增加到 2.0(Peter Geoghegan)§这允许查询 hash 操作使用比其他操作更多的
work_mem内存。移除服务器端语言
plpython2u和通用 Python 语言plpythonu(Andres Freund)§Python 2.x 已不再受支持。虽然
plpythonu最初的意图是最终可以指向plpython3u,但现在更改它似乎更可能造成问题而非解决问题,因此它被直接移除。如果向
array_to_tsvector()传递空字符串数组元素,则生成错误(Jean-Christophe Arnu)§这是被禁止的,因为词位不应为空。先前 Postgres 版本的用户应确认未存储空词位,因为它们可能导致导出/恢复失败和结果不一致。
防止
CREATE OR REPLACE VIEW更改输出列的排序规则(Tom Lane)§禁止零长度的 Unicode 标识符,例如
U&""(Peter Eisentraut)§非 Unicode 的零长度标识符已经被禁止。
防止数字字面量具有非数字的尾随字符(Peter Eisentraut)§
以前,像
123abc这样的查询文本会被解释为123后跟一个单独的标记abc。调整 JSON 数字字面量处理以匹配 SQL/JSON 标准(Peter Eisentraut)§
这接受像
.1和1.这样的数字格式,并禁止数字字面量之后的尾随垃圾,如1.type()。当
interval输入为大于月的单位提供小数值时,将其舍入到最接近的整数月数(Bruce Momjian)§例如,将
1.99 years转换为2 years,而不是像以前那样转换为1 year 11 months。改进带有尾随句点的
interval解析的一致性(Tom Lane)§带有尾随句点的数字在某些平台上被拒绝。
将
interval输出函数标记为 stable 而非 immutable,因为它依赖于IntervalStyle(Tom Lane)§例如,这将导致依赖于
interval值文本输出的索引创建失败。受影响的函数是
justify_interval()、justify_hours()和justify_days()。更改类型
"char"非 ASCII 字符的 I/O 格式(Tom Lane)§高位被设置的字节现在输出为反斜杠和三个八进制数字,以避免编码问题。
移除登录角色对其自身角色成员资格的默认
ADMIN OPTION权限(Robert Haas)§以前,登录角色即使没有
ADMIN OPTION权限也可以添加/移除其自身角色的成员。允许逻辑复制以订阅的所有者身份运行(Mark Dilger)§
因为不检查行级安全策略,所以只有超级用户、具有
bypassrls的角色和表所有者才能复制到具有行级安全策略的表中。防止在订阅所有者对表没有
SELECT权限的表上执行UPDATE和DELETE逻辑复制操作(Jeff Davis)§UPDATE和DELETE命令通常也涉及读取表,因此要求订阅所有者具有表的SELECT权限。当
EXPLAIN引用会话的临时对象模式时,将其称为pg_temp(Amul Sul)§以前报告的是实际模式名称,导致不同会话之间的不一致。
修复
pg_statio_all_tables以在 TOAST 表具有多个索引的罕见情况下求和值(Andrei Zubkov)§以前这种情况会为每个索引显示一行。
禁止设置与已安装扩展名称匹配但不是该扩展声明的变量之一的自定义选项(Florin Irion,Tom Lane)§ § §
此变更导致在扩展加载期间删除任何此类已存在的变量,然后防止在会话中稍后创建新的变量。其目的是防止关于变量是否与扩展关联的混淆。
移除过时的服务器变量
stats_temp_directory(Andres Freund,Kyotaro Horiguchi)§改进用于计算
random()的算法(Fabien Coelho)§ §这将导致
random()的结果与以前版本发出的结果不同,即使是相同的种子值。libpq 的
PQsendQuery()函数在管道模式下不再被支持(Álvaro Herrera)§使用该组合的应用程序需要修改为使用
PQsendQueryParams()代替。在非 Windows 平台上,查询
HOME环境变量以查找用户的主目录(Anders Kaseorg)§如果
HOME为空或未设置,则回退到先前的方法,检查<pwd.h>数据库。此变更影响 libpq(例如,在查找~/.pgpass时)以及各种客户端应用程序。移除 pg_dump 的
--no-synchronized-snapshots选项(Tom Lane)§所有仍受支持的服务器版本都支持同步快照,因此不再需要此选项。
在 psql 的
--single-transaction模式中检测到错误后,仅在设置了ON_ERROR_STOP时才将最终的COMMIT命令更改为ROLLBACK(Michael Paquier)§避免在 postgres_fdw 发送的查询中对常量进行不必要的类型转换(Dian Fay)§
当本地和远程数据库之间的列类型故意不同时,这种类型转换可能会导致错误。
移除 xml2 的
xml_is_well_formed()函数(Tom Lane)§此函数自 Postgres 9.1 以来已在核心后端中实现。
允许自定义扫描提供者指示它们是否支持投影(Sven Klemm)§
现在默认假设自定义扫描提供者不支持投影;支持投影的提供者需要为此版本进行更新。
E.20.3. 变更 #
下面你将找到 PostgreSQL 15 与上一个主版本之间变更的详细说明。
E.20.3.1. 服务器 #
记录并检查每个数据库的排序规则版本(Peter Eisentraut)§
此功能旨在检测排序规则版本变更以避免索引损坏。函数
pg_database_collation_actual_version()报告底层操作系统的排序规则版本,而ALTER DATABASE ... REFRESH将记录的数据库排序规则版本设置为与操作系统排序规则版本匹配。允许将 ICU 排序规则设置为集簇和数据库的默认值(Peter Eisentraut)§
以前,只能在集簇和数据库级别选择基于 libc 的排序规则。ICU 排序规则只能通过显式的
COLLATE子句使用。增加系统视图
pg_ident_file_mappings以报告pg_ident.conf信息(Julien Rouhaud)§
改进引用分区表的查询的规划时间(David Rowley)§
此变更在只有少数分区相关时有所帮助。
允许分区的有序扫描在更多情况下避免排序(David Rowley)§
以前,具有
DEFAULT分区或包含多个值的LIST分区的分区表不能用于有序分区扫描。现在,如果这些分区在规划期间被剪枝,则可以使用它们。改进在分区表上执行将行在分区之间移动的更新时的外键行为(Amit Langote)§
以前,这样的更新在源分区上运行删除操作,在目标分区上运行插入操作。PostgreSQL 现在将在分区根上运行更新操作,提供更清晰的语义。
修复分区表上的
ALTER TRIGGER RENAME以正确重命名所有分区上的触发器(Arne Roland,Álvaro Herrera)§同时禁止重命名克隆的触发器。
E.20.3.1.2. 索引 #
允许系统表和 TOAST 表上的 B-树索引高效存储重复项(Peter Geoghegan)§
以前,这些类型的索引禁用了去重。
改进使用排序构建的 GiST 索引的查找性能(Aliaksandr Kalenik,Sergei Shoulbakov,Andrey Borodin)§
允许唯一约束和索引将
NULL值视为不唯一(Peter Eisentraut)§以前
NULL条目总是被视为不同的值,但现在可以通过使用UNIQUE NULLS NOT DISTINCT创建约束和索引来更改此行为。允许
^@起始匹配操作符和starts_with()函数在使用 C 排序规则时使用 B-树索引(Tom Lane)§以前它们只能使用 SP-GiST 索引。
E.20.3.1.3. 优化器 #
允许扩展统计记录父表及其所有子表的统计信息(Tomas Vondra,Justin Pryzby)§
常规统计已经分别跟踪父表和父表加所有子表的统计信息。
增加服务器变量
recursive_worktable_factor以允许用户指定递归查询工作表的预期大小(Simon Riggs)§
E.20.3.1.4. 一般性能 #
允许对包含许多常量的
NOT IN子句使用 hash 查找(David Rowley,James Coleman)§以前代码总是顺序扫描值列表。
允许
SELECT DISTINCT并行化(David Rowley)§通过每次处理 16 字节来加速 UTF-8 文本的编码验证(John Naylor,Heikki Linnakangas)§
这将改进文本密集型操作,如
COPY FROM。改进超过
work_mem的排序性能(Heikki Linnakangas)§ §当排序数据不再适合
work_mem时,切换到使用比以前更多输出流的批量排序算法。改进内存排序的性能并减少内存消耗(Ronan Dunklau,David Rowley,Thomas Munro,John Naylor)§ § §
允许 WAL 全页写入使用 LZ4 和 Zstandard 压缩(Andrey Borodin,Justin Pryzby)§ §
这由
wal_compression服务器设置控制。增加在 macOS 上使用直接 I/O 写入 WAL 的支持(Thomas Munro)§
这仅在
max_wal_senders = 0且wal_level = minimal时有效。改进使用
row_number()、rank()、dense_rank()和count()的窗口函数的性能(David Rowley)§改进高核心数 ARM64 系统上自旋锁的性能(Geoffrey Blake)§
E.20.3.1.5. 监控 #
启用检查点和慢速自动清理操作的默认日志记录(Bharath Rupireddy)§
这将
log_checkpoints的默认值更改为on,将log_autovacuum_min_duration的默认值更改为 10 分钟。这将导致即使是空闲的服务器也会生成一些日志输出,这在没有日志文件轮转的资源受限服务器上可能会造成问题。在这种情况下应更改这些默认值。在服务器缓慢启动期间在服务器日志中生成进度消息(Nitin Jadhav,Robert Haas)§ §
消息报告延迟的原因。通知的时间间隔由新的服务器变量
log_startup_progress_interval控制。将累计统计系统数据存储在共享内存中(Kyotaro Horiguchi,Andres Freund,Melanie Plageman)§ §
以前,此数据通过 UDP 数据包发送到统计收集器进程,只有在通过文件系统传输后会话才能读取。现在不再有单独的统计收集器进程。
增加临时文件块 I/O 的
EXPLAIN (BUFFERS)输出(Masahiko Sawada)§允许以 JSON 格式进行日志输出(Sehrope Sarkuni,Michael Paquier)§
新的设置是
log_destination = jsonlog。允许
pg_stat_reset_single_table_counters()重置所有数据库间共享的关系的计数器(Sadhuprasad Patro)§为本地 shell 命令增加等待事件(Fujii Masao)§
新的等待事件在调用
archive_command、archive_cleanup_command、restore_command和recovery_end_command时使用。
E.20.3.1.6. 权限 #
允许通过视图进行的表访问可选择性地由视图调用者的权限控制(Christoph Heiss)§
以前,视图访问总是被视为由视图所有者完成。这仍然是默认行为。
允许
pg_write_server_files预定义角色的成员执行服务器端基础备份(Dagfinn Ilmari Mannsåker)§以前只有超级用户可以执行此类备份。
允许
GRANT授予通过SET和ALTER SYSTEM更改单个服务器变量的权限(Mark Dilger)§ §新函数
has_parameter_privilege()报告此权限。增加预定义角色
pg_checkpoint,允许其成员运行CHECKPOINT(Jeff Davis)§ §以前只有超级用户可以运行检查点。
允许
pg_read_all_stats预定义角色的成员访问pg_backend_memory_contexts和pg_shmem_allocations视图(Bharath Rupireddy)§以前这些视图只能由超级用户访问。
允许
GRANT授予pg_log_backend_memory_contexts()的权限(Jeff Davis)§以前此函数只能由超级用户运行。
E.20.3.1.7. 服务器配置 #
增加服务器变量
shared_memory_size以报告已分配共享内存的大小(Nathan Bossart)§ §增加服务器变量
shared_memory_size_in_huge_pages以报告所需的大内存页数量(Nathan Bossart)§ §这仅在 Linux 上受支持。
在单用户模式下遵守服务器变量
shared_preload_libraries(Jeff Davis)§此变更支持使用
shared_preload_libraries加载自定义访问方法和 WAL 资源管理器,即使在单用户模式下这对数据库访问也是必需的。在 Solaris 上,将
dynamic_shared_memory_type的默认设置设为sysv(Thomas Munro)§之前的默认选择
posix可能导致此平台上的虚假失败。允许
postgres -C正确报告运行时计算的值(Nathan Bossart)§以前,运行时计算的值
data_checksums、wal_segment_size和data_directory_mode会报告在运行中的服务器上不准确的值。但是,这在运行中的服务器上不起作用。
E.20.3.2. 流复制与恢复 #
增加对服务器端基础备份的 LZ4 和 Zstandard 压缩支持(Jeevan Ladhe,Robert Haas)§ § §
在崩溃恢复期间运行检查点进程和后台写入进程(Thomas Munro)§
这有助于加速长时间的崩溃恢复。
允许 WAL 处理预取所需的文件内容(Thomas Munro)§
这由服务器变量
recovery_prefetch控制。允许通过可加载模块进行归档(Nathan Bossart)§
以前,归档只能通过调用 shell 命令完成。新的服务器变量
archive_library可以设置为指定用于归档的库。不再要求在
START_REPLICATION之前运行IDENTIFY_SYSTEM(Jeff Davis)§
允许发布模式中的所有表(Vignesh C,Hou Zhijie,Amit Kapila)§ § §
例如,现在支持此语法:
CREATE PUBLICATION pub1 FOR TABLES IN SCHEMA s1,s2。ALTER PUBLICATION支持类似的语法。稍后添加到列出的模式中的表也将被复制。允许使用
WHERE子句过滤发布内容(Hou Zhijie,Euler Taveira,Peter Smith,Ajin Cherian,Tomas Vondra,Amit Kapila)§ § §不满足
WHERE子句的行不会被发布。允许将发布内容限制为特定列(Tomas Vondra,Álvaro Herrera,Rahila Syed)§
允许使用
ALTER SUBSCRIPTION ... SKIP在订阅者上跳过事务(Masahiko Sawada)§为逻辑复制增加预备(两阶段)事务支持(Peter Smith,Ajin Cherian,Amit Kapila,Nikhil Sontakke,Stas Kelvich)§ § §
新的
CREATE_REPLICATION_SLOT选项称为TWO_PHASE。pg_recvlogical 现在在创建槽时支持新的--two-phase选项。防止空事务的逻辑复制(Ajin Cherian,Hou Zhijie,Euler Taveira)§
以前,如果订阅的表没有被修改,发布者会向订阅者发送空事务。
增加 SQL 函数来监控逻辑复制槽的目录内容(Bharath Rupireddy)§
新函数是
pg_ls_logicalsnapdir()、pg_ls_logicalmapdir()和pg_ls_replslotdir()。它们可以由预定义的pg_monitor角色的成员运行。允许订阅者在出错时停止应用逻辑复制变更(Osumi Takamichi,Mark Dilger)§
这通过订阅者选项
disable_on_error启用,避免流应用期间可能的无限错误循环。调整订阅者服务器变量以匹配发布者,使 datetime 和 float8 值被一致地解释(Japin Li)§
某些发布者可能依赖于不一致的行为。
增加系统视图
pg_stat_subscription_stats以报告订阅者活动(Masahiko Sawada)§ §新函数
pg_stat_reset_subscription_stats()允许重置这些统计计数器。在
pg_publication_tables系统视图中抑制重复条目(Hou Zhijie)§在某些情况下,一个分区可能出现多次。
E.20.3.3. 工具命令 #
增加 SQL
MERGE命令以调整一个表使其与另一个表匹配(Simon Riggs,Pavan Deolasee,Álvaro Herrera,Amit Langote)§这与
INSERT ... ON CONFLICT类似,但更面向批量操作。增加
COPY文本格式中HEADER选项的支持(Rémi Lapeyre)§ §新选项导致列名被输出,并可选择在输入时进行验证。
增加新的 WAL 日志记录方法用于数据库创建(Dilip Kumar)§
这是复制模板数据库的新默认方法,因为它避免了数据库创建期间对检查点的需求。但是,如果模板数据库很大,它可能会很慢,因此旧方法仍然可用。
允许
CREATE DATABASE设置数据库 OID(Shruthi Gowda,Antonin Houska)§防止
DROP DATABASE、DROP TABLESPACE和ALTER DATABASE SET TABLESPACE在 Windows 上并发使用时偶尔失败(Thomas Munro)§允许外键
ON DELETE SET操作仅影响指定的列(Paul Martinez)§以前,外键中的所有列总是受到影响。
允许
ALTER TABLE修改表的ACCESS METHOD(Justin Pryzby,Jeff Davis)§当
ALTER TABLE导致表重写时正确调用对象访问钩子(Michael Paquier)§跟踪返回复合类型的函数结果中各个列的依赖关系(Tom Lane)§
以前,如果视图或规则包含对返回复合类型的函数结果中特定列的引用,这不会被记录为依赖关系;视图或规则仅被认为依赖于整个复合类型。这意味着允许删除单个列,从而在以后使用视图或规则时造成问题。现在也记录了列级依赖关系,因此除非更改或删除视图,否则删除此类列将被拒绝。
E.20.3.4. 数据类型 #
E.20.3.5. 函数 #
为
range_agg()增加多范围输入(Paul Jungwirth)§增加正则表达式函数以与其他关系系统兼容(Gilles Darold,Tom Lane)§
新函数是
regexp_count()、regexp_instr()、regexp_like()和regexp_substr()。还为regexp_replace()增加了一些新的可选参数。为
to_char()增加格式代码of、tzh和tzm(Nitin Jadhav)§这些的大写等价形式已经被支持。
当将
AT TIME ZONE应用于time with time zone值时,使用事务开始时间而不是挂钟时间来确定是否适用夏令时(Aleksander Alekseev,Tom Lane)§这允许将转换视为稳定的而不是易变的,并且每次调用节省一次内核调用。
在带数组参数的
ts_delete()和setweight()函数中忽略 NULL 数组元素(Jean-Christophe Arnu)§这些函数实际上会忽略空字符串数组元素(因为它们永远不会匹配有效的词素)。让它们也忽略 NULL 元素而不是失败似乎是一致的。
为
pg_size_pretty()和pg_size_bytes()增加 PB 单位支持(David Christensen)§更改
pg_event_trigger_ddl_commands()以使用实际模式名称输出对其他会话临时模式的引用(Tom Lane)§以前此函数将所有临时模式报告为
pg_temp,但对当前会话的临时模式以外的任何模式使用该名称是有误导性的。
E.20.3.8. 客户端应用 #
通过以更大的块发送数据来改进 psql 的
\copy命令的性能(Heikki Linnakangas)§增加
\dconfig命令以报告服务器变量(Mark Dilger,Tom Lane)§ § §这类似于服务器端的
SHOW命令,但它可以处理模式以方便地显示多个变量。增加
\getenv命令以将环境变量的值赋给 psql 变量(Tom Lane)§为
\lo_list和\dl命令增加+选项以显示大对象权限(Pavel Luzanov)§为
\watch命令增加分页器选项(Pavel Stehule,Thomas Munro)§这仅在 Unix 上受支持,由
PSQL_WATCH_PAGER环境变量控制。使 psql 在发送到服务器的查询中包含查询内的双连字符注释(Tom Lane,Greg Nancarrow)§ §
以前,这些注释在发送之前会从查询中删除。在任何查询文本之前的双连字符注释不会被发送,也不会被记录为单独的 psql 历史条目。
调整 psql,使 Readline 的 meta-
#命令插入双连字符注释标记(Tom Lane)§以前会插入井号标记,除非用户费心配置了非默认的注释标记。
使 psql 在一次向服务器传递多个查询时输出所有结果(Fabien Coelho)§
以前只显示最后一个查询结果。可以通过将
SHOW_ALL_RESULTSpsql 变量设置为off来恢复旧行为。在
--single-transaction模式中检测到错误后,仅在设置了ON_ERROR_STOP时才将最终的COMMIT命令更改为ROLLBACK(Michael Paquier)§以前,在
-c命令或-f脚本文件中检测到错误会导致在最后发出ROLLBACK,而不管ON_ERROR_STOP的值如何。改进 psql 的 Tab 补全(Shinya Kato,Dagfinn Ilmari Mannsåker,Peter Smith,Koyu Tanigawa,Ken Kato,David Fetter,Haiying Tang,Peter Eisentraut,Álvaro Herrera,Tom Lane,Masahiko Sawada)§ § § § § § § § § § § § § § § § § § § §
将 psql 反斜杠命令的支持限制为运行 PostgreSQL 9.2 或更高版本的服务器(Tom Lane)§
移除仅在与较旧服务器一起运行时使用的代码。与 9.2 相比不需要任何特定版本调整的命令仍然可以工作。
改进导出包含许多对象的数据库的性能(Tom Lane)§ § §
这也将改进 pg_upgrade 的性能。
改进并行 pg_dump 对具有大型 TOAST 表的表的性能(Tom Lane)§
增加导出/恢复选项
--no-table-access-method以强制恢复仅使用默认表访问方法(Justin Pryzby)§将 pg_dump 和 pg_dumpall 的支持限制为运行 PostgreSQL 9.2 或更高版本的服务器(Tom Lane)§
E.20.3.9. 服务器应用 #
为 pg_basebackup 增加新选项
--target以控制基础备份位置(Robert Haas)§新选项是
server(在本地写入备份)和blackhole(丢弃备份,用于测试)。允许 pg_basebackup 对基础备份文件进行服务器端 gzip、LZ4 和 Zstandard 压缩以及客户端 LZ4 和 Zstandard 压缩(Dipesh Pandit,Jeevan Ladhe)§ § §
客户端
gzip压缩已经被支持。允许 pg_basebackup 在服务器端压缩并在客户端存储之前解压缩(Dipesh Pandit)§
这通过指定服务器端压缩和纯文本输出格式来实现。
允许 pg_basebackup 的
--compress选项控制压缩位置(服务器或客户端)、压缩方法和压缩选项(Michael Paquier,Robert Haas)§ § §为 pg_receivewal 增加 LZ4 压缩方法(Georgios Kokolatos)§ §
这通过
--compress=lz4启用,需要使用--with-lz4构建二进制文件。为 pg_receivewal 的
--compress选项增加额外功能(Georgios Kokolatos)§改进 pg_receivewal 在正确的 WAL 位置重新启动的能力(Ronan Dunklau)§
以前,pg_receivewal 会基于存储在本地归档目录中的 WAL 文件启动,或从发送服务器的当前 WAL 刷新位置启动。通过此变更,如果发送服务器运行 Postgres 15 或更高版本,本地归档目录为空,并且指定了复制槽,则将使用复制槽的重新启动点。
为 pg_rewind 增加选项
--config-file以简化服务器配置文件存储在数据目录之外时的使用(Gunnar Bluth)§
E.20.3.9.1. pg_upgrade #
将 pg_upgrade 的日志和临时文件存储在新集簇的名为
pg_upgrade_output.d的子目录中(Justin Pryzby)§ § §以前这些文件留在当前目录中,需要手动清理。现在它们在 pg_upgrade 成功完成后会自动删除。
如果输出不是终端,则在 pg_upgrade 操作期间禁用默认状态报告(Andres Freund)§
可以通过使用
--verbose为非终端使用启用状态报告输出。使 pg_upgrade 报告所有具有无效连接设置的数据库(Jeevan Ladhe)§
以前只报告第一个具有无效连接设置的数据库。
使 pg_upgrade 保留表空间和数据库 OID,以及关系的 relfilenode 编号(Shruthi Gowda,Antonin Houska)§ § §
为 pg_upgrade 增加
--no-sync选项(Michael Paquier)§这仅推荐用于测试。
将 pg_upgrade 的支持限制为运行 PostgreSQL 9.2 或更高版本的旧服务器(Tom Lane)§
E.20.3.9.2. pg_waldump #
允许按关系文件节点、块号、分支编号和整页镜像过滤 pg_waldump 输出(David Christensen,Thomas Munro)§ §
使 pg_waldump 在被中断退出之前报告统计信息(Bharath Rupireddy)§
例如,在运行
pg_waldump --stats --follow的终端中按 Ctrl-C 将在退出前报告当前统计信息。这在 Windows 上不起作用。改进 pg_waldump 报告的某些事务 WAL 记录的描述(Masahiko Sawada,Michael Paquier)§
允许 pg_waldump 转储多个资源管理器的信息(Heikki Linnakangas)§
这通过多次指定
--rmgr选项来启用。
E.20.3.10. 文档 #
增加
pg_encoding_to_char()和pg_char_to_encoding()的文档(Ian Lawrence Barwick)§
E.20.3.11. 源代码 #
增加使用 cirrus-ci 进行持续集成测试的支持(Andres Freund,Thomas Munro,Melanie Plageman)§
增加配置选项
--with-zstd以启用 Zstandard 构建(Jeevan Ladhe,Robert Haas,Michael Paquier)§在可加载库的魔术块中增加 ABI 标识符字段,允许非社区 PostgreSQL 发行版识别与其他构建不兼容的库(Peter Eisentraut)§
ABI 字段不匹配将在加载时生成错误。
为
"char"创建新的pg_type.typcategory值(Tom Lane)§一些其他仅供内部使用的类型也已被分配到此类别。
增加新的协议消息
TARGET以指定用于基础备份的新COPY方法(Robert Haas)§pg_basebackup 现在使用此方法。
增加新的协议消息
COMPRESSION和COMPRESSION_DETAIL以指定压缩方法和选项(Robert Haas)§ §增加扩展设置自定义备份目标的支持(Robert Haas)§
允许扩展定义自定义 WAL 资源管理器(Jeff Davis)§
增加函数
pg_settings_get_flags()以获取服务器变量的标志(Justin Pryzby)§在 Windows 上,使用
PGDLLIMPORT标记导出服务器的所有全局变量(Robert Haas)§以前,在 Windows 上只有特定变量可供扩展访问。
构建 PostgreSQL 需要 GNU make 3.81 或更高版本(Tom Lane)§
需要 Perl 5.8.3 或更高版本(Dagfinn Ilmari Mannsåker)§
需要 Python 3.2 或更高版本(Andres Freund)§
E.20.3.12. 附加模块 #
改进 amcheck 对 TOAST 表的完整性检查(Mark Dilger)§
增加新模块 basebackup_to_shell 作为自定义备份目标的示例(Robert Haas)§ §
增加新模块 basic_archive 作为通过库执行归档的示例(Nathan Bossart)§
允许在布尔列上创建 btree_gist 索引(Emre Hasegeli)§ § §
这些可以用于排除约束。
修复 pageinspect 的
page_header()以处理 32KB 页面大小(Quan Zongliang)§以前,在某些情况下可能返回不正确的负值。
为 pg_stat_statements 增加临时文件块 I/O 的计数器(Masahiko Sawada)§
为 pg_stat_statements 增加 JIT 计数器(Magnus Hagander)§
增加新模块 pg_walinspect(Bharath Rupireddy)§
这提供了类似于 pg_waldump 的 SQL 级别输出。
E.20.3.12.1. postgres_fdw #
允许 postgres_fdw 下推
CASE表达式(Alexander Pyhalov)§增加服务器变量
postgres_fdw.application_name以控制 postgres_fdw 连接的应用程序名称(Hayato Kuroda)§ § §以前远程会话的
application_name只能在远程服务器上设置或通过 postgres_fdw 连接规范设置。postgres_fdw.application_name支持一些用于自定义的转义序列,使得在远程服务器上更容易区分这些连接。允许在 postgres_fdw 服务器上进行并行提交(Etsuro Fujita)§
这通过
CREATE SERVER选项parallel_commit启用。
E.20.4. 致谢 #
以下个人(按字母顺序)作为补丁作者、提交者、审阅者、测试人员或问题报告者为本版本做出了贡献。
| Abhijit Menon-Sen |
| Adam Brusselback |
| Adam Mackler |
| Adrian Ho |
| Ahsan Hadi |
| Ajin Cherian |
| Alastair McKinley |
| Aleksander Alekseev |
| Ales Zeleny |
| Alex Kingsborough |
| Alex Kozhemyakin |
| Alexander Korotkov |
| Alexander Kukushkin |
| Alexander Lakhin |
| Alexander Nawratil |
| Alexander Pyhalov |
| Alexey Borzov |
| Alexey Ermakov |
| Aliaksandr Kalenik |
| Álvaro Herrera |
| Amit Kapila |
| Amit Khandekar |
| Amit Langote |
| Amul Sul |
| Anastasia Lubennikova |
| Anders Kaseorg |
| Andreas Dijkman |
| Andreas Grob |
| Andreas Seltenreich |
| Andrei Zubkov |
| Andres Freund |
| Andrew Alsup |
| Andrew Bille |
| Andrew Dunstan |
| Andrew Gierth |
| Andrew Kesper |
| Andrey Borodin |
| Andrey Lepikhov |
| Andrey Sokolov |
| Andy Fan |
| Anton Melnikov |
| Anton Voloshin |
| Antonin Houska |
| Arjan van de Ven |
| Arne Roland |
| Arthur Zakirov |
| Ashutosh Bapat |
| Ashutosh Sharma |
| Ashwin Agrawal |
| Asif Rehman |
| Asim Praveen |
| Atsushi Torikoshi |
| Aya Iwata |
| Bauyrzhan Sakhariyev |
| Benoit Lobréau |
| Bernd Dorn |
| Bertrand Drouvot |
| Bharath Rupireddy |
| Björn Harrtell |
| Boris Kolpackov |
| Boris Korzun |
| Brad Nicholson |
| Brar Piening |
| Bruce Momjian |
| Bruno da Silva |
| Bryn Llewellyn |
| Carl Sopchak |
| Cary Huang |
| Chapman Flack |
| Chen Jiaoqian |
| Chris Bandy |
| Chris Lowder |
| Christian Quest |
| Christoph Berg |
| Christoph Heiss |
| Christophe Pettus |
| Christopher Painter-Wakefield |
| Claudio Freire |
| Clemens Zeidler |
| Corey Huinker |
| Dag Lem |
| Dagfinn Ilmari Mannsåker |
| Dan Kubb |
| Daniel Cherniy |
| Daniel Gustafsson |
| Daniel Polski |
| Daniel Vérité |
| Daniel Westermann |
| Daniele Varrazzo |
| Daniil Anisimov |
| Danny Shemesh |
| Darafei Praliaskouski |
| Daria Lepikhova |
| Dave Cramer |
| Dave Page |
| David Christensen |
| David Fetter |
| David G. Johnston |
| David Rowley |
| David Steele |
| David Zhang |
| Dean Rasheed |
| Dian Fay |
| Dilip Kumar |
| Dipesh Pandit |
| Dmitry Dolgov |
| Dmitry Koval |
| Dmitry Marakasov |
| Dominique Devienne |
| Dong Wook |
| Drew DeVault |
| Eduard Català |
| Egor Chindyaskin |
| Egor Rogov |
| Ekaterina Kiryanova |
| Elena Indrupskaya |
| Elvis Pranskevichus |
| Emmanuel Quincerot |
| Emre Hasegeli |
| Eric Mutta |
| Erica Zhang |
| Erik Rijkers |
| Erki Eessaar |
| Etsuro Fujita |
| Euler Taveira |
| Fabien Coelho |
| Fabrice Chapuis |
| Fabrice Fontaine |
| Fabrízio de Royes Mello |
| Feike Steenbergen |
| Filip Gospodinov |
| Florin Irion |
| Floris Van Nee |
| Frédéric Yhuel |
| Gabriela Serventi |
| Gaurab Dey |
| Geoff Winkless |
| Geoffrey Blake |
| Georgios Kokolatos |
| Gilles Darold |
| Greg Nancarrow |
| Greg Rychlewski |
| Greg Sabino Mullane |
| Greg Stark |
| Gregory Smith |
| Guillaume Lelarge |
| Gunnar Bluth |
| Gurjeet Singh |
| Haiyang Wang |
| Haiying Tang |
| Hannu Krosing |
| Hans Buschmann |
| Hayato Kuroda |
| Heath Lord |
| Heikki Linnakangas |
| Herwig Goemans |
| Himanshu Upadhyaya |
| Holly Roberts |
| Hou Zhijie |
| Hubert Lubaczewski |
| Ian Barwick |
| Ian Campbell |
| Ibrar Ahmed |
| Ildus Kurbangaliev |
| Ilya Anfimov |
| Itamar Gafni |
| Jacob Champion |
| Jaime Casanova |
| Jakub Wartak |
| James Coleman |
| James Hilliard |
| James Inform |
| Jan Piotrowski |
| Japin Li |
| Jason Harvey |
| Jason Kim |
| Jean-Christophe Arnu |
| Jeevan Ladhe |
| Jeff Davis |
| Jeff Janes |
| Jehan-Guillaume de Rorthais |
| Jelte Fennema |
| Jeremy Evans |
| Jeremy Schneider |
| Jian Guo |
| Jian He |
| Jimmy Yih |
| Jiri Fejfar |
| Jitka Plesníková |
| Joe Conway |
| Joe Wildish |
| Joel Jacobson |
| Joey Bodoia |
| John Naylor |
| Jonathan Katz |
| Josef Simanek |
| Joseph Koshakow |
| Josh Soref |
| Joshua Brindle |
| Juan José Santamaría Flecha |
| Julien Rouhaud |
| Julien Roze |
| Junwang Zhao |
| Jürgen Purtz |
| Justin Pryzby |
| Ken Kato |
| Kevin Burke |
| Kevin Grittner |
| Kevin Humphreys |
| Kevin McKibbin |
| Kevin Sweet |
| Kevin Zheng |
| Klaudie Willis |
| Konstantin Knizhnik |
| Konstantina Skovola |
| Kosei Masumura |
| Kotaro Kawamoto |
| Koyu Tanigawa |
| Kuntal Ghosh |
| Kyotaro Horiguchi |
| Lars Kanis |
| Lauren Fliksteen |
| Laurent Hasson |
| Laurenz Albe |
| Leslie Lemaire |
| Liam Bowen |
| Lingjie Qiang |
| Liu Huailing |
| Louis Jachiet |
| Lukas Fittl |
| Ma Liangzhu |
| Maciek Sakrejda |
| Magnus Hagander |
| Mahendra Singh Thalor |
| Maksim Milyutin |
| Marc Bachmann |
| Marcin Krupowicz |
| Marcus Gartner |
| Marek Szuba |
| Marina Polyakova |
| Mario Emmenlauer |
| Mark Dilger |
| Mark Murawski |
| Mark Wong |
| Markus Wanner |
| Markus Winand |
| Martijn van Oosterhout |
| Martin Jurca |
| Martin Kalcher |
| Martín Marqués |
| Masahiko Sawada |
| Masahiro Ikeda |
| Masao Fujii |
| Masaya Kawamoto |
| Masayuki Hirose |
| Matthias van de Meent |
| Matthijs van der Vleuten |
| Maxim Orlov |
| Maxim Yablokov |
| Melanie Plageman |
| Michael Banck |
| Michael Harris |
| Michael J. Sullivan |
| Michael Meskes |
| Michael Mühlbeyer |
| Michael Paquier |
| Michael Powers |
| Mike Fiedler |
| Mike Oh |
| Mikhail Kulagin |
| Miles Delahunty |
| Naoki Okano |
| Nathan Bossart |
| Nathan Long |
| Nazir Bilal Yavuz |
| Neha Sharma |
| Neil Chen |
| Nicola Contu |
| Nicolas Lutic |
| Nikhil Benesch |
| Nikhil Shetty |
| Nikhil Sontakke |
| Nikita Glukhov |
| Nikolai Berkoff |
| Nikolay Samokhvalov |
| Nikolay Shaplov |
| Nitin Jadhav |
| Noah Misch |
| Noboru Saito |
| Noriyoshi Shinoda |
| Olaf Bohlen |
| Olly Betts |
| Onder Kalaci |
| Oskar Stenberg |
| Otto Kekalainen |
| Paul Guo |
| Paul Jungwirth |
| Paul Martinez |
| Pavan Deolasee |
| Pavel Borisov |
| Pavel Luzanov |
| Pavel Stehule |
| Peter Eisentraut |
| Peter Geoghegan |
| Peter Slavov |
| Peter Smith |
| Petr Jelínek |
| Phil Florent |
| Phil Krylov |
| Pierre-Aurélien Georges |
| Prabhat Sahu |
| Quan Zongliang |
| Rachel Heaton |
| Rahila Syed |
| Rajakavitha Kodhandapani |
| Rajkumar Raghuwanshi |
| Ranier Vilela |
| Rei Kamigishi |
| Reid Thompson |
| Rémi Lapeyre |
| Renan Soares Lopes |
| Richard Guo |
| Richard Wesley |
| RKN Sai Krishna |
| Robert Haas |
| Robert Treat |
| Roberto Mello |
| Robins Tharakan |
| Roger Mason |
| Roman Zharkov |
| Ronan Dunklau |
| Rui Zhao |
| Ryan Kelly |
| Ryo Matsumura |
| Ryohei Takahashi |
| Sadhuprasad Patro |
| Sait Talha Nisanci |
| Sami Imseih |
| Sandeep Thakkar |
| Sebastian Kemper |
| Sehrope Sarkuni |
| Sergei Kornilov |
| Sergei Shoulbakov |
| Sergey Shinderuk |
| Shay Rojansky |
| Shenhao Wang |
| Shi Yu |
| Shinya Kato |
| Shruthi Gowda |
| Simon Perepelitsa |
| Simon Riggs |
| Sirisha Chamarthi |
| Soumyadeep Chakraborty |
| Stan Hu |
| Stas Kelvich |
| Stefen Hillman |
| Stephen Frost |
| Steve Chavez |
| Sumanta Mukherjee |
| Suraj Khamkar |
| Suraj Kharage |
| Sven Klemm |
| Takamichi Osumi |
| Takayuki Tsunakawa |
| Takeshi Ideriha |
| Tatsuhiro Nakamori |
| Tatsuhito Kasahara |
| Tatsuo Ishii |
| Tatsuro Yamada |
| Teja Mupparti |
| Teodor Sigaev |
| Thibaud Walkowiak |
| Thom Brown |
| Thomas McKay |
| Thomas Munro |
| Tim McNamara |
| Timo Stolz |
| Timur Khanjanov |
| Tom Lane |
| Tomas Barton |
| Tomas Vondra |
| Tony Reix |
| Troy Frericks |
| Tushar Ahuja |
| Victor Wagner |
| Victor Yegorov |
| Vignesh C |
| Vik Fearing |
| Vincas Dargis |
| Vitaly Burovoy |
| Vitaly Voronov |
| Vladimir Sitnikov |
| Wang Ke |
| Wei Sun |
| Wei Wang |
| Whale Song |
| Will Mortensen |
| Wolfgang Walther |
| Yanliang Lei |
| Yaoguang Chen |
| Yogendra Suralkar |
| YoungHwan Joo |
| Yugo Nagata |
| Yukun Wang |
| Yura Sokolov |
| Yusuke Egashira |
| Yuzuko Hosoya |
| Zhang Mingli |
| Zhang Wenjie |
| Zhihong Yu |
| Zhiyong Wu |
报告文档问题
阅读 上游文档. 通过 PostgreSQL 文档反馈表单.