受支持版本: 16

E.14. 发布版本 16 #

发布日期:. 2023-09-14

E.14.1. 概述 #

PostgreSQL 16 包含许多新特性和增强,包括:

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

  • 允许从备库进行逻辑复制

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

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

  • 增加 SQL/JSON 构造函数和身份函数

  • 改进 vacuum 冻结的性能

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

以上项目和 PostgreSQL 16 的其他新特性将在下面的章节中更详细地解释。

E.14.2. 迁移到版本 16 #

希望从任何以前的版本迁移数据的用户需要使用 pg_dumpall 进行导出/恢复,或者使用 pg_upgrade 或逻辑复制。有关迁移到新主版本的一般信息,请参见 Section 18.6

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

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

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

  • 禁止主键使用 NULLS NOT DISTINCT 索引(Daniel Gustafsson) §

  • 更改 REINDEX DATABASEreindexdb 不再处理系统目录上的索引(Simon Riggs) § §

    仍可通过 REINDEX SYSTEMreindexdb --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 promotepg_promote() 更容易实现。

  • 移除只读服务器变量 lc_collatelc_ctype(Peter Eisentraut) §

    排序规则和区域设置可以在数据库之间不同,因此将它们作为只读服务器变量并无意义。

  • 角色的继承属性现在决定在 GRANT 时添加的成员角色的默认继承状态(Robert Haas) §

    角色的默认继承行为现在可以通过新的 GRANT ... WITH INHERIT 子句覆盖。 这使得某些角色可继承而其他角色不可继承,因为成员角色的继承状态是在 GRANT 时确定的。 此前,成员角色的继承状态仅由角色自身的继承属性控制, 而角色继承属性的变更会影响其所有既有和未来的成员角色。

  • 限制 CREATEROLE 的权限及其修改其他角色的能力(Robert Haas) § §

    之前,具有 CREATEROLE 权限的角色可以更改任何非超级用户角色的许多方面。此类更改(包括添加成员)现在要求请求更改的角色具有 ADMIN OPTION 权限。例如,它们现在只有在也具有这些权限时才能更改 CREATEDBREPLICATIONBYPASSRLS 属性。

  • 移除 postmaster 二进制文件的符号链接(Peter Eisentraut) §

E.14.3. 变更 #

以下是 PostgreSQL 16 与上一主版本之间变更的详细说明。

E.14.3.1. 服务器 #

E.14.3.1.1. 优化器 #
  • 允许在更多情况下使用增量排序,包括 DISTINCT(David Rowley) § §

  • 增加聚合函数使用带有 ORDER BYDISTINCT 的预排序数据的能力(David Rowley) § § §

    新的服务器变量 enable_presorted_aggregate 可用于禁用此功能。

  • 允许在 UNION ALL 之上使用 memoize(Richard Guo) §

  • 允许反连接以非空输入作为内关系执行(Richard Guo) §

  • 允许并行化 FULL 和内部右 OUTER 哈希连接(Melanie Plageman,Thomas Munro) §

  • 改进 GIN 索引访问优化器成本的准确性(Ronan Dunklau) §

E.14.3.1.2. 一般性能 #
  • 允许更高效地添加堆页和索引页(Andres Freund) § §

  • 在非冻结操作期间,在适当时执行页面冻结(Peter Geoghegan) § § §

    这使得整表冻结清理的必要性降低。

  • RANGE 模式处于活动状态但不必要时,允许窗口函数在内部使用更快的 ROWS 模式(David Rowley) §

  • 允许优化单调递增的窗口函数 ntile()cume_dist()percent_rank()(David Rowley) §

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

  • 通过缓存 RANGELIST 分区查找来改进性能(Amit Langote,Hou Zhijie,David Rowley) §

  • 允许控制 vacuum 和 analyze 使用的共享缓冲区(Melanie Plageman) § § §

    VACUUM/ANALYZE 选项为 BUFFER_USAGE_LIMITvacuumdb 选项为 --buffer-usage-limit。默认值由服务器变量 vacuum_buffer_usage_limit 设置,它也控制自动清理。

  • 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.14.3.1.3. 监控 #
  • 增加系统视图 pg_stat_io 以跟踪 I/O 统计(Melanie Plageman) § § § § §

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

    此信息显示在 pg_stat_*_tablespg_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) §

    之前条目仅在首次报告统计信息时创建。

  • 修正 pg_stat_database 中显示的临时关系写入的 I/O 统计(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 发送器不显示数据库名称。

  • log_checkpoints 消息添加检查点和 REDO LSN 信息(Bharath Rupireddy,Kyotaro Horiguchi) §

  • 在客户端证书失败时提供额外详细信息(Jacob Champion) §

E.14.3.1.4. 权限 #
  • 增加具有创建订阅权限的预定义角色 pg_create_subscription(Robert Haas) §

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

    这通过选项 password_required=false 实现。

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

    之前用户执行各种锁级别的 LOCK TABLE 的能力被限制为他们有权在表上执行的命令所需的锁级别。例如,具有 UPDATE 权限的用户可以执行除 ACCESS SHARE 之外的所有锁级别,即使它是较低的锁级别。现在,如果用户已有更高锁级别的权限,则可以发出较低的锁级别。

  • 允许使用 ADMIN OPTION 执行 ALTER GROUP group_name ADD USER user_name(Robert Haas) §

    之前需要 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.14.3.1.5. 服务器配置 #
  • 增加对 Kerberos 凭证委托的支持(Stephen Frost) § § § §

    这通过服务器变量 gss_accept_delegationlibpq 连接参数 gssdelegation 启用。

  • 允许通过服务器变量 scram_iterations 设置 SCRAM 迭代次数(Daniel Gustafsson) §

  • 改进服务器变量管理的性能(Tom Lane) § §

  • 收紧对哪些服务器变量可以重置的限制(Masahiko Sawada) §

    之前,虽然某些变量(如 transaction_isolation)不受 RESET ALL 影响,但它们可以在不适当的情况下被单独重置。

  • 将各种 postgresql.conf 项目移入新类别(Shinya Kato) §

    这也影响 pg_settings 视图中显示的类别。

  • 防止配置文件递归超过 10 层(Julien Rouhaud) §

  • 允许自动清理更频繁地遵守延迟设置的更改(Melanie Plageman) § §

    不再仅在每个关系开始时遵守更改,而是在每个块开始时遵守更改。

  • 移除归档文件必须持久重命名的限制(Nathan Bossart) § §

    archive_command 命令现在更可能在崩溃后使用已归档的文件被调用。

  • 防止同时设置 archive_libraryarchive_command(Nathan Bossart) §

    之前 archive_library 会覆盖 archive_command

  • 允许 postmaster 使用中止信号终止子进程(Tom Lane) §

    这允许收集卡住的子进程的核心转储。这由 send_abort_for_crashsend_abort_for_kill 控制。postmaster 的 -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 已被修改为在 wal_level=minimal 时不使用直接 I/O;现在通过 debug_io_direct=wal 启用。

  • 增加函数 pg_split_walfile_name() 以报告 WAL 文件名的段和时间线值(Bharath Rupireddy) § §

E.14.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.confpg_ident.conf 中包含文件(Julien Rouhaud) §

    这由 includeinclude_if_existsinclude_dir 控制。系统视图 pg_hba_file_rulespg_ident_file_mappings 现在显示文件名。

  • 允许 pg_hba.conf 令牌具有无限长度(Tom Lane) §

  • 向系统视图 pg_hba_file_rules 添加规则和映射编号(Julien Rouhaud) §

E.14.3.1.7. 本地化 #
  • 使用 ICU 时从区域设置确定默认编码(Jeff Davis) §

    之前默认始终为 UTF-8

  • 使 CREATE DATABASECREATE COLLATIONLOCALE 选项以及 initdbcreatedb--locale 选项控制非 libc 排序规则提供程序(Jeff Davis)

    之前它们仅控制 libc 提供程序。

  • 增加预定义排序规则 unicodeucs_basic(Peter Eisentraut) §

    这仅在启用 ICU 支持时有效。

  • 允许创建自定义 ICU 排序规则(Peter Eisentraut) §

    这通过 CREATE COLLATION 的新 RULES 子句以及 CREATE DATABASEcreatedbinitdb 的新选项来实现。

  • 允许 Windows 自动导入系统区域设置(Juan José Santamaría Flecha) §

    之前在 Windows 上只能导入 ICU 区域设置。

E.14.3.2. 逻辑复制 #

  • 允许在备库上进行逻辑解码(Bertrand Drouvot,Andres Freund,Amit Khandekar) § § §

    创建逻辑槽需要快照 WAL 记录,但这类记录无法在备库上生成。为避免延迟,新函数 pg_log_standby_snapshot() 可生成此类记录。

  • 增加服务器变量以控制逻辑解码发布者如何传输变更以及订阅者如何应用它们(Shi Yu) § § §

    该变量为 debug_logical_replication_streaming

  • 允许逻辑复制初始表同步以二进制格式复制行(Melih Mutlu) §

    这仅对标记为二进制的订阅可用。

  • 允许并行应用逻辑复制(Hou Zhijie,Wang Wei,Amit Kapila) § § §

    CREATE SUBSCRIPTIONSTREAMING 选项现在支持 parallel,以便使用并行工作进程应用大事务。并行工作进程的数量由新的服务器变量 max_parallel_apply_workers_per_subscription 控制。还新增了等待事件 LogicalParallelApplyMainLogicalParallelApplyStateChangeLogicalApplySendData。系统视图 pg_stat_subscription 也新增了列 leader_pid 以跟踪并行活动。

  • 改进没有主键时逻辑复制应用的性能(Onder Kalaci,Amit Kapila) §

    具体来说,REPLICA IDENTITY FULL 现在可以使用 B-树索引而非顺序扫描表来查找匹配项。

  • 允许逻辑复制订阅者仅处理没有来源的变更(Vignesh C,Amit Kapila) § §

    这可用于避免复制循环。这由新的 CREATE SUBSCRIPTION ... ORIGIN 选项控制。

  • 以表所有者身份执行逻辑复制 SELECTDML 操作(Robert Haas) § §

    这提高了安全性,现在要求订阅所有者是超级用户或对复制集中所有拥有表的角色具有 SET ROLE 权限。以订阅所有者身份执行所有操作的先前行为可以通过订阅 run_as_owner 选项启用。

  • 使 wal_retrieve_retry_interval 按订阅操作(Nathan Bossart) §

    之前重试时间是全局应用的。这还添加了等待事件 >LogicalRepLauncherDSALogicalRepLauncherHash

E.14.3.3. 工具命令 #

  • 增加 EXPLAIN 选项 GENERIC_PLAN 以显示参数化查询的通用计划(Laurenz Albe) §

  • 允许 COPY FROM 值映射到列的 DEFAULT(Israel Barth Rubio) §

  • 允许 COPY 以批量方式向外部表添加行(Andrey Lepikhov,Etsuro Fujita) §

    这由 postgres_fdw 选项 batch_size 控制。

  • 允许 CREATE TABLE 指定 STORAGE 类型(Teodor Sigaev,Aleksander Alekseev) § §

    之前只有 ALTER TABLE 可以控制这一点。

  • 允许在外部表上使用截断触发器(Yugo Nagata) §

  • 允许 VACUUMvacuumdb 仅处理 TOAST 表(Nathan Bossart) §

    这通过让 VACUUM 关闭 PROCESS_MAIN 或让 vacuumdb 使用 --no-process-main 选项来实现。

  • 增加 VACUUM 选项以跳过或更新所有冻结统计(Tom Lane,Nathan Bossart) §

    选项为 SKIP_DATABASE_STATSONLY_DATABASE_STATS

  • 更改 REINDEX DATABASEREINDEX SYSTEM 不再要求参数(Simon Riggs) § §

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

  • 允许 CREATE STATISTICS 在未指定名称时自动生成统计名称(Simon Riggs) §

E.14.3.4. 数据类型 #

  • 允许非十进制整数字面量(Peter Eisentraut) §

    例如,0x42F0o2730b100101

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

    之前这些非十进制基数仅支持未加引号的八字节整数。

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

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

  • 接受日期时间输入中 +infinity 的拼写(Vik Fearing) §

  • 防止在日期时间字符串中同时指定 epochinfinity 与其他字段(Joseph Koshakow) §

  • 移除对 YyearMmonthDday 形式日期输入的未文档化支持(Joseph Koshakow) §

  • 增加函数 pg_input_is_valid()pg_input_error_info() 以检查类型转换错误(Tom Lane) § §

E.14.3.5. 一般查询 #

  • 允许 FROM 子句中的子查询省略别名(Dean Rasheed) §

  • 增加对 SQL/JSON 路径中增强数字字面量的支持(Peter Eisentraut) §

    例如,允许十六进制、八进制和二进制整数以及数字间的下划线。

E.14.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()ORNOT 表达式的处理(Tom Lane) §

  • 增加在指定时区中添加、减去和生成 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() 选项 INDENT 以美化输出(Jim Jones) §

  • 更改 pg_collation_actual_version() 以为默认排序规则返回合理的值(Jeff Davis) §

    之前它返回 NULL

  • 允许 pg_read_file()pg_read_binary_file() 忽略缺失的文件(Kyotaro Horiguchi) §

  • pg_size_bytes() 添加字节规格(B)(Peter Eisentraut) §

  • 允许 to_reg* 函数接受数字 OID 作为输入(Tom Lane) §

E.14.3.7. PL/pgSQL #

E.14.3.8. libpq #

  • 增加 libpq 连接选项 require_auth 以指定可接受的认证方法列表(Jacob Champion) §

    这也可用于禁止某些认证方法。

  • 允许多个 libpq 指定的主机被随机选择(Jelte Fennema) § §

    这通过 load_balance_hosts=random 启用,可用于负载均衡。

  • 增加 libpq 选项 sslcertmode 以控制客户端证书的传输(Jacob Champion) §

    选项值为 disableallowrequire

  • 允许 libpq 使用系统证书池进行证书验证(Jacob Champion,Thomas Habets) §

    这通过 sslrootcert=system 启用,同时也会启用 sslmode=verify-full

E.14.3.9. 客户端应用程序 #

  • 允许 ECPG 变量声明使用与非保留 SQL 关键字匹配的 typedef 名称(Tom Lane) §

    此更改确实会阻止与 C typedef 名称匹配的关键字在后续的 EXEC SQL 块中作为关键字处理。

E.14.3.9.1. psql #
  • 允许 psql 控制扩展格式中标题行的最大宽度(Platon Pronko) §

    这由 xheader_width 控制。

  • 增加 psql 命令 \drg 以显示角色成员资格详情(Pavel Luzanov) § §

    Member of 输出列已从 \du\dg 中移除,因为此新命令以更详细的方式显示此信息。

  • 允许 psql 的访问权限命令显示系统对象(Nathan Bossart) § §

    选项为 \dpS\zS

  • psql \d+ 中为外部表的子表和分区添加 FOREIGN 标识(Ian Lawrence Barwick) §

  • 阻止 \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_ERRORSHELL_EXIT_CODE

  • 各种 psql tab 补全改进(Vignesh C,Aleksander Alekseev,Dagfinn Ilmari Mannsåker,Shi Yu,Michael Paquier,Ken Kato,Peter Smith) § § § § § § § § § § § §

E.14.3.9.2. pg_dump #
  • 增加 pg_dump 对导出子表和分区的控制(Gilles Darold) §

    新选项为 --table-and-children--exclude-table-and-children--exclude-table-data-and-children

  • pg_dump 添加 LZ4Zstandard 压缩(Georgios Kokolatos,Justin Pryzby)

  • 允许 pg_dumppg_basebackup 使用 long 模式进行压缩(Justin Pryzby) § § § §

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

    类似 --compress=gzip:5 的选项。

E.14.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 控制。

  • 使用新的 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_receivewalpg_recvlogicalSIGTERM 时干净退出(Christoph Berg) §

    此信号通常由 systemd 使用。

E.14.3.11. 源代码 #

  • 默认构建 ICU 支持(Jeff Davis) §

    这移除了构建标志 --with-icu 并增加了标志 --without-icu

  • 增加对 x86-64 架构上 SSE2(Streaming SIMD Extensions 2)向量运算的支持(John Naylor) §

  • 增加对 ARM 架构上 Advanced SIMD(Single Instruction Multiple Data)(NEON)指令的支持(Nathan Bossart) §

  • 使用 MSVC 构建的 Windows 二进制文件使用 RandomizedBaseAddressASLR)(Michael Paquier) §

    这在 MinGW 构建中已经启用。

  • 防止扩展库默认导出其符号(Andres Freund,Tom Lane) § §

    需要从核心后端或其他扩展调用的函数现在必须显式标记为 PGDLLEXPORT

  • 要求 Windows 10 或更新版本(Michael Paquier,Juan José Santamaría Flecha) §

    之前支持 Windows VistaWindows XP

  • 要求 Perl 版本 5.14 或更高(John Naylor) §

  • 要求 Bison 版本 2.3 或更高(John Naylor) §

  • 要求 Flex 版本 2.5.35 或更高(John Naylor) §

  • GSSAPI 支持要求 MIT Kerberos(Stephen Frost) §

  • 移除对 Visual Studio 2013 的支持(Michael Paquier) §

  • 移除对 HP-UX 的支持(Thomas Munro) §

  • 移除对 HP/Intel Itanium 的支持(Thomas Munro) §

  • 移除对 M68KM88KM32RSuperH CPU 架构的支持(Thomas Munro) § §

  • 移除 libpqSCM 凭证认证的支持(Michael Paquier) §

    此认证方法的后端支持已在 PostgreSQL 9.1 中移除。

  • 增加 meson 构建系统(Andres Freund,Nazir Bilal Yavuz,Peter Eisentraut) §

    这最终将取代 Autoconf 和基于 WindowsMSVC 构建系统。

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

    将查找 openssl 程序改为由 configuremeson 选项控制。

  • 增加构建选项以允许测试小表段大小(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_ctagsmake_etags(Yugo Nagata) §

  • 调整 pg_attribute 列以提高效率(Peter Eisentraut) §

E.14.3.12. 附加模块 #

  • 改进对布尔列上扩展索引的使用(Zongliang Quan,Tom Lane) §

  • fuzzystrmatch 添加 Daitch-Mokotoff Soundex 支持(Dag Lem) §

  • 允许 auto_explain 记录传递给参数化语句的值(Dagfinn Ilmari Mannsåker) §

    这影响使用服务器端 PREPARE/EXECUTE 的查询,以及客户端通过 Parse/Bind 协议消息发出的查询。日志记录由 auto_explain.log_parameter_max_length 控制;默认情况下,查询参数记录时不受长度限制。

  • 使 auto_explainlog_verbose 模式遵守 compute_query_id 的值(Atsushi Torikoshi) §

    之前即使启用了 compute_query_idlog_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_walinspectpg_waldump 中添加 WAL 记录的详细描述(Melanie Plageman,Peter Geoghegan) § § § §

  • 增加 pageinspect 函数 bt_multi_page_stats() 以报告多页统计信息(Hamid Akhtar) §

    这与 bt_page_stats() 类似,但可以报告一个范围的页面。

  • pageinspect 函数 brin_page_items() 添加空范围输出列(Tomas Vondra) §

  • 重新设计归档模块以更加灵活(Nathan Bossart) §

    这一初始化变更要求为较旧 PostgreSQL 版本编写的模块进行更新。

  • 修正 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.14.3.12.1. postgres_fdw #
  • 允许 postgres_fdw 并行执行中止操作(Etsuro Fujita) §

    这通过 postgres_fdw 选项 parallel_abort 启用。

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

    postgres_fdw 选项 analyze_sampling 控制采样方法。

  • 限制 postgres_fdwreg* 类型常量的传输,仅允许引用内置对象或标记为可传输的扩展(Tom Lane) §

  • 使 postgres_fdwdblink 在连接建立期间处理中断(Andres Freund) §

E.14.4. 致谢 #

以下人员(按字母顺序排列)作为补丁作者、提交者、审查者、测试者或问题报告者对此版本做出了贡献。

Abhijit Menon-Sen
Adam Mackler
Adrian Klaver
Ahsan Hadi
Ajin Cherian
Ajit Awekar
Alan Hodgson
Aleksander Alekseev
Alex Denman
Alex Kozhemyakin
Alexander Korolev
Alexander Korotkov
Alexander Lakhin
Alexander Pyhalov
Alexey Borzov
Alexey Ermakov
Alexey Makhmutov
Álvaro Herrera
Amit Kapila
Amit Khandekar
Amit Langote
Amul Sul
Anastasia Lubennikova
Anban Company
Andreas Dijkman
Andreas Karlsson
Andreas Scherbaum
Andrei Zubkov
Andres Freund
Andrew Alsup
Andrew Bille
Andrew Dunstan
Andrew Gierth
Andrew Kesper
Andrey Borodin
Andrey Lepikhov
Andrey Sokolov
Ankit Kumar Pandey
Ante Kresic
Anton Melnikov
Anton Sidyakin
Anton Voloshin
Antonin Houska
Arne Roland
Artem Anisimov
Arthur Zakirov
Ashutosh Bapat
Ashutosh Sharma
Asim Praveen
Atsushi Torikoshi
Ayaki Tachikake
Balazs Szilfai
Benoit Lobréau
Bernd Helmle
Bertrand Drouvot
Bharath Rupireddy
Bilva Sanaba
Bob Krier
Boris Zentner
Brad Nicholson
Brar Piening
Bruce Momjian
Bruno da Silva
Carl Sopchak
Cary Huang
Changhong Fei
Chris Travers
Christoph Berg
Christophe Pettus
Corey Huinker
Craig Ringer
Curt Kolovson
Dag Lem
Dagfinn Ilmari Mannsåker
Daniel Gustafsson
Daniel Vérité
Daniel Watzinger
Daniel Westermann
Daniele Varrazzo
Daniil Anisimov
Danny Shemesh
Dave Page
David Christensen
David G. Johnston
David Geier
David Gilman
David Kimura
David Rowley
David Steele
David Turon
David Zhang
Davinder Singh
Dean Rasheed
Denis Laxalde
Dilip Kumar
Dimos Stamatakis
Dmitriy Kuzmin
Dmitry Astapov
Dmitry Dolgov
Dmitry Koval
Dong Wook Lee
Dongming Liu
Drew DeVault
Duncan Sands
Ed Maste
Egor Chindyaskin
Ekaterina Kiryanova
Elena Indrupskaya
Emmanuel Quincerot
Eric Mutta
Erik Rijkers
Erki Eessaar
Erwin Brandstetter
Etsuro Fujita
Eugeny Zhuzhnev
Euler Taveira
Evan Jones
Evgeny Morozov
Fabrízio de Royes Mello
Farias de Oliveira
Florin Irion
Franz-Josef Färber
Garen Torikian
Georgios Kokolatos
Gilles Darold
Greg Stark
Guillaume Lelarge
Gunnar Bluth
Gunnar Morling
Gurjeet Singh
Haiyang Wang
Haiying Tang
Hamid Akhtar
Hans Buschmann
Hao Wu
Hayato Kuroda
Heath Lord
Heikki Linnakangas
Himanshu Upadhyaya
Hisahiro Kauchi
Hongyu Song
Hubert Lubaczewski
Hung Nguyen
Ian Barwick
Ibrar Ahmed
Ilya Gladyshev
Ilya Nenashev
Isaac Morland
Israel Barth Rubio
Jacob Champion
Jacob Speidel
Jaime Casanova
Jakub Wartak
James Coleman
James Inform
James Vanns
Jan Wieck
Japin Li
Jeevan Ladhe
Jeff Davis
Jeff Janes
Jehan-Guillaume de Rorthais
Jelte Fennema
Jian He
Jim Jones
Jinbao Chen
Joe Conway
Joel Jacobson
John Naylor
Jonathan Katz
Josef Simanek
Joseph Koshakow
Juan José Santamaría Flecha
Julien Rouhaud
Julien Roze
Junwang Zhao
Justin Pryzby
Justin Zhang
Karina Litskevich
Karl O. Pinc
Keisuke Kuroda
Ken Kato
Kevin McKibbin
Kieran McCusker
Kirk Wolak
Konstantin Knizhnik
Koshi Shibagaki
Kotaro Kawamoto
Kui Liu
Kyotaro Horiguchi
Lakshmi Narayanan Sreethar
Laurence Parry
Laurenz Albe
Luca Ferrari
Lukas Fittl
Maciek Sakrejda
Magnus Hagander
Maja Zaloznik
Marcel Hofstetter
Marina Polyakova
Mark Dilger
Marko Tiikkaja
Markus Winand
Martijn van Oosterhout
Martin Jurca
Martin Kalcher
Mary Xu
Masahiko Sawada
Masahiro Ikeda
Masao Fujii
Mason Sharp
Matheus Alcantara
Mats Kindahl
Matthias van de Meent
Matthijs van der Vleuten
Maxim Orlov
Maxim Yablokov
Mehmet Emin Karakas
Melanie Plageman
Melih Mutlu
Micah Gates
Michael Banck
Michael Paquier
Michail Nikolaev
Michel Pelletier
Mike Oh
Mikhail Gribkov
Mingli Zhang
Miroslav Bendik
Mitsuru Hinata
Myo Wai Thant
Naeem Akhter
Naoki Okano
Nathan Bossart
Nazir Bilal Yavuz
Neha Sharma
Nick Babadzhanian
Nicola Contu
Nikhil Shetty
Nikita Glukhov
Nikolay Samokhvalov
Nikolay Shaplov
Nishant Sharma
Nitin Jadhav
Noah Misch
Noboru Saito
Noriyoshi Shinoda
Nuko Yokohama
Oleg Bartunov
Oleg Tselebrovskiy
Olly Betts
Onder Kalaci
Onur Tirtir
Pablo Federico
Palle Girgensohn
Paul Guo
Paul Jungwirth
Paul Ramsey
Pavel Borisov
Pavel Kulakov
Pavel Luzanov
Pavel Stehule
Peifeng Qiu
Peter Eisentraut
Peter Geoghegan
Peter Smith
Phil Florent
Philippe Godfrin
Platon Pronko
Przemyslaw Sztoch
Rachel Heaton
Ranier Vilela
Regina Obe
Reid Thompson
Reiner Peterke
Richard Guo
Riivo Kolka
Rishu Bagga
Robert Haas
Robert Sjöblom
Robert Treat
Roberto Mello
Robins Tharakan
Roman Zharkov
Ronan Dunklau
Rushabh Lathia
Ryo Matsumura
Samay Sharma
Sami Imseih
Sandeep Thakkar
Sandro Santilli
Sebastien Flaesch
Sébastien Lardière
Sehrope Sarkuni
Sergey Belyashov
Sergey Pankov
Sergey Shinderuk
Shi Yu
Shinya Kato
Sho Kato
Shruthi Gowda
Shveta Mallik
Simon Riggs
Sindy Senorita
Sirisha Chamarthi
Sravan Kumar
Stéphane Tachoires
Stephen Frost
Steve Chavez
Stone Tickle
Sven Klemm
Takamichi Osumi
Takeshi Ideriha
Tatsuhiro Nakamori
Tatsuo Ishii
Teja Mupparti
Tender Wang
Teodor Sigaev
Thiago Nunes
Thom Brown
Thomas Habets
Thomas Mc Kay
Thomas Munro
Tim Carey-Smith
Tim Field
Timo Stolz
Tom Lane
Tomas Vondra
Tor Erik Linnerud
Torsten Förtsch
Tristan Partin
Troy Frericks
Tushar Ahuja
Valerie Woolard
Vibhor Kumar
Victor Spirin
Victoria Shepard
Vignesh C
Vik Fearing
Vitaly Burovoy
Vitaly Davydov
Wang Wei
Wenjing Zeng
Whale Song
Will Mortensen
Wolfgang Walther
Xin Wen
Xing Guo
Xingwang Xu
XueJing Zhao
Yanliang Lei
Youmiu Mo
Yugo Nagata
Yura Sokolov
Yuta Katsuragi
Zhen Mingyang
Zheng Li
Zhihong Yu
Zhijie Hou
Zongliang Quan
Zuming Jiang

提交更正

如果您发现文档中有不正确的内容、与您使用特定功能的经验不符或需要进一步说明,请使用此表单来报告文档问题。