PostgreSQL 16 Beta 3 发布(发行说明)!

2023年8月10日,PostgreSQL 全球开发小组发布了 PostgreSQL 16 Beta 3 版本。

PostgreSQL 16 包含许多新功能和增强功能,包括:

  • 允许 FULL 和内部右 OUTER 哈希联接的并行化

  • 允许从备用服务器进行逻辑复制

  • 允许逻辑复制订阅者并行应用大型事务

  • 允许使用新的 pg_stat_io 视图监控 I/O 统计信息

  • 添加 SQL/JSON 构造函数和标识函数

  • 提高真空冷冻性能

  • 添加对 pg_hba.conf 中用户名和数据库名以及 pg_ident.conf 中用户名的正则表达式匹配的支持

PostgreSQL 16 Beta 3 中的修复:

  • 添加\drg命令以psql显示有关角色授予的信息。
  • 将时间线 ID 添加到使用pg_waldump --save-fullpage.
  • 修复并行工作线程中发生死锁后的崩溃问题VACUUM
  • 以下各节将更详细地解释上述项目和PostgreSQL 16 的其他新功能。

    E.1.2。迁移到版本 16 

    对于那些希望从任何先前版本迁移数据的人来说,需要使用pg_dumpall进行转储/恢复或使用pg_upgrade或逻辑复制。有关迁移到新的主要版本的一般信息,请参阅第 19.6 节。

    版本 16 包含许多可能影响与以前版本的兼容性的更改。请注意以下不兼容性:

    • 更改 PL/pgSQL 绑定游标变量的赋值规则 (Tom Lane)

      以前,此类变量的字符串值在游标分配期间被设置为与变量名称匹配;现在它将在 OPEN 期间分配,并且与变量名称不匹配。要恢复以前的行为,请在 OPEN 之前将所需的门户名称分配给游标变量。

    • 不允许主键使用 NULLS NOT DISTINCT 索引 (Daniel Gustafsson)

    • 更改 REINDEX DATABASE 和 reindexdb 以不处理系统目录上的索引 (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)

    • 删除 libpq 对 SCM 凭据身份验证的支持 (Michael Paquier)

      PostgreSQL 9.1 中删除了对此身份验证方法的后端支持。

    • 将服务器变量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 Promotion 或 pg_promote() 可以更轻松地完成。

    • 删除只读服务器变量 lc_collate 和 lc_ctype (Peter Eisentraut)

      数据库之间的排序规则和区域设置可能有所不同,因此将它们作为只读服务器变量是没有帮助的。

    • 弃用 createuser 选项 --role (Nathan Bossart)

      此选项很容易与新的 createuser 角色成员资格选项混淆,因此添加了具有相同功能的选项 --member-of。仍然可以使用 --role 选项。

    • 删除 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。

    • 允许在 UNION ALL 上进行记忆(RichardGuo)

    • 允许以不可为空的输入作为内部关系执行反连接 (RichardGuo)

    • 允许 FULL 和内部右 OUTER 散列连接的并行化(Melanie Plageman、Thomas Munro)

    • 提高 GIN 索引访问优化器成本的准确性 (Ronan Dunklau)

    E.1.3.1.2。一般表现
    • 允许更有效地添加堆和索引页 (Andres Freund)

    • 在非冻结操作期间,在适当的情况下执行页面冻结 (Peter Geoghegan)

      这使得全台冷冻真空吸尘器的必要性降低。

    • 当指定 RANGE 模式但不必要时,允许窗口函数在内部使用 ROWS 模式 (David Rowley)

    • 允许优化不断增加的窗口函数 ntile()、cume_dist() 和percent_rank() (David Rowley)

    • 允许并行化聚合函数 string_agg() 和 array_agg() (David Rowley)

    • 通过缓存 RANGE 和 LIST 分区查找来提高性能 (Amit Langote, Houzhijie, 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)

    • 如果仅更新 BRIN 索引列,则允许 HOT 更新(Matthias van de Meent、Josef Simanek、Tomas Vondra)

    • 提高更新流程标题的速度(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 视图来跟踪 IO 统计信息 (Melanie Plageman)

    • 记录表上最后一次顺序扫描和索引扫描的统计信息 (Dave Page)

      此信息出现在 pg_stat_all_tables 和 pg_stat_all_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)

      以前,仅在报告第一个统计数据时才创建条目。

    • 更正 pg_stat_database 中显示的临时关系写入的 IO 核算 (Melanie Plageman)

    • 添加函数 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。特权
    • 创建预定义角色和可授予的权限,并有权执行维护操作 (Nathan Bossart)

      预定义的角色称为 pg_maintain。

    • 添加具有创建订阅权限的预定义角色 pg_create_subscription (Robert Haas)

    • 允许订阅不需要密码 (Robert Haas)

      这是通过选项password_required=false 来完成的。

    • 简化 LOCK TABLE 的权限 (Jeff Davis)

      以前,在各种锁定级别执行 LOCK TABLE 的能力绑定到特定的查询类型权限。例如,UPDATE 可以执行除 ACCESS SHARE 之外的所有锁定级别,后者需要 SELECT 权限。现在 UPDATE 可以发出所有锁定级别。更多的?

    • 允许使用 ADMIN 选项执行“GRANT group_name TO user_name” (Robert Haas)

      以前需要 CREATEROLE 权限。

    • 限制 CREATEROLE 角色的权限 (Robert Haas)

      以前,具有 CREATEROLE 权限的角色可以更改任何非超级用户角色的许多方面。此类更改(包括添加成员)现在要求请求更改的角色具有 ADMIN OPTION 权限。

    • 提高 CREATEROLE 角色逻辑控制其他角色的能力 (Robert Haas)

      例如,只有当他们也拥有这些权限时,他们才可以更改 CREATEDB、REPLICATION 和 BYPASSRLS 属性。

    • 允许 GRANT 控制角色继承行为 (Robert Haas)

      默认情况下,角色继承由成员角色的继承状态控制。新的 GRANT 子句WITH INHERIT 和WITH ADMIN 现在可以覆盖这一点。

    • 允许创建其他角色的角色自动继承新角色的权限或将 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_iterations 设置 SCRAM 迭代计数 (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_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 设置。

    • 添加 debug_io_direct 设置供开发人员使用(Thomas Munro、Andres Freund、Bharath Rupireddy)

      虽然主要针对开发人员,但 wal_sync_method=open_sync/open_datasync 已修改为不使用 wal_level=minimal 的直接 I/O;现在可以使用 debug_io_direct=wal 启用此功能。

    • 添加函数 pg_split_walfile_name() 报告 WAL 文件名的段和时间轴值 (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_file_rules (Julien Rouhaud)

    E.1.3.1.7。 本地化
    • 从环境中确定 ICU 默认区域设置 (Jeff Davis)

      但是,ICU 不支持 C 语言环境,因此在这种情况下使用 UTF-8。以前,默认值始终为 UTF-8。

    • 具有 CREATE DATABASE 和 CREATE COLLATION 的 LOCALE 选项,以及 initdb 和 createdb --locale 选项,控制非 libc 排序规则提供程序 (Jeff Davis)

      以前他们只控制 libc 提供者。

    • 添加预定义排序规则“unicode”和“ucs_basic”(Peter Eisentraut)

      仅当启用 ICU 支持时此功能才有效。

    • 允许创建自定义 ICU 整理规则 (Peter Eisentraut)

      这是使用 CREATE COLLATION 的新 RULES 子句以及 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 SUBSCRIPTION“流”选项现在支持“并行”以启用并行应用程序。由并行工作人员执行大型事务的应用。并行工作线程的数量由新的服务器变量 max_parallel_apply_workers_per_subscription 控制。还添加了等待事件 LogicalParallelApplyMain、LogicalParallelApplyStateChange 和 LogicalApplySendData。列leader_pid已添加到系统视图pg_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”选项控制的。

    • 允许通过 CREATE TABLE 指定存储类型(Teodor Sigaev、Aleksander Alekseev)

      以前只有 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 更改为不再需要参数 (Simon Riggs)

      以前必须指定数据库名称。

    • 如果未指定,则允许 CREATE STATISTICS 生成统计名称 (Simon Riggs)

    E.1.3.4。数据类型

    • 允许非十进制整数文字 (Peter Eisentraut)

      例如,0x42F、0o273 和 0b100101。

    • 允许 NUMERIC 处理任意大小的十六进制、八进制和二进制整数 (Dean Rasheed)

      以前,这些非十进制基数仅支持不带引号的八字节整数。

    • 允许在整数和数字常量中使用下划线 (Peter Eisentraut, Dean Rasheed)

      这可以提高长数字字符串的可读性。

    • 在日期时间输入中接受拼写“+infinity”(Vik Fearing)

    • 防止将“纪元”和“无穷大”与日期时间字符串中的其他字段一起指定 (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)

    • 改进 OR 和 NOT 表达式的全文突出显示函数 ts_headline() 的处理 (Tom Lane)

    • 添加函数以在指定时区中添加、减去和生成时间戳值 (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() 选项 INDENT 以漂亮地打印其输出 (Jim Jones)

    • 更改 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)

      这是通过 GET DIAGNOSTICS 变量 = PG_ROUTINE_OID 来完成的。

    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 的访问权限命令显示系统对象 (Nathan Bossart)

      选项是\dpS 和\zS。

    • 为外部表子表和分区添加“FOREIGN”指定到 psql \d+ (Ian Lawrence Barwick)

    • 防止 \df+ 显示函数源代码 (Isaac Morland)

      使用 \ev 和 \ef 可以更轻松地查看函数体。

    • 允许 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 使用“长”模式进行压缩 (Justin Pryzby)

    • 改进 pg_dump 以接受更一致的压缩语法 (Georgios Kokolatos)

      诸如“--compress=gzip:5”之类的选项。

    E.1.3.10。服务器应用程序

    • 添加 initdb 选项以设置 initdb 持续时间和所有未来服务器启动期间的服务器变量 (Tom Lane)

      该选项是“-c 名称=值”。

    • 为createuser添加选项以控制更多用户选项(Shinya Kato)

      具体来说,新选项控制有效截止日期、绕过行级安全性和角色成员身份。

    • 允许控制vacuumdb模式处理(Gilles Darold)

      这些由选项 --schema 和 --exclude-schema 控制。

    • 使用新的VACUUM选项来提高vacuumdb的性能(Tom Lane,Nathan Bossart)

    • 让 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 二进制文件使用 RandomizedBaseAddress (ASLR) (Michael Paquier)

      这已经在 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)

    • 添加介子构建系统(Andres Freund、Nazir Bilal Yavuz、Peter Eisentraut)

      这最终将取代 Autoconf 和基于 Windows 的 MSVC 构建系统。

    • 允许控制构建系统使用的 openssl 二进制文件的位置 (Peter Eisentraut)

      使查找 openssl 程序成为配置或介子选项

    • 添加构建选项以允许测试小段大小 (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 的 log_verbose 模式尊重compute_query_id 的值 (Atsushi Torikoshi)

      以前,即使启用了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”启用的。

    • 使外部 postgres_fdw 表上的 ANALYZE 更高效 (Tomas Vondra)

      postgres_fdw 选项analyze_sampling 控制采样方法。

    • 将 postgres_fdw 中的 reg* 类型常量限制为引用标记为可发布的内置对象或扩展的那些常量 (Tom Lane)

    • 让 postgres_fdw 和 dblink 在连接建立期间处理中断 (Andres Freund)

    E.1.4。致谢


    文章来源:https://www.postgresql.org/docs/16/release-16.html


    免责声明:

    1、本站资源由自动抓取工具收集整理于网络。

    2、本站不承担由于内容的合法性及真实性所引起的一切争议和法律责任。

    3、电子书、小说等仅供网友预览使用,书籍版权归作者或出版社所有。

    4、如作者、出版社认为资源涉及侵权,请联系本站,本站将在收到通知书后尽快删除您认为侵权的作品。

    5、如果您喜欢本资源,请您支持作者,购买正版内容。

    6、资源失效,请下方留言,欢迎分享资源链接

    文章评论

    0条评论