2024 年 9 月 26 日: PostgreSQL 17 发布!
支持版本:当前 (17)

E.1. 版本 17 #

发布日期:2024-09-26

E.1.1. 概述 #

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

  • 用于 VACUUM 的新内存管理系统,该系统减少了内存消耗,并可以提高整体清理性能。

  • 新的SQL/JSON功能,包括构造函数、身份函数和 JSON_TABLE() 函数,该函数将 JSON 数据转换为表格表示形式。

  • 各种查询性能改进,包括使用流式 I/O 进行顺序读取、高并发下的写入吞吐量以及在 btree 索引中对多个值的搜索。

  • 逻辑复制增强功能,包括

    • 故障转移控制

    • pg_createsubscriber,一个从物理备用服务器创建逻辑复制的实用程序

    • pg_upgrade 现在在发布者和订阅者上都保留复制槽

  • 新的客户端连接选项 sslnegotiation=direct,它执行直接 TLS 握手以避免往返协商。

  • pg_basebackup 现在支持增量备份。

  • COPY 添加了一个新选项 ON_ERROR ignore,该选项允许在发生错误的情况下继续复制操作。

以上内容以及 PostgreSQL 17 的其他新功能将在下面部分中详细介绍。

E.1.2. 迁移到版本 17 #

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

版本 17 包含一些可能会影响与先前版本兼容性的更改。请注意以下不兼容性

  • 更改函数以在维护操作期间使用安全的 search_path(Jeff Davis) §

    这可以防止维护操作(ANALYZECLUSTERREFRESH MATERIALIZED VIEWREINDEXVACUUM)执行不安全的访问。表达式索引和物化视图使用的函数需要引用非默认模式,必须在函数创建期间指定搜索路径。

  • 限制 ago 仅在 interval 值的末尾出现(Joseph Koshakow) § §

    此外,防止空间隔单位多次出现。

  • 删除服务器变量 old_snapshot_threshold(Thomas Munro) §

    此变量允许清理程序删除可能对正在运行的事务仍然可见的行,如果稍后访问这些行,则会导致“快照过旧”错误。如果找到改进的实现,此功能可能会在以后重新添加到 PostgreSQL 中。

  • 更改 SET SESSION AUTHORIZATION 对初始会话用户的超级用户状态的处理(Joseph Koshakow) §

    新行为基于发出 SET SESSION AUTHORIZATION 命令时的会话用户的超级用户状态,而不是连接时的超级用户状态。

  • 删除模拟每个数据库用户的特性(Nathan Bossart) §

    此特性 db_user_namespace 很少使用。

  • 删除 wal_sync_methodfsync_writethroughWindows 上(Thomas Munro) §

    此值在 Windows 上与 fsync 相同。

  • 更改两个的边界处理WAL文件名函数(Kyotaro Horiguchi、Andres Freund、Bruce Momjian) §

    函数 pg_walfile_name()pg_walfile_name_offset() 用于报告上一个LSN段号,当LSN位于文件段边界;它现在返回当前LSN段。

  • 删除服务器变量 trace_recovery_messages,因为它不再需要(Bharath Rupireddy) §

  • 删除 信息模式element_types.domain_default(Peter Eisentraut) §

  • 更改 pgrowlocks 锁定模式输出标签(Bruce Momjian) §

  • 删除 buffers_backendbuffers_backend_fsync 来自 pg_stat_bgwriter(Bharath Rupireddy) §

    这些字段被认为与 pg_stat_io 中的类似列冗余。

  • 重命名 pg_stat_statements 的 I/O 块读取/写入计时统计信息列(Nazir Bilal Yavuz) §

    这将 blk_read_time 重命名为 shared_blk_read_time,并将 blk_write_time 重命名为 shared_blk_write_time

  • 更改 pg_attribute.attstattargetpg_statistic_ext.stxstattarget 以将默认统计目标表示为 NULL(Peter Eisentraut) § §

  • 重命名 pg_collation.colliculocalecolllocale,并将 pg_database.daticulocale 重命名为 datlocale(Jeff Davis) §

  • 重命名 pg_stat_progress_vacuummax_dead_tuplesmax_dead_tuple_bytes,将 num_dead_tuples 重命名为 num_dead_item_ids,并添加 dead_tuple_bytes(Masahiko Sawada) § §

  • 重命名SLRU系统视图中的列 pg_stat_slru(Alvaro Herrera) §

    通过 pg_stat_reset_slru() 接受的列名也已更改。

E.1.3. 更改 #

下面将详细说明 PostgreSQL 17 与上一个主要版本之间的更改。

E.1.3.1. 服务器 #

E.1.3.1.1. 优化器 #
  • 允许优化器通过考虑先前行输出子句中引用的列的统计信息和排序顺序来改进CTE计划(Jian Guo、Richard Guo、Tom Lane) § §

  • 改进 IS NOT NULLIS NULL 查询限制的优化(David Rowley、Richard Guo、Andy Fan) § §

    NOT NULL 列上的查询中删除 IS NOT NULL 限制,如果指定了 IS NULL,则消除对 NOT NULL 列的扫描。

  • 允许对 IS [NOT] UNKNOWN 条件表达式上的布尔列进行分区修剪(David Rowley) §

  • 改进使用包含运算符 <@ 和 @> 时范围值的优化(Kim Johan Andersson、Jian He) §

  • 允许将相关 IN 子查询转换为连接(Andy Fan、Tom Lane) §

  • 改进对分区表、继承父级和 UNION ALL 查询上的 LIMIT 子句的优化(Andy Fan、David Rowley) §

  • 允许在更多情况下并行运行查询节点(Tom Lane) §

  • 允许 GROUP BY 列在内部排序以匹配 ORDER BY(Andrei Lepikhov、Teodor Sigaev) §

    这可以使用服务器变量 enable_group_by_reordering 禁用。

  • 允许 UNION(不带 ALL)使用 MergeAppend(David Rowley) §

  • 修复 MergeAppend 计划以更准确地计算需要排序的行数(Alexander Kuzmenkov) §

  • 允许 GiSTSP-GiST 索引成为增量排序的一部分(Miroslav Bendik) §

    这对于 ORDER BY 子句特别有用,其中第一列具有 GiST 和 SP-GiST 索引,而其他列没有。

  • 添加列到 pg_stats 以报告范围类型直方图信息(Egor Rogov、Soumyadeep Chakraborty) §

E.1.3.1.2. 索引 #
  • 允许 btree 索引更有效地找到一组值,例如使用常量 (Peter Geoghegan, Matthias van de Meent) 的 IN 子句提供的那些值 §

  • 允许使用并行工作线程 (Tomas Vondra, Matthias van de Meent) 创建 BRIN 索引 §

E.1.3.1.3. 通用性能 #
  • 允许 vacuum 更有效地删除和冻结元组 (Melanie Plageman, Heikki Linnakangas) §

    WALvacuum 造成的流量也更紧凑。

  • 允许 vacuum 更有效地存储元组引用 (Masahiko Sawada, John Naylor) § § § §

    此外,当 maintenance_work_memautovacuum_work_mem 较高时,vacuum 不再默默地限制为一个千兆字节的内存。

  • 优化没有索引的关系的 vacuum (Melanie Plageman) §

  • 将默认的 vacuum_buffer_usage_limit 增加到 2MB (Thomas Munro) §

  • 检查具有多个成员资格的角色时的性能提升 (Nathan Bossart) §

  • 提高高争用WAL写入的性能 (Bharath Rupireddy) §

  • 将大量数据块传输到客户端时的性能提升 (Melih Mutlu) §

  • 使用新的系统变量 io_combine_limit 允许对文件系统读取进行分组 (Thomas Munro, Andres Freund, Melanie Plageman, Nazir Bilal Yavuz) § § §

E.1.3.1.4. 监控 #
  • 创建系统视图 pg_stat_checkpointer (Bharath Rupireddy, Anton A. Melnikov, Alexander Korotkov) § § §

    相关列已从 pg_stat_bgwriter 中删除并添加到这个新的系统视图中。

  • 改进对重置统计信息的控制 (Atsushi Torikoshi, Bharath Rupireddy) § § §

    允许 pg_stat_reset_shared()(没有参数)和 pg_stat_reset_shared(NULL) 重置所有共享统计信息。允许 pg_stat_reset_shared('slru') 和 pg_stat_reset_slru()(没有参数)重置SLRU统计信息,这已经可以通过 pg_stat_reset_slru(NULL) 完成。

  • 添加与WAL从备份中恢复相关的日志消息 (Andres Freund) §

  • 添加 log_connections 日志行以用于 trust 连接 (Jacob Champion) §

  • 添加日志消息以报告 walsender 获取和释放复制槽 (Bharath Rupireddy) §

    这是通过服务器变量 log_replication_commands 启用的。

  • 添加系统视图 pg_wait_events,它报告等待事件类型 (Bertrand Drouvot) §

    这对于在 pg_stat_activity 中报告的等待事件中添加描述很有用。

  • 添加 等待事件 以用于检查点延迟 (Thomas Munro) §

  • 允许 vacuum 报告索引处理的进度 (Sami Imseih) §

    这出现在系统视图 pg_stat_progress_vacuum 的列 indexes_totalindexes_processed 中。

E.1.3.1.5. 特权 #
  • 允许授予执行维护操作的权限 (Nathan Bossart) §

    可以使用 MAINTAIN 特权在每个表的基础上授予此权限,并通过 pg_maintain 预定义角色在每个角色的基础上授予此权限。允许的操作是 VACUUMANALYZEREINDEXREFRESH MATERIALIZED VIEWCLUSTERLOCK TABLE

  • 允许具有 pg_monitor 成员资格的角色执行 pg_current_logfile() (Pavlo Golub, Nathan Bossart) §

E.1.3.1.6. 服务器配置 #
E.1.3.1.7. 流式复制和恢复 #
  • 添加对增量文件系统备份的支持 (Robert Haas, Jakub Wartak, Tomas Vondra) § §

    可以使用 pg_basebackup 的新 --incremental 选项创建增量备份。新应用程序 pg_combinebackup 允许操作基础和增量文件系统备份。

  • 允许创建WAL汇总文件 (Robert Haas, Nathan Bossart, Hubert Depesz Lubaczewski) § § § §

    这些文件记录在 LSN 范围内发生更改的块号,这对增量文件系统备份很有用。这由服务器变量 summarize_walwal_summary_keep_time 控制,并通过 pg_available_wal_summaries()pg_wal_summary_contents()pg_get_wal_summarizer_state() 进行自省。

  • 将系统标识符添加到文件系统 备份清单 文件中 (Amul Sul) §

    这有助于检测无效的WAL用法。

  • 允许在 pg_basebackup 将连接信息写入 postgresql.auto.conf 时写入连接字符串值 dbname (Vignesh C, Hayato Kuroda) §

  • 添加列 pg_replication_slots.invalidation_reason 以报告无效槽的原因 (Shveta Malik, Bharath Rupireddy) § §

  • 添加列 pg_replication_slots.inactive_since 以报告槽的非活动持续时间 (Bharath Rupireddy) § § §

  • 添加函数 pg_sync_replication_slots() 来同步逻辑复制槽(侯志杰,Shveta Malik,Ajin Cherian,Peter Eisentraut) § §

  • failover 属性添加到 复制协议 中(侯志杰,Shveta Malik) §

E.1.3.1.8. 逻辑复制 #
  • 添加应用程序 pg_createsubscriber 以从物理备用服务器创建逻辑副本(Euler Taveira) §

  • pg_upgrade 迁移有效的逻辑槽和订阅(Hayato Kuroda,侯志杰,Vignesh C,Julien Rouhaud,Shlok Kyal) § §

    这允许逻辑复制在升级后快速继续。这仅适用于版本 17 或更高版本的旧 PostgreSQL 集群。

  • 启用 逻辑槽 的故障转移(侯志杰,Shveta Malik,Ajin Cherian) §

    这由 pg_create_logical_replication_slot() 的可选第五个参数控制。

  • 添加服务器变量 sync_replication_slots 以启用故障转移逻辑槽同步(Shveta Malik,侯志杰,Peter Smith) § §

  • CREATE/ALTER SUBSCRIPTION 中添加逻辑复制故障转移控制(Shveta Malik,侯志杰,Ajin Cherian) § §

  • 允许将逻辑复制更改应用于订阅者上的 哈希 索引(Hayato Kuroda) §

    以前只有 B树 索引可用于此目的。

  • 在存在多个子事务的情况下,改进 逻辑解码 的性能(Masahiko Sawada) §

  • 如果订阅所有者的超级用户权限被撤销,则重新启动应用工作者(Vignesh C) §

    这将强制重新身份验证。

  • pg_logical_emit_message() 中添加 flush 选项(Michael Paquier) §

    这将使消息持久化。

  • 允许指定必须在对订阅者可见之前同步的物理备用服务器(侯志杰,Shveta Malik) § §

    新的服务器变量是 synchronized_standby_slots

  • pg_stat_subscription 中添加工作者类型列(Peter Smith) §

E.1.3.2. 实用程序命令 #

  • 添加新的 COPY 选项 ON_ERROR ignore 以丢弃错误行(Damir Belyalov,Atsushi Torikoshi,Alex Shulgin,Jian He,Yugo Nagata) § § § §

    默认行为是 ON_ERROR stop

  • 添加新的 COPY 选项 LOG_VERBOSITY,它报告 COPY FROM 忽略的错误行(Bharath Rupireddy) §

  • 允许 COPY FROM 在处理过程中报告跳过的行数(Atsushi Torikoshi) §

    这将显示在系统视图列 pg_stat_progress_copy.tuples_skipped 中。

  • COPY FROM 中,允许轻松指定所有列应该被强制为 NULL 或非 NULL(张明丽) §

  • 允许分区表拥有标识列(Ashutosh Bapat) §

  • 允许在分区表上使用 排除约束(Paul A. Jungwirth) §

    只要排除约束对分区键列进行相等比较,其他列可以使用排除约束特有的比较。

  • 添加更清晰的 ALTER TABLE 方法来将列设置为默认统计目标(Peter Eisentraut) §

    新的语法是 ALTER TABLE ... SET STATISTICS DEFAULT;使用 SET STATISTICS -1 仍然受支持。

  • 允许 ALTER TABLE 更改列的生成表达式(Amul Sul) §

    语法是 ALTER TABLE ... ALTER COLUMN ... SET EXPRESSION

  • 允许在分区表上指定 表访问方法(Justin Pryzby,Soumyadeep Chakraborty,Michael Paquier) § §

  • ALTER TABLE .. SET ACCESS METHOD 添加 DEFAULT 设置(Michael Paquier) §

  • 添加对在连接时触发的 事件触发器 的支持(Konstantin Knizhnik,Mikhail Gribkov) §

  • REINDEX 添加事件触发器支持(Garrett Thornburg,Jian He) §

  • 如果未指定表名,则允许对 CLUSTER 选项使用带括号的语法(Nathan Bossart) §

E.1.3.2.1. EXPLAIN #
  • 允许 EXPLAIN 报告优化器内存使用情况(Ashutosh Bapat) §

    选项名为 MEMORY

  • 添加 EXPLAIN 选项 SERIALIZE 以报告将数据转换为网络传输所需的成本(Stepan Rutz,Matthias van de Meent) §

  • EXPLAINBUFFERS 输出中添加本地 I/O 块读写计时统计信息(Nazir Bilal Yavuz) §

  • 改进 EXPLAIN 对 SubPlan 节点和输出参数的显示(Tom Lane,Dean Rasheed) §

  • 添加JIT deform_counter 详细信息到 EXPLAIN 中(Dmitry Dolgov) §

E.1.3.3. 数据类型 #

  • 允许 interval 数据类型支持 +/-infinity 值(Joseph Koshakow,Jian He,Ashutosh Bapat) §

  • 允许使用通过 ALTER TYPE 添加的 ENUM,如果类型是在同一个事务中创建的(Tom Lane) §

    以前不允许这样做。

E.1.3.4. MERGE #

  • 允许 MERGE 修改可更新视图(Dean Rasheed) §

  • MERGE 中添加 WHEN NOT MATCHED BY SOURCE(Dean Rasheed) §

    在目标行上 WHEN NOT MATCHED 已经受支持。

  • 允许 MERGE 使用 RETURNING 子句(Dean Rasheed) §

    新的 RETURNING 函数 merge_action() 报告生成行的DML操作。

E.1.3.5. 函数 #

  • 添加函数 JSON_TABLE() 以将 JSON 数据转换为表格表示(Nikita Glukhov,Teodor Sigaev,Oleg Bartunov,Alexander Korotkov,Andrew Dunstan,Amit Langote,Jian He) § §

    此函数可以在 SELECT 查询的 FROM 子句中用作元组源。

  • 添加SQL/JSON构造函数 JSON()JSON_SCALAR()JSON_SERIALIZE()(Nikita Glukhov,Teodor Sigaev,Oleg Bartunov,Alexander Korotkov,Andrew Dunstan,Amit Langote) §

  • 添加SQL/JSON查询函数 JSON_EXISTS()JSON_QUERY()JSON_VALUE()(Nikita Glukhov,Teodor Sigaev,Oleg Bartunov,Alexander Korotkov,Andrew Dunstan,Amit Langote,Peter Eisentraut,Jian He) § § § § §

  • 添加 jsonpath 方法以将 JSON 值转换为其他 JSON 数据类型(Jeevan Chalke) §

    jsonpath 方法是 .bigint().boolean().date().decimal([precision [, scale]]).integer().number().string().time().time_tz().timestamp().timestamp_tz()

  • 添加 to_timestamp() 时区格式说明符(Tom Lane) §

    TZ 接受时区缩写或数字偏移量,而 OF 仅接受数字偏移量。

  • 允许使用 AS LOCAL 指定会话 时区(Vik Fearing) §

    当将时区添加到时间戳值或从时间戳值中删除时区时,这很有用,而不是指定字面会话时区。

  • 添加函数 uuid_extract_timestamp()uuid_extract_version() 来返回UUID信息 (Andrey Borodin) §

  • 添加函数以在指定范围内生成随机数 (Dean Rasheed) §

    这些函数是 random(min, max),它们接受 integerbigintnumeric 类型的数值。

  • 添加函数以将整数转换为二进制和八进制字符串 (Eric Radman, Nathan Bossart) §

    这些函数是 to_bin()to_oct()

  • 添加 Unicode 信息函数 (Jeff Davis) §

    函数 unicode_version() 返回 Unicode 版本,icu_unicode_version() 返回ICU版本,而 unicode_assigned() 返回字符是否已分配 Unicode 码位。

  • 添加函数 xmltext() 以将文本转换为单个 XML 文本节点 (Jim Jones) §

  • 添加函数 to_regtypemod() 以返回类型规范的类型修饰符 (David Wheeler, Erik Wienhold) §

  • 添加 pg_basetype() 函数以返回域的基类型 (Steve Chavez) §

  • 添加函数 pg_column_toast_chunk_id() 以返回值的 TOAST 标识符 (Yugo Nagata) §

    如果值未存储在TOAST.

中,则返回 NULL

  • E.1.3.6. PL/pgSQL #

  • 允许 plpgsql %TYPE%ROWTYPE 规范来表示非数组类型的数组 (Quan Zongliang, Pavel Stehule) §

允许 plpgsql %TYPE 规范引用复合列 (Tom Lane) §

,并且仅在 PostgreSQL 17 及更高版本的服务器上有效。

  • E.1.3.8. psql #

    改进 psql 对默认和空权限的显示 (Erik Wienhold, Laurenz Albe) §

  • 命令 \dp 现在对空权限显示 (none);默认值仍显示为空。

    反斜杠命令现在遵守 \pset null (Erik Wienhold, Laurenz Albe) §

  • 以前忽略 \pset null

    允许 psql\watch 在返回最少数量的行后停止 (Greg Sabino Mullane) §

  • 参数是 min_rows

  • 允许使用 Ctrl-C 取消 psql 连接尝试 (Tristan Partin) §

  • 允许 psql 对非 SELECT 查询遵守 FETCH_COUNT (Daniel Vérité) §

改进 psql 的制表符补全 (Dagfinn Ilmari Mannsåker, Gilles Darold, Christoph Heiss, Steve Chavez, Vignesh C, Pavel Borisov, Jian He) § § § § § § § §

  • E.1.3.9. 服务器应用程序 #WAL添加应用程序 pg_walsummary 以转储

  • 摘要文件 (Robert Haas) §

    允许 pg_dump 的大对象以批次的形式恢复 (Tom Lane) §

  • 这允许恢复许多大对象,以避免事务限制并并行恢复。

  • 添加 pg_dump 选项 --exclude-extension (Ayush Vatsa) §

    允许 pg_dumppg_dumpallpg_restore 在文件中指定要包含/排除的对象 (Pavel Stehule, Daniel Gustafsson) §

  • 该选项称为 --filter

    在多个客户端应用程序中添加 --sync-method 参数 (Justin Pryzby, Nathan Bossart) §

  • 这些应用程序是 initdbpg_basebackuppg_checksumspg_dumppg_rewindpg_upgrade

    添加 pg_restore 选项 --transaction-size 以允许以事务批次的形式恢复对象 (Tom Lane) §

  • 这允许在不出现过大的事务块问题的情况下获得事务批次的性能优势。

    pgbench 调试模式选项从 -d 更改为 --debug (Greg Sabino Mullane) §

  • 选项 -d 现在用于数据库名称,新选项 --dbname 也可以使用。

  • 添加 pgbench 选项 --exit-on-abort,以便在任何客户端中止后退出 (Yugo Nagata) §

  • 添加 pgbench 命令 \syncpipeline 以允许发送同步消息 (Anthonin Bonnefoy) §

    允许 pg_archivecleanup 删除备份历史文件 (Atsushi Torikoshi) §

  • 该选项是 --clean-backup-history

    pg_archivecleanup 中添加一些长选项 (Atsushi Torikoshi) §

  • 这些长选项是 --debug--dry-run--strip-extension

    允许 pg_basebackuppg_receivewal 在其连接规范中使用 dbname (Jelte Fennema-Nio) §

  • 这对对数据库名称敏感的连接池很有用。

    添加 pg_upgrade 选项 --copy-file-range (Thomas Munro) §

  • 这在 LinuxFreeBSD 上受支持。

  • 允许 reindexdb --index 并行处理来自不同表的索引 (Maxim Orlov, Svetlana Derevyanko, Alexander Korotkov) §

    允许 reindexdbvacuumdbclusterdb 处理与模式匹配的所有数据库中的对象 (Nathan Bossart) § § §

新选项 --all 控制此行为。

  • 移除对 OpenSSL 1.0.1 的支持 (Michael Paquier) §

  • 允许测试在 OpenSSLFIPS模式下通过 (Peter Eisentraut) § §

  • 使用CPU AVX-512 指令进行位计数 (Paul Amonson, Nathan Bossart, Ants Aasma) § §

  • 要求 LLVM 版本 10 或更高版本 (Thomas Munro) §

  • 使用原生CRC指令在 64 位 LoongArch CPU 上 (Xudong Yang) §

  • 移除 AIX 支持 (Heikki Linnakangas) §

  • 移除 Microsoft Visual Studio 特定的 PostgreSQL 构建选项 (Michael Paquier) §

    Meson 现在是 Visual Studio 构建的唯一可用方法。

  • 移除配置选项 --disable-thread-safety (Thomas Munro, Heikki Linnakangas) § §

    我们现在假设所有支持的平台都具有足够的线程支持。

  • 移除 configure 选项 --with-CC (Heikki Linnakangas) §

    设置 CC 环境变量现在是指定编译器的唯一支持方法。

  • 用户定义的数据类型接收函数将不再接收以空字符结尾的数据 (David Rowley) §

  • 添加用于处理大型 JSON 文档的增量 JSON 解析器 (Andrew Dunstan) §

  • 将顶层 README 文件转换为 Markdown (Nathan Bossart) §

  • 移除不再需要的顶层 INSTALL 文件 (Tom Lane) §

  • 移除 makedistprep 选项 (Peter Eisentraut) §

  • 添加 makeAndroid 共享库的支持 (Peter Eisentraut) §

  • 添加对注入点的后端支持 (Michael Paquier) § § § §

    这用于服务器调试,必须在服务器编译时启用。

  • 添加动态共享内存注册表 (Nathan Bossart) §

    这允许在启动时未初始化的共享库协调动态共享内存访问。

  • 修复 emit_log_hook 以对同一个查询使用与其他日志记录相同的时值 (Kambam Vinay, Michael Paquier) §

  • 改进使用 jsonpath 进行谓词检查的文档 (David Wheeler) §

E.1.3.11. 附加模块 #

  • 允许将具有非连接限定符的连接下推到外部服务器和自定义扫描 (Richard Guo, Etsuro Fujita) §

    外部数据包装器和自定义扫描需要进行修改才能处理这些情况。

  • 允许将 EXISTSIN 子查询下推到 postgres_fdw 外部服务器 (Alexander Pyhalov) §

  • 增加默认外部数据包装器元组成本 (David Rowley, Umair Shahid) § §

    此值由优化器使用。

  • 允许 dblink 数据库操作被中断 (Noah Misch) §

  • 允许在 ltree 列上创建哈希索引 (Tommy Pavlicek) §

    这也允许在 ltree 列上进行哈希连接和哈希聚合。

  • 允许 unaccent 字符转换规则包含空格和引号 (Michael Paquier) §

    unaccent.rules 文件的语法已更改。

  • 允许 amcheck 使用新选项 --checkunique 检查唯一约束违规 (Anastasia Lubennikova, Pavel Borisov, Maxim Orlov) §

  • 允许 citext 测试在 OpenSSLFIPS模式下通过 (Peter Eisentraut) §

  • 允许 pgcrypto 测试在 OpenSSLFIPS模式下通过 (Peter Eisentraut) §

  • 移除一些未使用的 SPI 宏 (Bharath Rupireddy) §

  • 移除 adminpack contrib 扩展 (Daniel Gustafsson) §

    这被现在已停止支持的 pgAdmin III 使用。

  • 允许 ALTER OPERATOR 设置更多优化属性 (Tommy Pavlicek) §

    这对扩展很有用。

  • 允许扩展定义 自定义等待事件 (Masahiro Ikeda) § § § §

    自定义等待事件已添加到 postgres_fdwdblink

  • 添加 pg_buffercache 函数 pg_buffercache_evict() 以允许共享缓冲区驱逐 (Palak Chaturvedi, Thomas Munro) §

    这对测试很有用。

E.1.3.11.1. pg_stat_statements #
  • 用占位符替换 pg_stat_statements 中的 CALL 参数 (Sami Imseih) §

  • 用占位符替换存储在 pg_stat_statements 中的保存点名称 (Greg Sabino Mullane) §

    这大大减少了记录 SAVEPOINTRELEASE SAVEPOINTROLLBACK TO SAVEPOINT 命令所需的条目数。

  • 替换存储在 pg_stat_statements 中的两阶段提交GIDs 用占位符替换 (Michael Paquier) §

    这大大减少了记录 PREPARE TRANSACTIONCOMMIT PREPAREDROLLBACK PREPARED 命令所需的条目数。

  • pg_stat_statements 中跟踪 DEALLOCATE (Dagfinn Ilmari Mannsåker, Michael Paquier) §

    DEALLOCATE 名称作为占位符存储在 pg_stat_statements 中。

  • 添加 pg_stat_statements 的本地 I/O 块读/写计时统计信息列 (Nazir Bilal Yavuz) § §

    新列是 local_blk_read_timelocal_blk_write_time

  • 添加JITdeform_counter 详细信息到 pg_stat_statements (Dmitry Dolgov) §

  • 添加可选的第四个参数 (minmax_only) 到 pg_stat_statements_reset() 以允许仅重置最小/最大统计信息 (Andrei Zubkov) §

    此参数默认为 false

  • 添加 pg_stat_statementsstats_sinceminmax_stats_since 以跟踪条目创建时间和最后一次最小/最大重置时间 (Andrei Zubkov) §

E.1.4. 鸣谢 #

以下个人 (按字母顺序) 已作为补丁作者、提交者、审阅者、测试人员或问题报告者为本版本做出贡献。

Abhijit Menon-Sen
Adnan Dautovic
Aidar Imamov
Ajin Cherian
Akash Shankaran
Akshat Jaimini
Alaa Attya
Aleksander Alekseev
Aleksej Orlov
Alena Rybakina
Alex Hsieh
Alex Malek
Alex Shulgin
Alex Work
Alexander Korotkov
Alexander Kozhemyakin
Alexander Kuzmenkov
Alexander Lakhin
Alexander Pyhalov
Alexey Palazhchenko
Alfons Kemper
Álvaro Herrera
Amadeo Gallardo
Amit Kapila
Amit Langote
Amul Sul
Anastasia Lubennikova
Anatoly Zaretsky
Andreas Karlsson
Andreas Ulbrich
Andrei Lepikhov
Andrei Zubkov
Andres Freund
Andrew Alsup
Andrew Atkinson
Andrew Bille
Andrew Dunstan
Andrew Kane
Andrey Borodin
Andrey Rachitskiy
Andrey Sokolov
Andy Fan
Anthonin Bonnefoy
Anthony Hsu
Anton Kirilov
Anton Melnikov
Anton Voloshin
Antonin Houska
Ants Aasma
Antti Lampinen
Aramaki Zyake
Artem Anisimov
Artur Zakirov
Ashutosh Bapat
Ashutosh Sharma
Atsushi Torikoshi
Attila Gulyás
Ayush Tiwari
Ayush Vatsa
Bartosz Chrol
Benoît Ryder
Bernd Helmle
Bertrand Drouvot
Bharath Rupireddy
Bo Andreson
Boshomi Phenix
Bowen Shi
Boyu Yang
Bruce Momjian
Cameron Vogt
Cary Huang
Cédric Villemain
Changhong Fei
Chantal Keller
Chapman Flack
Chengxi Sun
Chris Travers
Christian Maurer
Christian Stork
Christoph Berg
Christoph Heiss
Christophe Courtois
Christopher Kline
Claudio Freire
Colin Caine
Corey Huinker
Curt Kolovson
Dag Lem
Dagfinn Ilmari Mannsåker
Damir Belyalov
Daniel Fredouille
Daniel Gustafsson
Daniel Shelepanov
Daniel Vérité
Daniel Westermann
Darren Rush
Dave Cramer
Dave Page
David Christensen
David Cook
David G. Johnston
David Geier
David Hillman
David Perez
David Rowley
David Steele
David Wheeler
David Zhang
Dean Rasheed
Denis Erokhin
Denis Laxalde
Devrim Gündüz
Dilip Kumar
Dimitrios Apostolou
Dmitry Dolgov
Dmitry Koval
Dmitry Vasiliev
Dominique Devienne
Dong Wook Lee
Donghang Lin
Dongming Liu
Drew Callahan
Drew Kimball
Dzmitry Jachnik
Egor Chindyaskin
Egor Rogov
Ekaterina Kiryanova
Elena Indrupskaya
Elizabeth Christensen
Emre Hasegeli
Eric Cyr
Eric Mutta
Eric Radman
Eric Ridge
Erik Rijkers
Erik Wienhold
Erki Eessaar
Ethan Mertz
Etsuro Fujita
Eugen Konkov
Euler Taveira
Evan Macbeth
Evgeny Morozov
Fabien Coelho
Fabrízio de Royes Mello
Farias de Oliveira
Feliphe Pozzer
Fire Emerald
Flavien Guedez
Floris Van Nee
Francesco Degrassi
Frank Streitzig
Gabriele Bartolini
Garrett Thornburg
Gavin Flower
Gavin Panella
Gilles Darold
Gilles Parc
Grant Gryczan
Greg Nancarrow
Greg Sabino Mullane
Greg Stark
Gurjeet Singh
Haiying Tang
Hajime Matsunaga
Hal Takahara
Hanefi Onaldi
Hannu Krosing
Hans Buschmann
Hao Wu
Hao Zhang
Hayato Kuroda
Heikki Linnakangas
Hemanth Sandrana
Himanshu Upadhyaya
Hironobu Suzuki
Holger Reise
Hongxu Ma
Hongyu Song
Horst Reiterer
Hubert Lubaczewski
Hywel Carver
Ian Barwick
Ian Ilyasov
Ilya Nenashev
Isaac Morland
Israel Barth Rubio
Ivan Kartyshov
Ivan Kolombet
Ivan Lazarev
Ivan Panchenko
Ivan Trofimov
Jacob Champion
Jacob Speidel
Jacques Combrink
Jaime Casanova
Jakub Wartak
James Coleman
James Pang
Jani Rahkola
Japin Li
Jeevan Chalke
Jeff Davis
Jeff Janes
Jelte Fennema-Nio
Jeremy Schneider
Jian Guo
Jian He
Jim Jones
Jim Keener
Jim Nasby
Jingtang Zhang
Jingxian Li
Jingzhou Fu
Joe Conway
Joel Jacobson
John Ekins
John Hsu
John Morris
John Naylor
John Russell
Jonathan Katz
Jordi Gutiérrez
Joseph Koshakow
Josh Kupershmidt
Joshua D. Drake
Joshua Uyehara
Jubilee Young
Julien Rouhaud
Junwang Zhao
Justin Pryzby
Kaido Vaikla
Kambam Vinay
Karen Talarico
Karina Litskevich
Karl O. Pinc
Kashif Zeeshan
Kim Johan Andersson
Kirill Reshke
Kirk Parker
Kirk Wolak
Kisoon Kwon
Koen De Groote
Kohei KaiGai
Kong Man
Konstantin Knizhnik
Kouhei Sutou
Krishnakumar R
Kuntal Ghosh
Kurt Roeckx
Kyotaro Horiguchi
Lang Liu
Lars Kanis
Laurenz Albe
Lauri Laanmets
Legs Mansion
Lukas Fittl
Magnus Hagander
Mahendrakar Srinivasarao
Maiquel Grassi
Manos Emmanouilidis
Marcel Hofstetter
Marcos Pegoraro
Marian Krucina
Marina Polyakova
Mark Dilger
Mark Guertin
Mark Sloan
Markus Winand
Marlene Reiterer
Martín Marqués
Martin Nash
Martin Schlossarek
Masahiko Sawada
Masahiro Ikeda
Masaki Kuwamura
Masao Fujii
Mason Sharp
Matheus Alcantara
Mats Kindahl
Matthias Kuhn
Matthias van de Meent
Maxim Boguk
Maxim Orlov
Maxim Yablokov
Maxime Boyer
Melanie Plageman
Melih Mutlu
Merlin Moncure
Micah Gate
Michael Banck
Michael Bondarenko
Michael Paquier
Michael Wang
Michael Zhilin
Michail Nikolaev
Michal Bartak
Michal Kleczek
Mikhail Gribkov
Mingli Zhang
Miroslav Bendik
Mitsuru Hinata
Moaaz Assali
Muralikrishna Bandaru
Nathan Bossart
Nazir Bilal Yavuz
Neil Tiffin
Ngigi Waithaka
Nikhil Benesch
Nikhil Raj
Nikita Glukhov
Nikita Kalinin
Nikita Malakhov
Nikolay Samokhvalov
Nikolay Shaplov
Nisha Moond
Nishant Sharma
Nitin Jadhav
Noah Misch
Noriyoshi Shinoda
Ole Peder Brandtzæg
Oleg Bartunov
Oleg Sibiryakov
Oleg Tselebrovskiy
Olleg Samoylov
Onder Kalaci
Ondrej Navratil
Pablo Kharo
Palak Chaturvedi
Pantelis Theodosiou
Paul Amonson
Paul Jungwirth
Pavel Borisov
Pavel Kulakov
Pavel Luzanov
Pavel Stehule
Pavlo Golub
Pedro Gallegos
Pete Storer
Peter Eisentraut
Peter Geoghegan
Peter Smith
Philip Warner
Philipp Salvisberg
Pierre Ducroquet
Pierre Fortin
Przemyslaw Sztoch
Quynh Tran
Raghuveer Devulapalli
Ranier Vilela
Reid Thompson
Rian McGuire
Richard Guo
Richard Vesely
Ridvan Korkmaz
Robert Haas
Robert Scott
Robert Treat
Roberto Mello
Robins Tharakan
Roman Lozko
Ronan Dunklau
Rui Zhao
Ryo Matsumura
Ryoga Yoshida
Sameer Kumar
Sami Imseih
Samuel Dussault
Sanjay Minni
Satoru Koizumi
Sebastian Skalacki
Sergei Glukhov
Sergei Kornilov
Sergey Prokhorenko
Sergey Sargsyan
Sergey Shinderuk
Shaozhong Shi
Shaun Thomas
Shay Rojansky
Shihao Zhong
Shinya Kato
Shlok Kyal
Shruthi Gowda
Shubham Khanna
Shulin Zhou
Shveta Malik
Simon Riggs
Soumyadeep Chakraborty
Sravan Velagandula
Stan Hu
Stepan Neretin
Stepan Rutz
Stéphane Schildknecht
Stephane Tachoires
Stephen Frost
Steve Atkins
Steve Chavez
Suraj Khamkar
Suraj Kharage
Svante Richter
Svetlana Derevyanko
Sylvain Frandaz
Takayuki Tsunakawa
Tatsuo Ishii
Tatsuro Yamada
Tender Wang
Teodor Sigaev
Thom Brown
Thomas Munro
Tim Carey-Smith
Tim Needham
Tim Palmer
Tobias Bussmann
Tom Lane
Tomas Vondra
Tommy Pavlicek
Tomonari Katsumata
Tristan Partin
Tristen Raab
Tung Nguyen
Umair Shahid
Uwe Binder
Valerie Woolard
Vallimaharajan G
Vasya Boytsov
Victor Wagner
Victor Yegorov
Victoria Shepard
Vidushi Gupta
Vignesh C
Vik Fearing
Viktor Leis
Vinayak Pokale
Vitaly Burovoy
Vojtech Benes
Wei Sun
Wei Wang
Wenjiang Zhang
Will Mortensen
Willi Mann
Wolfgang Walther
Xiang Liu
Xiaoran Wang
Xing Guo
Xudong Yang
Yahor Yuzefovich
Yajun Hu
Yaroslav Saburov
Yong Li
Yongtao Huang
Yugo Nagata
Yuhang Qiu
Yuki Seino
Yura Sokolov
Yurii Rashkovskii
Yuuki Fujii
Yuya Watari
Yves Colin
Zhihong Yu
Zhijie Hou
Zongliang Quan
Zubeyr Eryilmaz
Zuming Jiang

提交更正

如果您在文档中发现任何不正确的内容,与您对特定功能的体验不符,或者需要进一步澄清,请使用 此表格 报告文档问题。