Skip to content

E.3. 版本 16#

E.3.1. 概述
E.3.2. 迁移到版本 16
E.3.3. 更改
E.3.4. 致谢

**发行日期:**2023-09-14

E.3.1. 概述#

PostgreSQL16 包含许多新功能和增强功能,包括

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

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

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

  • 允许使用新的 pg_stat_io 视图监视 统计信息

  • 添加 构造函数和标识函数

  • 提高 vacuum 冻结的性能

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

以上内容和PostgreSQL16 的其他新功能将在以下部分中进行更详细的说明。

E.3.2. 迁移到版本 16#

希望从任何早期版本迁移数据的用户需要使用pg_dumpallpg_upgrade进行转储/还原,或使用逻辑复制。有关迁移到新主要版本的一般信息,请参见第 19.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.3.3. 更改#

下面您将找到PostgreSQL16 和上一个主要版本之间的更改的详细说明。

E.3.3.1. 服务器#

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

  • 为具有 ORDER BYDISTINCT 的聚合添加使用预排序数据的能力(David Rowley)

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

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

  • 允许使用不可空输入作为内部关系来执行反连接(Richard Guo)

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

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

E.3.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_LIMIT,而 vacuumdb 选项为 --buffer-usage-limit。默认值由服务器变量 vacuum_buffer_usage_limit 控制,该变量还控制自动 Vacuum。

  • Windows 上支持 wal_sync_method=fdatasync(Thomas Munro)

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

  • 提高更新 进程标题 的速度(David Rowley)

  • 允许 xid/subxid 搜索和 字符串检测使用矢量操作(Nathan Bossart、John Naylor)

    检测对于 COPY FROM 尤其有用。矢量操作也用于某些 C 数组搜索。

  • 减少内存分配开销(Andres Freund、David Rowley)

E.3.3.1.3. 监视#
  • 添加系统视图 pg_stat_io 视图来跟踪 统计信息(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 中显示的临时关系写入的 计费(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)

    以前,此类型的等待报告为 DSMFillZeroWritemmap() 分配也使用此类型。

  • 将数据库名称添加到逻辑 发送者的进程标题(Tatsuhiro Nakamori)

    物理 发送者不显示数据库名称。

  • 将检查点和 REDO LSN 信息添加到 log_checkpoints 消息(Bharath Rupireddy、Kyotaro Horiguchi)

  • 在客户端证书故障期间提供其他详细信息(Jacob Champion)

E.3.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.3.3.1.5. 服务器配置#
  • 添加对 Kerberos 凭证委托的支持(Stephen Frost)

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

  • 允许使用服务器变量 scram_iterations 设置 迭代次数(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;现在使用 debug_io_direct=wal 启用此功能。

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

E.3.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.3.3.1.7.本地化#
  • 使用 时,从区域设置确定默认编码(Jeff Davis)

    以前,默认值始终为 UTF-8

  • CREATE DATABASECREATE COLLATIONLOCALE 选项,以及 initdbcreatedb--locale 选项控制非 libc 校对提供程序(Jeff Davis)

    以前,它们只控制 libc 提供程序。

  • 添加预定义校对 unicodeucs_basic(Peter Eisentraut)

    仅当启用 支持时,此方法才有效。

  • 允许创建自定义 校对规则(Peter Eisentraut)

    这通过 CREATE COLLATION 的新 RULES 子句来完成,以及 CREATE DATABASEcreatedbinitdb 的新选项。

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

    以前,只能在 Windows 上导入 区域设置。

E.3.3.2.逻辑复制#

  • 允许在备用服务器上进行 逻辑解码 (Bertrand Drouvot、Andres Freund、Amit Khandekar)

    逻辑槽创建需要快照 记录,但不能在备用服务器上创建。为了避免延迟,新函数 pg_log_standby_snapshot() 允许创建此类记录。

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

    该变量是 debug_logical_replication_streaming

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

    这仅适用于标记为二进制的订阅。

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

    现在,CREATE SUBSCRIPTION STREAMING 选项支持 parallel 以启用并行工作进程应用大型事务。并行工作进程的数量由新服务器变量 max_parallel_apply_workers_per_subscription 控制。等待事件 LogicalParallelApplyMainLogicalParallelApplyStateChangeLogicalApplySendData 也已添加。列 leader_pid 已添加到系统视图 pg_stat_subscription 以跟踪并行活动。

  • 为没有主键的 逻辑复制应用 提升性能(Onder Kalaci、Amit Kapila)

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

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

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

  • 将逻辑复制 SELECT 操作作为表所有者执行(Robert Haas)

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

  • wal_retrieve_retry_interval 在每个订阅的基础上运行(Nathan Bossart)

    以前,重试时间在全局范围内应用。这还添加了等待事件 >LogicalRepLauncherDSALogicalRepLauncherHash

E.3.3.3. 实用程序命令#

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

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

  • 允许 COPY 进入外部表以批量添加行(Andrey Lepikhov、Etsuro Fujita)

    这由 postgres_fdw 选项 batch_size 控制。

  • 允许 STORAGE 类型由 CREATE TABLE 指定(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.3.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.3.3.5. 一般查询#

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

  • 添加对 路径中增强数字文本的支持(Peter Eisentraut)

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

E.3.3.6. 函数#

  • 添加 构造函数(Nikita Glukhov、Teodor Sigaev、Oleg Bartunov、Alexander Korotkov、Amit Langote)

    新函数 JSON_ARRAY()JSON_ARRAYAGG()JSON_OBJECT()JSON_OBJECTAGG() 标准的一部分。

  • 添加 对象检查(Nikita Glukhov、Teodor Sigaev、Oleg Bartunov、Alexander Korotkov、Amit Langote、Andrew Dunstan)

    IS 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* 函数接受数字 作为输入(Tom Lane)

E.3.3.7.PL/pgSQL#

E.3.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.3.3.9. 客户端应用程序#

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

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

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

    这由 xheader_width 控制。

  • 添加 psql 命令 \drg 以显示角色成员资格详细信息(Pavel Luzanov)

    已从 \du\dg 中删除 Member of 输出列,因为此新命令更详细地显示此信息。

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

    选项为 \dpS\zS

  • 为外键表子项和分区添加 FOREIGN 指定到 psql \d+(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 制表符补全改进(Vignesh C、Aleksander Alekseev、Dagfinn Ilmari Mannsåker、Shi Yu、Michael Paquier、Ken Kato、Peter Smith)

E.3.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.3.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.3.3.11. 源代码#

  • 默认构建 支持(Jeff Davis)

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

  • 添加对 x86-64 架构上的 SSE2(流 扩展 2)向量操作的支持(John Naylor)

  • 添加对 架构上的高级 (单指令多数据)() 指令的支持(Nathan Bossart)

  • 让使用 MSVC 构建的 Windows 二进制文件使用 RandomizedBaseAddress ()(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)

  • 要求 Kerberos 支持 (Stephen Frost)

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

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

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

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

  • 移除 libpq 凭据认证的支持(Michael Paquier)

    PostgresSQL 9.1 中移除了此认证方法的后端支持。

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

    最终将替换基于 AutoconfWindowsMSVC 构建系统。

  • 允许控制构建系统使用的 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.3.3.12. 附加模块#

  • 改进对布尔列的基于扩展的索引的使用(Zongliang Quan、Tom Lane)

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

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

    这会影响使用服务器端 PREPARE/EXECUTE 和客户端解析/绑定进行查询。记录由 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() 以报告 块信息(Michael Paquier、Melanie Plageman、Bharath Rupireddy)

  • 更改 pg_walinspect 函数 pg_get_wal_records_info()pg_get_wal_stats() 解释结束 的方式(Bharath Rupireddy)

    以前结束的(表示不存在的位置)会生成错误,而现在它们将被解释为的结尾。

  • pg_walinspectpg_waldump中添加记录的详细说明(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.3.3.12.1.postgres_fdw#
  • 允许 postgres_fdw 并行执行中止(Etsuro Fujita)

    此功能通过 postgres_fdw 选项 parallel_abort 启用。

  • 提高 ANALYZE 在外部 postgres_fdw 表上的效率(Tomas Vondra)

    postgres_fdw 选项 analyze_sampling 控制采样方法。

  • 限制 postgres_fdwreg* 类型常量仅用于引用内置对象或标记为可运送的扩展(Tom Lane)

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

E.3.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
詹姆斯·科尔曼
詹姆斯·英福姆
詹姆斯·范斯
扬·维克
贾平·李
吉万·拉德
杰夫·戴维斯
杰夫·简斯
让-纪尧姆·德·罗泰
耶尔特·芬内马
何健
吉姆·琼斯
陈金宝
乔·康威
乔尔·雅各布森
约翰·内勒
乔纳森·卡茨
约瑟夫·西马内克
约瑟夫·科沙科夫
胡安·何塞·圣塔玛丽亚·弗莱查
朱利安·鲁豪德
朱利安·罗兹
赵俊旺
贾斯汀·普雷兹比
贾斯汀·张
卡琳娜·利特凯维奇
卡尔·O·平克
黑田启介
加藤健
凯文·麦克比宾
基兰·麦卡斯克
柯克·沃拉克
康斯坦丁·克尼日尼克
柴垣浩志
川本浩太郎
刘奎
堀口恭太郎
拉克希米·纳拉亚南·斯里塔
劳伦斯·帕里
劳伦茨·阿尔贝
卢卡·费拉里
卢卡斯·菲特尔
马切克·萨克雷达
马格努斯·哈甘德
玛雅·扎洛兹尼克
马塞尔·霍夫施泰特
玛丽娜·波利亚科娃
马克·迪尔格
马科·蒂卡亚
马库斯·维南德
马丁·范·奥斯特豪特
马丁·尤尔卡
马丁·卡尔切
玛丽·徐
泽田正彦
池田正宏
藤井正夫
梅森·夏普
马特乌斯·阿尔坎塔拉
马茨·金达尔
马蒂亚斯·范德·门特
马蒂斯·范德·弗勒滕
马克西姆·奥尔洛夫
马克西姆·亚布洛科夫
穆罕默德·埃明·卡拉卡斯
梅拉妮·普拉格曼
梅利赫·穆特卢
迈卡·盖茨
迈克尔·班克
迈克尔·帕奎尔
米哈伊尔·尼古拉耶夫
米歇尔·佩勒蒂埃
迈克·吴
米哈伊尔·格里布科夫
张明利
米罗斯拉夫·本迪克
日向满
苗伟·坦特
纳伊姆·阿赫塔
冈野直树
内森·博萨特
纳齐尔·比拉尔·亚武兹
内哈·夏尔马
尼克·巴巴贾尼安
尼古拉·孔图
尼基尔·谢蒂
尼基塔·格鲁霍夫
尼古拉·萨莫赫瓦洛夫
尼古拉·沙普洛夫
尼尚特·夏尔马
尼廷·贾达夫
诺亚·米施
斋藤登
筱田纪芳
横滨努古
奥列格·巴尔图诺夫
奥列格·策列布罗夫斯基
奥利·贝茨
翁德尔·卡拉奇
奥努尔·蒂尔蒂尔
帕勃罗·费德里科
帕勒·吉尔根松
保罗·郭
保罗·容维特
保罗·拉姆齐
帕维尔·鲍里索夫
帕维尔·库拉科夫
帕维尔·卢扎诺夫
帕维尔·斯特胡勒
裴凤秋
彼得·艾森特劳特
彼得·乔格汉
彼得·史密斯
菲尔·弗洛伦特
菲利普·戈弗林
普拉顿·普龙科
普热梅斯瓦夫·斯托赫
蕾切尔·希顿
拉尼尔·维莱拉
雷吉娜·奥贝
雷德·汤普森
赖纳·彼得克
理查德·郭
里沃·科尔卡
里舒·巴加
罗伯特·哈斯
罗伯特·舍布卢姆
罗伯特·特里特
罗伯托·梅洛
罗宾斯·塔拉坎
罗曼·扎尔科夫
罗南·邓克劳
鲁沙布·拉西亚
良松村Ryo
萨马伊·夏尔马
萨米·伊姆塞
桑迪普·塔卡尔
桑德罗·桑蒂利
塞巴斯蒂安·弗莱施
塞巴斯蒂安·拉迪埃
塞赫罗普·萨尔库尼
谢尔盖·别利亚绍夫
谢尔盖·潘科夫
谢尔盖·辛德鲁克
石宇
加藤真也
加藤翔
施鲁蒂·古达
施维塔·马利克
西蒙·里格斯
辛迪·塞诺丽塔
西里莎·查马尔蒂
斯拉万·库马尔
斯特凡·塔舒瓦
斯蒂芬·弗罗斯特
史蒂夫·查韦斯
斯通·蒂克尔
斯文·克莱姆
大澄高道
井出武史
中森达弘
石井达夫
特贾·穆帕蒂
王腾
特奥多尔·西加耶夫
蒂亚戈·努内斯
汤姆·布朗
托马斯·哈贝茨
托马斯·麦克凯
托马斯·芒罗
蒂姆·凯里-史密斯
蒂姆·菲尔德
蒂莫·斯托尔茨
汤姆·莱恩
托马斯·文德拉
托尔·埃里克·林纳鲁德
托尔斯滕·弗尔施
特里斯坦·帕丁
特洛伊·弗雷里克斯
图沙尔·阿胡贾
瓦莱丽·伍拉德
维布霍尔·库马尔
维克多·斯皮林
维多利亚·谢泼德
维格内什·C
维克·菲林
维塔利·布罗沃伊
维塔利·戴维多夫
王伟
曾文静
鲸歌
威尔·莫滕森
沃尔夫冈·瓦尔特
辛文
邢国
邢旺旭
薛静赵
颜良磊
尤缪·莫
永田裕吾
尤拉·索科洛夫
胜良由太
郑明阳
郑莉
于志宏
侯志杰
全宗良
姜祖明