E.2. 版本 15
发布日期:2022-10-13
E.2.1. 概述
PostgreSQL15 包含许多新功能和增强功能,包括:
-
支持SQL
MERGE命令。 -
通过指定列列表和行筛选条件的功能,在逻辑复制发布中选择性地发布表的内容。
-
更多压缩选项,包括对 Zstandard (zstd) 压缩的支持。这包括支持在pg_basebackup期间在服务器端执行压缩。
-
支持使用JSON格式的结构化服务器日志输出。
-
性能改进,尤其是内存中和磁盘上排序。
上述项目和PostgreSQL15的其他新功能将在以下部分中进行更详细的解释。
E.2.2. 迁移到版本 15
对于希望从早期的任意一个版本迁移数据的用户,需要使用pg_dumpall、pg_upgrade或者逻辑复制进行转储/还原。有关迁移到新的主要版本的一般信息,请参阅第19.6 节。
版本 15 包含许多变更,这些变更可能影响与先前版本的兼容性。请注意以下不兼容性:
-
删除对公共模式的 PUBLIC 的权限创建(Noah Misch)
新的默认模式是 CVE-2018-1058安全版本发布以来5.9.6节推荐的安全模式使用模式之一。更改适用于新的数据库集群和现有集群中新创建的数据库。升级群集或还原数据库转储将保留 public 的现有权限。
对于现有数据库,尤其是具有多个用户的数据库,请考虑撤销对架构的权限以采用此新默认值。对于不需要防 御内部威胁的新数据库,授予权限将产生以前版本的行为。
- 将公共模式的所有者更改为新的 pg _ database _ owner 角色(Noah Misch)
这允许每个数据库的所有者对其数据库中的公共模式所拥有所有权特权。以前它由引导超级用户拥有,因此非 超级用户数据库所有者无法对它执行任何操作。
此更改适用于新数据库集群和现有集群中新创建的数据库。升级群集或还原数据库转储将保留public现有的所 有权规范。
-
删除长期弃用的独占备份模式(David Steele, Nathan Bossart)
如果数据库服务器在此模式下突然停止,则服务器可能无法启动。非独占备份模式被认为适用于所有目的。函数 pg _ start _ back ()/pg _ stop _ back ()已被重命名为 pg _ back _ start ()/pg _ back _ stop () ,并且函数 pg _ back _ start _ time ()和 pg _ is _ in _ back ()已被删除。
-
hash_mem_multiplier默认值增加到 2.0(Peter Geoghegan)这允许查询哈希操作使用比其他操作更多的
work_mem内存。 -
删除服务器端语言
plpython2u和通用 Python 语言plpythonu(Andres Freund)不再支持 Python 2.x。虽然 plpythonu 最初的意图是它最终可以引用 plpython3u,但现在改变它似乎更有可能导致问题而不是解决问题,所以它被删除了。
-
如果
array_to_tsvector()传递空字符串数组元素(Jean-Christophe Arnu),则生成错误这是被禁止的,因为词位不应该是空的。以前 Postgres 版本的用户应该验证是否存储空词汇,因为它们可能导致转储/恢复失败和不一致的结果。
-
当
chr()提供负参数时生成错误(Peter Eisentraut) -
防止
“创建或替换视图”更改输出列的排序规则(Tom Lane) -
不允许零长度的 Unicode 标识符,例如U&"" (Peter Eisentraut)
非 Unicode 零长度标识符已被禁止。
-
防止数字文本具有非数字尾随字符(Peter Eisentraut)
以前,像123abc 这样的查询文本将被解释为123后跟一个单独的标记 abc。
-
调整 JSON 数字文字处理以匹配SQL/JSON标准 (Peter Eisentraut)
它接受像.1和1… 这样的数字格式,并且不允许在数字字面值后面跟随垃圾信息,如1.type ()。
-
当
间隔输入为大于月的单位提供小数值时,舍入到最接近的月份(Bruce Momjian)例如,将1.99年转换为2年,而不是以前的1年11个月。
-
提高使用尾随周期区间解析的一致性(Tom Lane)
带有尾随句点的数字在某些平台上会被拒绝。
-
将输出函数标记为稳定,而不是不可变,因为它依赖于
IntervalStyle(Tom Lane)例如,这将导致依赖于值的文本输出的索引创建失败。
-
检测区间对齐函数中的整数溢出(Joe Koshakow)
受影响的函数是justify_interval()、justify_hours()和justify_days()。
-
更改非 ASCII 字符的“ char”类型的 I/O 格式(Tom Lane)
设置了高位的字节现在输出为反斜杠和三个八进制数字,以避免编码问题。
-
删除登录角色对其自己的角色成员身份具有的默认
ADMINOPTION权限(RobertHaas)以前,即使没有 ADMINOPTION 特权,登录角色也可以添加/删除自己角色的成员。
-
允许以订阅所有者身份运行逻辑复制(Mark Dilger)
由于不检查行级别安全策略,因此只有具有行级别安全策略的超级用户、角色和表所有者才能复制到具有行级别安全策略的表中。
-
对订阅所有者对表没有SELECT权限的表执行阻止UPDATE和DELETE逻辑复制操作(Jeff Davis)
UPDATE 和 DELETE 命令通常也涉及读取表,因此需要订阅所有者具有表 SELECT 权限。
-
当
EXPLAIN引用会话的临时对象模式时,将其称为pg _ temp (Amul Sul)以前报告的是实际的模式名称,这会导致会话之间不一致。
-
修正了
pg_statio_all_tables以对具有多个索引的TOAST表的极少数情况的值求和(安德烈·祖布科夫)以前,此类情况下每个索引只能显示一行。
-
禁止设置与已安装扩展的名称匹配,但不是扩展声明变量之一的自定义选项(Florin Irion、Tom Lane)
此更改会导致在扩展加载期间删除任何此类预先存在的变量,然后阻止稍后在会话中创建新变量。目的是防止混淆变量是否与扩展相关联。
-
删除过时的服务器变量 stats _ temp _ 目录(Andres Freund,Kyotaro Higuchi)
-
改进用于计算
随机()的算法(Fabien Coelho)这将导致 Random ()的结果与以前版本发出的结果不同,即使是对于相同的种子值也是如此。
-
libpq 的
PQsendQuery()函数在管道模式下不再受支持(Álvaro Herrera)使用这种组合的应用程序需要修改为使用 PQsendQueryParams ()。
-
在非Windows平台上,请查阅环境变量HOME以查找用户的主目录(Anders Kaseorg)
如果 HOME 为空或未设置,则回到前面检查 < pwd.h > 数据库的方法。这个更改会影响 libpq (例如,在查找 ~/时)。Pgpass)以及各种客户端应用程序。
-
删除pg_dump的no-synized-snshot 选项(Tom Lane)
所有仍受支持的服务器版本都支持同步快照,因此不再需要此选项。
-
在psql 的单事务模式中检测到错误后,只有在设置 ON _ ERROR _ STOP 时,才将最终 COMMIT 命令更改为 ROLLback (Michael Paquier)
-
避免在postgres_fdw(Dian Fay)发送的查询中不必要的常量强制转换
当本地数据库和远程数据库之间的列类型有意不同时,此类强制转换可能会导致错误。
-
删除xml2 的 xml _ is _ well _ form ()函数(Tom Lane)
自 Postgres 9.1以来,这个函数已经在核心后端实现。
-
允许自定义扫描提供程序指示它们是否支持投影 (Sven Klemm)
现在的默认情况是,假定自定义扫描提供程序不支持预测; 那些支持预测的程序将需要为此版本进行更新。
E.2.3. 变更
下面你将找到PostgreSQL15和之前主要版本之间更改的详细说明。
E.2.3.1. 服务器
-
记录并检查每个数据库的排序规则版本(Peter Eisentraut)
此特性用于检测排序规则版本更改,以避免索引损坏。函数 pg _ DATABASE _ collation _ real _ version ()报告底层操作系统排序规则版本,而 ALTER DATABASE… REFRESH 将记录的数据库排序规则版本设置为与操作系统排序规则版本匹配。
-
允许将ICU排序规则设置为群集和数据库的默认值(Peter Eisentraut)
以前,只能在集群和数据库级别选择基于libc 的排序规则。ICU排序规则只能通过显式子句使用。
-
将系统视图
pg_ident_file_mappings映射到报告pg_ident.conf信息(Julien Rouhaud)
E.2.3.1.1.分区
-
缩短引用分区表的查询的规划时间(David Rowley)
当许多分区中只有少数是相关时,此变更会有所帮助。
-
允许对分区进行有序扫描,以避免在更多情况下进行排序(David Rowley)
以前,包含 DEFAULT 分区的分区表或包含多个值的 LIST 分区不能用于有序分区扫描。现在,如果在规划期间对这些分区进行了修剪,则可以使用它们。
-
改进在分区之间移动行的分区表上更新的外键行为 (Amit Langote)
以前,此类更新在源分区上运行删除操作,在目标分区上运行插入操作。PostgreSQL现在将对分区根目录运行update 操作,提供更清晰的语义。
-
允许分区表上的
CLUSTER(Justin Pryzby) -
修正分区表上的 ALTER TRIGGER RENAME 以正确地重命名所有分区上的触发器(Arne Roland,Álvaro Herrera)
禁止重命名克隆的触发器。
E.2.3.1.2. 索引
-
允许 system 和 TOAST 表上的 btree 索引有效地存储副本(Peter Geoghegan)
以前对这些类型的索引禁用了重复数据删除。
-
改进使用排序构建的GiST索引的查找性能(Aliaksandr Kalenik,Sergei Shoulbakov,Andrey Borodin)。
-
允许特殊的约束和索引将NULL值视为不同的 (Peter Eisentraut)
以前,NULL 条目总是被视为不同的值,但是现在可以通过使用 UNIQUE NULLS NOT DISTINCT 创建约束和索引来更改这一点。
-
如果使用 C 排序规则,允许 ^@start-with 运算符和start _ with ()函数使用 btree 索引 (Tom Lane)
以前这些只能使用 SP-GiST索引。
E.2.3.1.3. 优化器
-
-
扩展统计信息记录具有所有子项的父项的统计信息(Tomas Vondra,Justin Pryzby)
定期统计信息已分别跟踪父项和父项加所有子项统计信息。
-
添加服务器变量
recursive_worktable_factor以允许用户指定递归查询工作表的预期大小(Simon Riggs)
E.2.3.1.4. 一般性能
-
允许对具有许多常量的
NOT IN子句进行哈希查找(David Rowley、James Coleman)以前,代码总是按顺序扫描值列表。
-
允许 SELECTDISTINCT 并行化(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 = limit 时才有效。
-
允许真空在设置最旧的冻结和多交易ID时更加积极(Peter Geoghegan)
-
允许引用多个外表的查询在更多情况下执行并行外表扫描(Andrey Lepikhov,Etsuro Fujita)
-
改进使用 row _ number ()、 rank ()、 dense _ rank ()和 count ()的窗口函数的性能(David Rowley)
-
提高高内核数 ARM64 系统上旋转锁的性能(Geoffrey Blake)
E.2.3.1.5. 监测
-
启用检查点和慢速自动真空操作的默认日志记录(Bharath Rupireddy)
这会将默认值
log_checkpoints更改为on,以及log_autovacuum_min_duration更改为 10 分钟。这甚至会导致空闲服务器生成一些日志输出,这可能会导致资源受限的服务器上出现问题,而无需日志文件轮换。在这种情况下,应更改这些默认值。 -
在缓慢的服务器启动期间,在服务器日志中生成进度消息(Nitin Jadhav,Robert Haas)
这些消息报告了延迟的原因。通知的时间间隔由新的服务器变量
log_startup_progress_interval控制。 -
将累积统计系统数据存储在共享内存中(Kyotaro Hriguchi,Andres Freund,Melanie Plageman)
以前,此数据通过UDP数据包发送到统计信息收集器进程,并且只有在通过文件系统传输后才能由会话读取。不再有单独的统计信息收集器进程。
-
向“真空冗余”和“自动真空日志记录”消息添加附加信息(Peter Geoghegan)
-
为临时文件块 I/O (Masahiko Sawada)添加 EXPLAIN (BUFFERS)输出
-
允许以 JSON格式输出日志(Sehrope Sarkuni、Michael Paquier)
新的设置是 log _ Destination = jsonlog。
-
允许
pg_stat_reset_single_table_counters()重置跨所有数据库之间共享的关系计数器 (Sadhuprasad Patro) -
为本地 shell 命令添加等待事件(Fujii Masao)
新的等待事件在调用 archive _ command、 archive _ clean _ command、 return _ command 和 Recovery _ end _ command 时使用。
E.2.3.1.6. 特权
-
允许视图完成的表访问可以选择由视图调用方的权限控制(Christoph Heiss)
以前,视图访问始终被视为由视图的所有者完成。这仍然是默认设置。
-
允许
pg_write_server_files预定义角色的成员执行服务器端基本备份 (Dagfinn Ilmari Mannsåker)以前只有超级用户才能执行此类备份。
-
允许
GRANT通过 SET 和 ALTERSystem 授予更改单个服务器变量的权限(MarkDilger)新函数报告has_parameter_privilege()。
-
添加允许成员运行的预定义角色
pg_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.2.3.1.7. 服务器配置
-
添加服务器变量
shared_memory_size以报告分配的共享内存的大小(Nathan Bossart) -
添加服务器变量
shared_memory_size_in_huge_pages以报告所需的巨大内存页数(Nathan Bossart)这仅在 Linux 上受支持。
-
在单用户模式下
shared_preload_libraries服务器变量 (Jeff Davis)此更改支持使用 share _ preload _ library 来加载自定义访问方法和 WAL 资源管理器,这对于即使在单用户模式下的数据库访问也是必不可少的。
-
在 Solaris 上,将默认设置设为
dynamic_shared_memory_typebe(Thomas Munro) -
前面的默认选项 posx 可能会导致此平台上的虚假故障。
-
允许
postgres -C正确报告运行时计算的值(Nathan Bossart)以前运行时计算的值
data_checksums,wal_segment_size和data_directory_mode将报告在正在运行的服务器上不准确的值。但是,这在正在运行的服务器上不起作用。
E.2.3.2. 流式复制和恢复
-
添加对服务器端基本备份的 LZ4 和 Zstandard 压缩的支持(Jeevan Ladhe、Robert Haas)
-
在崩溃恢复期间运行检查指针和 bgwriter 进程(Thomas Munro)
这有助于加快长时间的崩溃恢复。
-
允许WAL处理预取所需的文件内容(Thomas Munro)
这由服务器变量
recovery_prefetch控制。 -
允许通过可加载模块进行存档(Nathan Bossart)
以前,存档只能通过调用 shell 命令来完成。可以设置新的服务器变量
archive_library以指定要调用的库以进行存档。 -
不再需要在START _ REPLATION 之前运行
IDENTIFY_SYSTEM(Jeff Davis)
E.2.3.2.1.逻辑复制
-
允许在一个模式中发布所有表(Vignesh C, Hou Zhijie, Amit Kapila)
例如,现在支持这种语法: CREATEPUBLICationpub1 FOR TABLES INSCHEMAs1,s2。ALTERPUBLATION 支持类似的语法。稍后添加到列表架构中的表也将被复制。
-
允许使用 aclause 过滤出版物内容(Hou Zhijie, Euler Taveira, Peter Smith, Ajin Cherian, Tomas Vondra, Amit Kapila)
不满足WHERE子句的行将不会发布。
-
允许将发布内容限制在特定的列(Tomas Vondra、 Álvaro Herrera、 Rahila Syed)
-
允许使用 ALTERSUBSCRIPTION… 跳过订阅者上的事务(Masahiko Sawada)
-
向逻辑复制添加对准备(两阶段)事务的支持(Peter Smith、Ajin Cherian、Amit Kapila、Nikhil Sontakke、Stas Kelvich)
将调用新的
CREATE_REPLICATION_SLOT选项被称为TWO_PHASE。pg_recvlogical现在支持在时隙创建期间使用一个新的——两阶段选项。 -
防止空事务的逻辑复制(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启用的,并避免了流应用期间可能出现的无限错误循环。 -
调整订阅服务器变量以匹配发布者,以便一致地解释日期时间和 float8 值(Japin Li)
某些出版商可能依赖于不一致的行为。
-
添加系统视图
pg_stat_subscription_stats以报告订阅者活动(Masahiko Sawada)新功能
pg_stat_reset_subscription_stats()允许重置这些统计计数器。 -
禁止显示
pg_publication_tables系统视图中的重复条目(Hou Zhijie)在某些情况下,一个分区可能会多次出现。
E.2.3.3. 实用程序命令
-
添加
SQL MERGE命令来调整一个表以匹配另一个表(Simon Riggs、Pavan Deolasee、Álvaro Herrera、Amit Langote)这类似于INSERT … ON CONFLICT,但更面向批处理。
-
在
COPY文本格式中添加对选项的支持(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修改表的(Justin Pryzby, Jeff Davis)ACCESS METHOD -
当
ALTER TABLE导致表重写时正确调用对象访问钩子 (Michael Paquier) -
允许创建未记录的序列(Peter Eisentraut)
-
在返回复合类型的函数的结果中跟踪对单个列的依赖关系(Tom Lane)
以前,如果视图或规则在复合返回函数的结果中包含对特定列的引用,则不会将其标记为依赖项;视图或规则仅被视为取决于整个复合类型。这意味着将允许删除单个列,从而导致以后使用视图或规则时出现问题。现在还记录了列级依赖项,因此除非更改或删除视图,否则将拒绝删除此类列。
E.2.3.4. 数据类型
-
允许
数值的小数位数为负数或大于其精度(Dean Rasheed,Tom Lane)这允许将值四舍五入到小数点的左边,例如,‘1234’: : numeric (4,-2)返回1200。
-
改进了将值转换为间隔时的溢出检测(Joe Koshakow)
-
更改非 ASCII 字符的"char"类型的 I/O 格式 (Tom Lane)
-
更新现代 Unicode 字符(如表情符号)的显示宽度信息 (Jacob Champion)
同时从 Unicode 5.0 更新到 14.0.0。现在有一种自动方法可以使用 Unicode 版本保持 Postgres 更新。
E.2.3.5. 函数
-
将多范围输入添加到
range_agg()(Paul Jungwirth) -
为
xid8数据类型添加 MIN ()和 MAX ()聚合(Ken Kato) -
添加正则表达式函数以与其他关系系统兼容(Gilles Darold,Tom Lane)
新功能是
regexp_count(), regexp _ instr ()、 regexp _ like ()和 regexp _ subr ()。 -
添加计算
多边形之间距离的功能(Tom Lane) -
添加
to_char()的tzh 和 tzm格式代码 (Nitin Jadhav)它们已经支持这些的大写等效项。
-
将
AT TIME ZONE值时,请使用事务开始时间而不是挂钟时间来确定 DST 是否适用(Aleksander Aleksev,Tom Lane)这使得转换被认为是稳定的而不是易失的,并且它为每次调用保存了一个内核调用。
-
忽略
ts_delete()和带数组参数的 setweight()函数中的NULL 数组元素 (Jean-Christophe Arnu)这些函数有效地忽略了空字符串数组元素(因为这些元素永远无法匹配有效的词素)。让它们也忽略 NULL 元素,而不是失败,这似乎是一致的。
-
将对 PB 单位的支持添加到
pg_size_pretty()和 pg _ size _ bytes ()(David Christensen) -
更改
pg_event_trigger_ddl_commands()以使用实际模式名称输出对其他会话临时模式的引用 (Tom Lane)以前,此函数将所有临时模式报告为pg_temp,但将其用于当前会话的临时模式以外的任何模式具有误导性。
E.2.3.6. PL/PgSQL
-
AFix PL/pgSQL 变量 CONSTANT 标记的强制执行(Tom Lane)
以前,变量可以用作
CALL输出参数或尽管标记为 CONSTANT 的 refcursor OPEN 变量。
E.2.3.7.Libpq
-
允许IP地址与服务器证书的使用者备用名称匹配(Jacob Champion)
-
允许PQsslAttribute()在不需要libpq连接的情况下报告SSL库类型(Jacob Champion)
-
更改客户端发送的查询取消,以使用与正常客户端连接相同的TCP设置 (Jelte Fennema)
这允许将配置的TCP超时应用于查询取消连接。
-
防止 libpq 事件回调失败强制产生错误结果(Tom Lane)
E.2.3.8. 客户端应用程序
- 允许pgbench在序列化和死锁失败后重试(永田优吾、玛丽娜·波利亚科娃)
E.2.3.8.1. psql
-
通过发送大块数据来提高 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 _ Results psql 变量设置为 off 来恢复旧的行为。
-
在单事务模式下检测到错误后,只有在设置 ON _ ERROR _ STOP 时,才将最终 COMMIT 命令更改为 ROLLback (Michael Paquier)
以前,在-c 命令或-f 脚本文件中检测错误将导致在结束时发出 ROLLback,而不管 ON _ ERROR _ STOP 的值如何。
-
改进psql 的选项卡完成 (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 的反斜杠命令支持限制为运行PostgreSQL9.2 或更高版本的服务器(Tom Lane)
删除仅在使用较旧服务器运行时使用的代码。与 9.2 相比,不需要任何特定于版本的调整的命令仍然有效。
E.2.3.8.2. pg_dump
-
使 pg _ dump 转储公共模式所有权更改和安全标签(Noah Misch)
-
提高包含许多对象的转储数据库的性能(Tom Lane)
这也将提高pg_upgrade的性能。
-
提高具有大型TOAST表的表的并行pg_dump的性能(Tom Lane)
-
添加转储/恢复选项—— no-table-access-method 强制恢复只使用默认的表访问方法(Justin Pryzby)
-
将pg_dump和pg_dumpall的支持限制为运行PostgreSQL9.2或更高版本的服务器(Tom Lane)
E.2.3.9. 服务器应用程序
-
添加新pg_basebackup选项以控制基本备份位置(Robert Haas)
新的选项是: server在本地编写备份, blackhole 放弃备份(用于测试)。
-
允许pg_basebackup对基本备份文件进行服务器端 gzip、LZ4 和 Zstandard 压缩以及客户端 LZ4 和 Zstandard 压缩(Dipesh Pandit、Jeevan Ladhe)
已经支持客户端 gzip 压缩。
-
允许pg_basebackup在存储之前在服务器端压缩并在客户端解压缩(Dipesh Pandit)
这是通过在服务器端指定压缩和纯输出格式来实现的。
-
允许 pg _ baseback 的—— press 选项来控制压缩位置(服务器或客户端)、压缩方法和压缩选项(Michael Paquier,Robert Haas)
-
将 LZ4 压缩方法添加到pg_receivewal(Georgios Kokolatos)
这是通过—— press = lz4启用的,需要使用—— with-lz4构建二进制文件。
-
向 pg _ Receivewal 的—— press 选项添加额外的功能(Georgios Kokolatos)
-
提高pg_receivewal在正确的WAL位置重新启动的能力(Ronan Dunklau)
以前,pg _ Receivewal 将基于存储在本地归档目录中的 WAL 文件启动,或者在发送服务器的当前 WAL 刷新位置启动。有了这个更改,如果发送服务器运行 Postgres 15或更高版本,本地归档目录为空,并且指定了复制插槽,则将使用复制插槽的重新启动点。
-
添加pg_rewind选项——config-file,以简化服务器配置文件存储在数据目录之外时使用(Gunnar Bluth)
E.2.3.9.1. pg_upgrade
-
将 pg _ update 的日志和临时文件存储在新集群的子目录 pg _ update _ output. d 中(Justin Pryzby)
以前,此类文件保留在当前目录中,需要手动清理。现在,成功完成pg_upgrade后,它们会自动删除。
-
如果输出不是终端,则在pg_upgrade操作期间禁用默认状态报告(Andres Freund)
状态报告输出可以通过使用—— everose 为非 tty 用法启用。
-
pg_upgrade报告具有无效连接设置的所有数据库(Jeevan Ladhe)
以前,仅报告了连接设置无效的第一个数据库。
-
pg_upgrade保留表空间和数据库 OID,以及关系相关节点编号(Shruthi Gowda、Antonin Houska)
-
向 pg _ update 添加—— no-sync 选项(Michael Paquier)
建议仅将其用于测试。
-
限制对运行PostgreSQL9.2 或更高版本的旧服务器的pg_upgrade支持(Tom Lane)
E.2.3.9.2. pg_waldump
-
允许 pg _ waldump 输出通过关系文件节点、块号、分叉号和完整页面图像进行过滤(David Christensen,Thomas Munro)
-
在中断退出之前进行 pg _ waldump 报告统计(Bharath Rupireddy)
例如,在运行 pg _ waldump —— stats —— follow 的终端中发出 control-C 将在退出之前报告当前的统计信息。这在 Windows 上不起作用。
-
改进了pg_waldump报告的一些交易WAL记录的描述(Masahiko Sawada,Michael Paquier)
-
允许pg_waldump转储有关多个资源管理器的信息(Heikki Linnakangas)
这是通过多次指定—— rmgr 选项来启用的。
E.2.3.10. 文档
-
添加
pg_encoding_to_char()和 pg_char_to_encoding()的文档(Ian Lawrence Barwick) -
文档
^@starts-with运算符(Tom Lane)
E.2.3.11. 源代码
-
使用 cirrus-ci 添加对持续集成测试的支持(Andres Freund、Thomas Munro、Melanie Plageman)
-
添加配置选项
-with-zstd以启用Zstandard构建(Jeevan Ladhe,Robert Haas,Michael Paquier) -
在可加载库中的 Magic 块中添加一个 ABI 标识符字段,允许非社区 PostgreSQL 发行版识别与其他构建不兼容的库(Peter Eisentraut)
ABI 字段不匹配将在加载时生成错误。
-
为 "char"创建新的
pg_type.typcategory值(Tom Lane)其他一些仅限内部使用的类型也已分配给此类别。
-
添加新协议消息
TARGET以指定用于基本备份的新COPY方法 (Robert Haas)pg_basebackup备份现在使用这个方法。
-
添加新的协议消息 COMPRESION 和 COMPRESION _ DETAIL 来指定压缩方法和选项(RobertHaas)
-
删除对旧的 BASE _ BACKUP 命令语法和基本备份协议的服务器支持(Robert Haas)
-
添加对扩展的支持以设置自定义备份目标 (Robert Haas)
-
允许扩展定义自定义WAL资源管理器 (Jeff Davis)
-
添加函数
pg_settings_get_flags()以获取服务器变量的标志(Justin Pryzby) -
在 Windows 上,使用标记PGDLLIMPORT导出服务器的所有全局变量(Robert Haas)
以前,Windows 上的扩展只能访问特定变量。
-
需要 GNUmake版本 3.81 或更高版本来构建PostgreSQL(Tom Lane)
-
需要OpenSSL来构建pgcrypto扩展(Peter Eisentraut)
-
需要Perl版本 5.8.3 或更高版本 (Dagfinn Ilmari Mannsåker)
-
需要Python版本 3.2 或更高版本(Andres Freund)
E.2.3.12. 附加模块
-
允许amcheck检查序列(Mark Dilger)
-
改进TOAST表的检查健全性检查(Mark Dilger)
-
添加新模块basebackup_to_shell作为自定义备份目标的示例 (Robert Haas)
-
添加新模块basic_archive作为通过库执行存档的示例(Nathan Bossart)
-
允许在布尔列上btree_gist索引 (Emre Hasegeli)
这些可用于排除约束。
-
修复 pagereview 的 page _ header ()以处理32 KB 的页面大小 (Quan Zongliang)
以前,在某些情况下可能会返回不正确的负值。
-
向pg_stat_statements添加临时文件块 I/O 计数器(Masahiko Sawada)
-
将JIT计数器添加到pg_stat_statements(Magnus Hagander)
-
添加新模块pg_walinspect(Bharath Rupireddy)
这提供了类似于pg_waldump的SQL 级输出。
-
在sepgsql日志消息中指示允许/强制状态(Dave Page)
E.2.3.12.1. postgres_fdw
-
允许postgres_fdw向下推 CASE 表达式(Alexander Pyhalov)
-
添加服务器变量 postgres _ fdw. application _ name 以控制 postgres _ fdw 连接的应用程序名称(Hayato Kuroda)
以前,远程会话的
application_name连接规范设置远程会话的 application _ name。Postgres _ fdw.Application _ name 支持一些用于自定义的转义序列,这使得在远程服务器上区分这些连接变得更加容易。 -
允许在postgres_fdw服务器上并行提交(Etsuro Fujita)
这是通过 CREATESERVER 选项盲目提交来启用的。
-
E.2.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
提交更正
如果你在文档中看到任何不正确、不匹配的内容,或你对其中特定功能的体验或需要希望有进一步的澄清, 请使用此表单报告文档问题。
原文标题:E.2.Release 15Appendix E. Release Notes
原文链接:https://www.postgresql.org/docs/15/release-15.html#RELEASE-15-ACKNOWLEDGEMENTS




