E.1.1。概述
PostgreSQL 16 包含许多新功能和增强功能,包括:
允许并行化
FULL和内部右OUTER散列连接允许从备用服务器进行逻辑复制
允许逻辑复制订阅者并行应用大型事务
允许使用新视图监控I/O统计数据
pg_stat_io添加SQL/JSON构造函数和标识函数
提高真空冷冻性能
pg_hba.conf添加对 中的用户名和数据库名以及 中的用户名的正则表达式匹配的支持pg_ident.conf
以下各节将更详细地解释上述项目和PostgreSQL 16 的其他新功能。
E.1.2。迁移到版本 16
对于那些希望从任何先前版本迁移数据的人来说,需要使用pg_dumpall进行转储/恢复或使用pg_upgrade或逻辑复制。有关迁移到新的主要版本的一般信息,请参阅第 19.6 节。
版本 16 包含许多可能影响与以前版本的兼容性的更改。请注意以下不兼容性:
更改PL/pgSQL绑定游标变量的赋值规则(Tom Lane)
以前,此类变量的字符串值在游标分配期间被设置为与变量名称匹配;现在它将在 期间分配
OPEN,并且与变量名称不匹配。要恢复以前的行为,请将所需的门户名称分配给 before 的游标变量OPEN。禁止
NULLS NOT DISTINCT主键索引 (Daniel Gustafsson)更改
REINDEX DATABASE并重新索引数据库以不处理系统目录上的索引 (Simon Riggs)REINDEX SYSTEM使用和仍然可以处理此类索引reindexdb --system。加强
GENERATED对继承表和分区表的表达式限制 (Amit Langote, Tom Lane)父/分区表和子/分区表的列必须全部具有相同的生成状态,尽管现在实际的生成表达式可能不同。
删除pg_walinspect函数
pg_get_wal_records_info_till_end_of_wal()和pg_get_wal_stats_till_end_of_wal()(Bharath Rupireddy)将服务器变量重命名
force_parallel_mode为debug_parallel_query(David Rowley)删除使用规则手动创建视图的功能
ON SELECT(Tom Lane)删除服务器变量
vacuum_defer_cleanup_age(Andres Freund)hot_standby_feedback自从添加了复制槽以来,这是不必要的。删除服务器变量
promote_trigger_file(Simon Riggs)这用于将备用数据库升级为主数据库,但现在使用
pg_ctl promote或更容易完成pg_promote()。删除只读服务器变量
lc_collate和lc_ctype(Peter Eisentraut)数据库之间的排序规则和区域设置可能有所不同,因此将它们作为只读服务器变量是没有帮助的。
GRANT角色继承现在控制在(Robert Haas)期间添加的成员角色的默认继承状态角色的默认继承行为可以用 new
GRANT ... WITH INHERIT子句覆盖。这允许继承某些角色而不是其他角色,因为成员的继承状态是按GRANT时间设置的。以前,成员角色的继承状态仅由角色的继承状态控制,角色继承状态的更改会影响之前和将来的所有成员角色。限制其他角色的权限
CREATEROLE及其修改其他角色的能力 (Robert Haas)以前,具有特权的角色
CREATEROLE可以更改任何非超级用户角色的许多方面。此类更改(包括添加成员)现在需要请求更改的角色拥有ADMIN OPTION权限。例如,现在只有当他们也拥有这些权限时才可以更改CREATEDB、REPLICATION和属性。BYPASSRLS删除postmaster二进制文件的符号链接(Peter Eisentraut)
E.1.3。变化
下面您将详细了解PostgreSQL 16 与之前主要版本之间的变化。
E.1.3.1。服务器
E.1.3.1.1。优化器
在更多情况下允许增量排序,包括
DISTINCT(David Rowley)ORDER BY添加具有或DISTINCT使用预排序数据的聚合的能力(David Rowley)新的服务器变量
enable_presorted_aggregate可用于禁用此功能。允许在 a 上进行记忆
UNION ALL(RichardGuo)允许以不可为空的输入作为内部关系执行反连接 (RichardGuo)
允许并行化
FULL和内部右OUTER散列连接(Melanie Plageman、Thomas Munro)提高索引访问优化器成本的准确性
GIN(Ronan Dunklau)
E.1.3.1.2。一般表现
允许更有效地添加堆和索引页 (Andres Freund)
在非冻结操作期间,在适当的情况下执行页面冻结(Peter Geoghegan)
这使得全台冷冻真空吸尘器的必要性降低。
ROWS当RANGE模式处于活动状态但不必要时,允许窗口函数在内部使用更快的模式 (David Rowley)允许优化不断增加的窗口函数
ntile(),cume_dist()以及percent_rank()(David Rowley)允许聚合函数
string_agg()并array_agg()并行化(David Rowley)RANGE通过缓存和分区查找提高性能LIST(Amit Langote、侯志杰、David Rowley)允许通过真空和分析控制共享缓冲区的使用(Melanie Plageman)
VACUUM/选项ANALYZE是BUFFER_USAGE_LIMIT,vacuumdb选项是--buffer-usage-limit。默认值由服务器变量设置vacuum_buffer_usage_limit,该变量还控制 autovacuum。Windows
wal_sync_method=fdatasync上的支持(Thomas Munro)如果仅更新索引列,则允许HOT更新(Matthias van de Meent、Josef Simanek、Tomas Vondra)
BRIN提高更新流程标题的速度(David Rowley)
允许
xid/subxid搜索和ASCII字符串检测以使用向量运算(Nathan Bossart、John Naylor)ASCII检测对于
COPY FROM. 向量运算也用于某些 C 数组搜索。减少内存分配的开销(Andres Freund、David Rowley)
E.1.3.1.3。监控
添加系统
pg_stat_io视图来跟踪I/O统计数据 (Melanie Plageman)记录表上最后一次顺序扫描和索引扫描的统计信息 (Dave Page)
此信息出现在
pg_stat_*_tables和中pg_stat_*_indexes。记录移动到新页面的更新行发生的统计信息 (Corey Huinker)
该
pg_stat_*_tables列是n_tup_newpage_upd.将推测锁定信息添加到
pg_locks系统视图(Masahiko Sawada、Noriyoshi Shinoda)交易 ID 显示在该
transactionid列中,推测插入令牌也显示在该objid列中。将准备好的语句结果类型的显示添加到视图中
pg_prepared_statements(Dagfinn Ilmari Mannsåker)在订阅创建时创建订阅统计条目,因此
stats_reset是准确的 (Andres Freund)以前,仅在报告第一个统计数据时才创建条目。
更正(Melanie Plageman)中所示的临时关系写入的I/O计算
pg_stat_database添加
pg_stat_get_backend_subxact()报告会话子事务缓存的功能 (Dilip Kumar)有
pg_stat_get_backend_idset()、pg_stat_get_backend_activity()、 和相关函数使用不变的后端 id (Nathan Bossart)以前,索引值可能会在会话的生命周期内发生变化。
报告具有特殊后端类型的独立后端 (Melanie Plageman)
添加等待事件
SpinDelay以报告自旋锁睡眠延迟 (Andres Freund)创建新的等待事件
DSMAllocate以指示等待动态共享内存分配 (Thomas Munro)以前这种类型的等待被报告为
DSMFillZeroWrite,它也被分配使用mmap()。将数据库名称添加到逻辑WAL发送者的进程标题中(Tatsuhiro Nakamori)
物理WAL发送器不显示数据库名称。
在消息中添加检查点和
REDO LSN信息log_checkpoints(Bharath Rupireddy、Kyotaro Horiguchi)在客户端证书失败期间提供更多详细信息 (Jacob Champion)
E.1.3.1.4。特权
添加
pg_create_subscription具有创建订阅权限的预定义角色 (Robert Haas)允许订阅不需要密码 (Robert Haas)
这是通过选项来完成的
password_required=false。简化
LOCK TABLE(Jeff Davis)的权限以前,用户
LOCK TABLE在各种锁定级别上执行的能力仅限于他们有权在表上执行的命令所需的锁定级别。例如,拥有UPDATE权限的人可以执行除 之外的所有锁定级别ACCESS SHARE,即使它是较低的锁定级别。现在,如果用户已经拥有更高锁定级别的权限,则可以发出更低的锁定级别。允许与(罗伯特·哈斯)
GRANT group_name TO user_name一起表演ADMIN OPTION以前
CREATEROLE需要许可。允许
GRANT使用WITH ADMIN TRUE/FALSE语法 (Robert Haas)以前仅
WITH ADMIN OPTION支持语法。SET ROLE允许创建其他角色的角色自动继承新角色的权利或新角色的能力(Robert Haas,Shi Yu)这是由服务器变量控制的
createrole_self_grant。防止用户更改非继承角色的默认权限 (Robert Haas)
现在仅允许继承角色。
授予角色成员资格时,要求授予角色是具有适当权限的角色 (Robert Haas)
即使非引导超级用户正在授予角色成员身份,这也是一个要求。
允许非超级用户使用非当前用户的授予者授予权限 (Robert Haas)
当前用户仍必须具有指定授予用户授予的足够权限。
添加
GRANT控制使用权限SET ROLE(Robert Haas)这是由一个新
GRANT ... SET选项控制的。向已授予权限的角色添加依赖性跟踪 (Robert Haas)
例如,
ADMIN OPTION如果有权限使用该选项,则删除将失败;CASCADE必须用于撤销相关权限。添加
GRANT记录授予者的依赖性跟踪 (Robert Haas)这保证了
pg_auth_members.grantor值始终有效。允许多个角色成员记录 (Robert Haas)
以前,新的会员资格授予会删除以前匹配的会员资格授予,即使该授予的其他方面不匹配。
防止删除引导用户的超级用户权限 (Robert Haas)
恢复此类用户可能会导致错误。
允许
makeaclitem()接受多个权限名称 (Robins Tharakan)SELECT以前只接受一个权限名称,例如。
E.1.3.1.5。服务器配置
添加对Kerberos凭证委派的支持 (Stephen Frost)
这是通过服务器变量
gss_accept_delegation和libpq连接参数启用的gssdelegation。允许使用服务器变量设置SCRAM
scram_iterations迭代计数(Daniel Gustafsson)提高服务器变量管理的性能 (Tom Lane)
严格限制哪些服务器变量可以重置(Masahiko Sawada)
以前,虽然某些变量(例如 )
transaction_isolation不受 的影响RESET ALL,但它们可以在不适当的情况下单独重置。将各种
postgresql.conf项目移至新类别(Shinya Kato)这也会影响视图中显示的类别
pg_settings。防止配置文件递归超过 10 级 (Julien Rouhaud)
允许autovacuum更频繁地接受延迟设置的更改 (Melanie Plageman)
不要仅在每个关系开始时尊重更改,而是在每个块开始时尊重它们。
消除存档文件永久重命名的限制 (Nathan Bossart)
archive_command现在更有可能在崩溃后使用已存档的文件调用该命令。防止
archive_library和archive_command同时设置 (Nathan Bossart)以前
archive_library会覆盖archive_command.允许邮政局长通过中止信号终止子进程 (Tom Lane)
这允许收集卡住的子进程的核心转储。这是由
send_abort_for_crash和控制的send_abort_for_kill。邮政局长的-T开关现在与设置相同send_abort_for_crash。删除无功能的 postmaster
-n选项 (Tom Lane)允许服务器为具有成员资格的角色保留后端插槽
pg_use_reserved_connections(Nathan Bossart)保留槽的数量由服务器变量设置
reserved_connections。允许大页面在较新版本的Windows 10上运行(Thomas Munro)
这增加了在较新版本的Windows 10上启用大页面所需的特殊处理。
添加
debug_io_direct开发人员使用设置(Thomas Munro、Andres Freund、Bharath Rupireddy)虽然主要针对开发人员,但
wal_sync_method=open_sync/open_datasync已被修改为不将直接I/O与wal_level=minimal;一起使用。现在已启用此功能debug_io_direct=wal。添加报告WAL文件名
pg_split_walfile_name()的段和时间线值的功能(Bharath Rupireddy)
E.1.3.1.6。 pg_hba.conf
添加对数据库和角色条目的正则表达式匹配的支持
pg_hba.conf(Bertrand Drouvot)正则表达式模式以斜杠为前缀。如果在
pg_hba.conf.改进用户列处理以
pg_ident.conf匹配pg_hba.conf(Jelte Fennema)all具体来说,添加对、带有 的角色成员身份+以及带有前导斜杠的正则表达式的支持。任何与这些模式匹配的用户名都必须用双引号引起来。允许在
pg_hba.conf和中包含文件pg_ident.conf(Julien Rouhaud)include这些由、include_if_exists、 和控制include_dir。系统视图pg_hba_file_rules现在pg_ident_file_mappings显示文件名。允许
pg_hba.conf令牌的长度不受限制 (Tom Lane)将规则和地图编号添加到系统视图
pg_hba_file_rules(Julien Rouhaud)
E.1.3.1.7。 本地化
使用ICU时确定区域设置的默认编码(Jeff Davis)
以前默认值始终是
UTF-8.具有
CREATE DATABASE和CREATE COLLATION的LOCALE选项,以及initdb和createdb--locale选项,控制非libc排序规则提供程序 (Jeff Davis)以前他们只控制libc提供者。
添加预定义的排序规则
unicode和ucs_basic(Peter Eisentraut)仅当启用ICU支持时此功能才有效。
允许创建自定义ICU整理规则 (Peter Eisentraut)
这是使用 的
CREATE COLLATIONnewRULES子句以及CREATE DATABASE、createdb和initdb的新选项来完成的。允许Windows自动导入系统区域设置 (Juan José Santamaría Flecha)
以前,只能在Windows上导入ICU区域设置。
E.1.3.2。 逻辑复制
允许在备用设备上进行逻辑解码(Bertrand Drouvot、Andres Freund、Amit Khandekar)
创建逻辑槽需要快照WAL记录,但不能在备用数据库上创建。为了避免延迟,新功能
pg_log_standby_snapshot()允许创建此类记录。添加服务器变量来控制逻辑解码发布者如何传输更改以及订阅者如何应用它们 (Shi Yu)
允许逻辑复制初始表同步以二进制格式复制行 (Melih Mutlu)
这仅适用于标记为二进制的订阅。
允许并行应用逻辑复制(侯志杰、王伟、Amit Kapila)
该选项现在支持通过并行工作人员启用大型事务的应用程序。并行工作线程的数量由新的服务器变量控制。还添加了等待事件、、 和。系统视图中添加了列以跟踪并行活动。
CREATE SUBSCRIPTIONSTREAMINGparallelmax_parallel_apply_workers_per_subscriptionLogicalParallelApplyMainLogicalParallelApplyStateChangeLogicalApplySendDataleader_pidpg_stat_subscription提高逻辑复制的性能(无需主键)(Onder Kalaci、Amit Kapila)
具体来说,
REPLICA IDENTITY FULL现在可以使用 btree 索引而不是顺序扫描表来查找匹配项。允许逻辑复制订阅者仅处理没有来源的更改(Vignesh C、Amit Kapila)
这可用于避免复制循环。这是由新
CREATE SUBSCRIPTION ... ORIGIN选项控制的。作为表所有者执行逻辑复制
SELECT和DML操作 (Robert Haas)这提高了安全性,现在要求订阅所有者是超级用户或拥有
SET ROLE复制集中所有表的权限。以前作为订阅所有者执行所有操作的行为可以通过订阅run_as_owner选项启用。wal_retrieve_retry_interval按订阅进行运营 (Nathan Bossart )此前,重试时间是全局应用的。这还添加了等待事件>
LogicalRepLauncherDSA和LogicalRepLauncherHash。
E.1.3.3。实用命令
添加
EXPLAIN选项GENERIC_PLAN以显示参数化查询的通用计划 (Laurenz Albe)允许
COPY FROM值映射到列的值DEFAULT(Israel Barth Rubio)允许
COPY外部表批量添加行(Andrey Lepikhov,Etsuro Fujita)这是由postgres_fdw选项控制的
batch_size。允许由(Teodor Sigaev、Aleksander Alekseev)
STORAGE指定类型CREATE TABLE以前只能
ALTER TABLE控制这个。允许外部表上的截断触发器(Yugo Nagata)
允许
VACUUM和vacuumdb仅处理TOAST表(Nathan Bossart)这是通过
VACUUM关闭PROCESS_MAIN或使用vacuumdb使用该--no-process-main选项来完成的。添加
VACUUM跳过或更新所有冻结统计数据的选项(Tom Lane、Nathan Bossart)选项是
SKIP_DATABASE_STATS和ONLY_DATABASE_STATS。改变
REINDEX DATABASE并REINDEX SYSTEM不再需要争论(西蒙·里格斯)以前必须指定数据库名称。
如果未指定,则允许
CREATE STATISTICS生成统计名称 (Simon Riggs)
E.1.3.4。数据类型
允许非十进制整数文字(Peter Eisentraut)
例如,
0x42F、0o273和0b100101。允许
NUMERIC处理任意大小的十六进制、八进制和二进制整数 (Dean Rasheed)以前,这些非十进制基数仅支持不带引号的八字节整数。
允许在整数和数字常量中使用下划线(Peter Eisentraut, Dean Rasheed)
这可以提高长数字字符串的可读性。
接受日期时间输入中的拼写
+infinity(Vik Fearing)防止在日期时间字符串中指定
epoch和infinity与其他字段一起使用 (Joseph Koshakow)删除对表单中日期输入的未记录支持(Joseph Koshakow)
YyearMmonthDday添加函数
pg_input_is_valid()并pg_input_error_info()检查类型转换错误 (Tom Lane)
E.1.3.5。一般查询
允许
FROM子句中的子查询省略别名 (Dean Rasheed)添加对SQL/JSON路径中增强型数字文字的支持(Peter Eisentraut)
例如,允许使用十六进制、八进制和二进制整数以及数字之间的下划线。
E.1.3.6。功能
添加SQL/JSON构造函数(Nikita Glukhov、Teodor Sigaev、Oleg Bartunov、Alexander Korotkov、Amit Langote)
新函数
JSON_ARRAY()、JSON_ARRAYAGG()、JSON_OBJECT()和JSON_OBJECTAGG()是SQL标准的一部分。添加SQL/JSON对象检查(Nikita Glukhov、Teodor Sigaev、Oleg Bartunov、Alexander Korotkov、Amit Langote、Andrew Dunstan)
检查
IS JSON包括对值、数组、对象、标量和唯一键的检查。允许JSON字符串解析使用向量运算 (John Naylor)
改进和表达式
ts_headline()的全文突出显示功能的处理(Tom Lane)ORNOT添加函数以添加、减去和生成
timestamptz指定时区的值 (Przemyslaw Sztoch、Gurjeet Singh)函数是
date_add()、date_subtract()、 和generate_series()。更改
date_trunc(unit, timestamptz, time_zone)为不可变函数 (Przemyslaw Sztoch)这允许使用此函数创建表达式索引。
添加服务器变量
SYSTEM_USER(Bertrand Drouvot)这会报告身份验证方法及其经过身份验证的用户。
添加函数
array_sample()和array_shuffle()(Martin Kalcher)添加
ANY_VALUE()返回集合中任意值的聚合函数 (Vik Fearing)添加
random_normal()提供正态分布随机数的函数 (Paul Ramsey)添加误差函数
erf()及其补集erfc()(Dean Rasheed)power()提高整数指数数值的准确性(Dean Rasheed)添加漂亮打印输出的
XMLSERIALIZE()选项(Jim Jones)INDENT更改
pg_collation_actual_version()为默认排序规则返回合理的值 (Jeff Davis)之前它回来了
NULL。允许
pg_read_file()并pg_read_binary_file()忽略丢失的文件 (Kyotaro Horiguchi)将字节规范 (
B) 添加到pg_size_bytes()(Peter Eisentraut)允许
to_reg* 函数接受数字OID作为输入 (Tom Lane)
E.1.3.7。 PL/PgSQL
添加在PL/pgSQL中获取当前函数的OID的功能(Pavel Stehule)
E.1.3.8。 库
添加libpq连接选项
require_auth以指定可接受的身份验证方法列表 (Jacob Champion)这也可用于禁止某些身份验证方法。
允许随机选择多个libpq指定的主机 (Jelte Fennema)
这是通过负载平衡启用的
load_balance_hosts=random并且可以用于负载平衡。添加libpq选项
sslcertmode来控制客户端证书的传输 (Jacob Champion)选项值为
disable、allow和require。允许libpq使用系统证书池进行证书验证 (Jacob Champion, Thomas Habets)
这是通过 启用的
sslrootcert=system,这也可以启用sslmode=verify-full。
E.1.3.9。客户端应用程序
允许
ECPG变量声明使用与未保留的SQL关键字匹配的 typedef 名称 (Tom Lane)此更改确实阻止了与 C typedef 名称匹配的关键字在后面的块中被处理为关键字
EXEC SQL。
E.1.3.9.1。 psql
允许psql控制扩展格式的标题行的最大宽度 (Platon Pronko)
这是由 控制的
xheader_width。添加psql命令
\drg以显示角色成员身份详细信息 (Pavel Luzanov)输出
Member of列已从\du和 中删除\dg,因为这个新命令更详细地显示此信息。允许psql的访问权限命令显示系统对象 (Nathan Bossart)
为外部表子表和分区添加psql
FOREIGN指定(Ian Lawrence Barwick)\d+防止
\df+显示函数源代码 (Isaac Morland)使用 可以更轻松地查看函数体
\sf。允许psql使用扩展查询协议提交查询 (Peter Eisentraut)
使用新的psql
\bind命令将参数传递给此类查询。允许psql
\watch限制执行次数 (Andrey Borodin)\watch现在可以在指定时命名选项。检测psql 的无效值
\watch,并允许零指定无延迟 (Andrey Borodin)允许psql脚本获取 shell 命令和查询的退出状态 (Corey Huinker, Tom Lane)
新的psql控制变量是
SHELL_ERROR和SHELL_EXIT_CODE。各种psql选项卡补全改进(Vignesh C、Aleksander Alekseev、Dagfinn Ilmari Mannsåker、Shi Yu、Michael Paquier、Ken Kato、Peter Smith)
E.1.3.9.2。 pg_转储
添加转储子表和分区的pg_dump控制 (Gilles Darold)
新选项是
--table-and-children、--exclude-table-and-children和--exclude-table-data-and-children。将LZ4和Zstandard压缩添加到pg_dump (Georgios Kokolatos, Justin Pryzby)
允许pg_dump和pg_basebackup使用
long模式进行压缩 (Justin Pryzby)改进pg_dump以接受更一致的压缩语法 (Georgios Kokolatos)
选项如
--compress=gzip:5.
E.1.3.10。服务器应用程序
添加initdb选项以设置initdb持续时间和所有未来服务器启动期间的服务器变量 (Tom Lane)
选项是
-c name=value.为createuser添加选项以控制更多用户选项(Shinya Kato)
具体来说,新选项控制有效截止日期、绕过行级安全性和角色成员身份。
弃用createuser选项
--role(Nathan Bossart)此选项很容易与新的createuser角色成员资格选项混淆,因此
--member-of已添加具有相同功能的选项。该--role选项仍然可以使用。允许控制vacuumdb模式处理(Gilles Darold)
--schema这些由选项和控制--exclude-schema。让pg_upgrade设置新集群的区域设置和编码 (Jeff Davis)
这消除了使用相同区域设置和编码设置创建新集群的要求。
添加pg_upgrade选项以指定默认传输模式 (Peter Eisentraut)
选项是
--copy.改进pg_basebackup以接受数字压缩选项 (Georgios Kokolatos, Michael Paquier)
--compress=server-5现在支持类似的选项。修复pg_basebackup以处理存储在
PGDATA目录中的表空间 (Robert Haas)添加pg_waldump选项
--save-fullpage来转储整页图像 (David Christensen)允许pg_waldump选项
-t/--timeline接受十六进制值 (Peter Eisentraut)添加对pg_verifybackup进度报告的支持(Masahiko Sawada)
允许pg_rewind正确跟踪时间线更改 (Heikki Linnakangas)
以前,如果pg_rewind在时间线切换之后但在发出检查点之前运行,它可能会错误地确定不需要倒带。
让pg_receivewal和pg_recvlogic干净地退出
SIGTERM(Christoph Berg)该信号经常被systemd使用。
E.1.3.11。源代码
默认构建ICU支持 (Jeff Davis)
这会删除构建标志
--with-icu并添加标志--without-icu。添加对x86-64 架构上的SSE2(流SIMD扩展 2)向量运算的支持 (John Naylor)
添加对ARM架构上的高级SIMD(单指令多数据)( NEON ) 指令的支持(Nathan Bossart)
使用MSVC构建Windows二进制文件( ASLR ) (Michael Paquier)
RandomizedBaseAddress这已经在MinGW版本中启用了。
默认情况下防止扩展库导出其符号(Andres Freund、Tom Lane)
现在必须显式标记需要从核心后端或其他扩展调用的函数
PGDLLEXPORT。需要Windows 10或更高版本(Michael Paquier、Juan José Santamaría Flecha)
以前支持Windows Vista和Windows XP 。
需要Perl版本 5.14 或更高版本 (John Naylor)
需要Bison版本 2.3 或更高版本 (John Naylor)
需要Flex版本 2.5.35 或更高版本 (John Naylor)
需要MIT Kerberos 才能支持GSSAPI (Stephen Frost)
删除对Visual Studio 2013的支持(Michael Paquier)
删除对HP-UX的支持(Thomas Munro)
删除对HP/Intel Itanium的支持(Thomas Munro)
删除对M68K、M88K、M32R和SuperH CPU架构的支持 (Thomas Munro)
删除libpq对SCM凭据身份验证的支持(Michael Paquier)
PostgresSQL 9.1中删除了对此身份验证方法的后端支持。
添加介子构建系统(Andres Freund、Nazir Bilal Yavuz、Peter Eisentraut)
这最终将取代Autoconf和基于Windows的MSVC构建系统。
允许控制构建系统使用的openssl二进制文件的位置(Peter Eisentraut)
使查找openssl程序成为配置或介子选项
添加构建选项以允许测试小WAL段大小 (Andres Freund)
构建选项是
--with-segsize-blocks和-Dsegsize_blocks。添加pgindent选项 (Andrew Dunstan)
新选项为
--show-diff、--silent-diff、--commit和--help,并且允许多个--exclude选项。还要求显式指定 typedef 文件。选项--code-base和--build也被删除。将pg_bsd_indent源代码添加到主树 (Tom Lane)
改进make_ctags和make_etags (Yugo Nagata)
调整
pg_attribute色谱柱以提高效率 (Peter Eisentraut)
E.1.3.12。附加模块
改进布尔列上基于扩展的索引的使用(Zongliang Quan、Tom Lane)
添加对 Daitch-Mokotoff Soundex 的支持到fuzzystrmatch (Dag Lem)
允许auto_explain记录传递给参数化语句的值 (Dagfinn Ilmari Mannsåker)
这会影响使用服务器端
PREPARE/EXECUTE和客户端解析/绑定的查询。日志记录由; 控制auto_explain.log_parameter_max_length;默认情况下,查询参数将被记录,没有长度限制。让auto_explain的模式尊重(Atsushi Torikoshi)
log_verbose的值compute_query_id以前即使
compute_query_id启用,log_verbose也不会显示查询标识符。将ltree标签的最大长度从 256 更改为 1000 并允许使用连字符 (Garen Torikian)
对实用程序命令中使用的常量进行
pg_stat_statements标准化 (Michael Paquier)以前出现的是常量而不是占位符,例如
$1。添加pg_walinspect函数
pg_get_wal_block_info()来报告WAL块信息 (Michael Paquier, Melanie Plageman, Bharath Rupireddy)更改pg_walinspect 的功能
pg_get_wal_records_info()并pg_get_wal_stats()解释结束LSN (Bharath Rupireddy)以前代表不存在的WAL位置的结束LSN会生成错误,而现在它们将被解释为WAL的结尾。
在pg_walinspect和pg_waldump中添加WAL记录的详细描述(Melanie Plageman, Peter Geoghegan)
添加pageinspect功能
bt_multi_page_stats()以报告多个页面的统计信息 (Hamid Akhtar)这与其他类似,
bt_page_stats()只是它可以报告一系列页面。将空范围输出列添加到pageinspect函数
brin_page_items()(Tomas Vondra)重新设计归档模块以使其更加灵活(Nathan Bossart)
初始化更改将需要更新为旧版本 Postgres 编写的模块。
纠正不准确的pg_stat_statements行跟踪扩展查询协议语句 (Sami Imseih)
添加pg_buffercache函数
pg_buffercache_usage_counts()来报告使用总量 (Nathan Bossart)添加pg_buffercache函数
pg_buffercache_summary()来报告汇总的缓冲区统计信息 (Melih Mutlu)允许使用新语法在扩展脚本中引用所需扩展的架构
@extschema:referenced_extension_name@(Regina Obe)no_relocate允许使用(Regina Obe)将所需扩展标记为不可重定位这允许
@extschema:referenced_extension_name@在扩展的生命周期内将其视为常量。
E.1.3.12.1。 postgres_fdw
允许postgres_fdw并行中止 (Etsuro Fujita)
这是通过postgres_fdw选项启用的
parallel_abort。使
ANALYZE外部postgres_fdw表更高效 (Tomas Vondra)postgres_fdw选项
analyze_sampling控制采样方法。将postgres_fdw
reg中 * 类型常量的装运限制为引用标记为可装运的内置对象或扩展的那些常量 (Tom Lane)让postgres_fdw和dblink在连接建立期间处理中断 (Andres Freund)
E.1.4。致谢
PostgreSQL 16下载:https://www.postgresql.org/download/
PostgreSQL 16发布新闻:https://www.modb.pro/db/1702514781685108736




