支持的版本:当前17

E.3. 版本 17 #

发布日期: 2024-09-26

E.3.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.3.2. 迁移到版本 17 #

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

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

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

    这可以防止维护操作(ANALYZECLUSTERCREATE INDEXCREATE MATERIALIZED VIEWREFRESH 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 很少使用。

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

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

  • 删除 Windowswal_sync_methodfsync_writethrough (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) §

  • pg_stat_bgwriter 中删除 buffers_backendbuffers_backend_fsync (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.colliculocale 重命名为 colllocale,并将 pg_database.daticulocale 重命名为 datlocale (Jeff Davis) §

  • pg_stat_progress_vacuummax_dead_tuples 重命名为 max_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.3.3. 变更 #

以下是 PostgreSQL 17 和以前主要版本之间更改的详细说明。

E.3.3.1. 服务器 #

E.3.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) §

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

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

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

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

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

    WALvacuum 引起的流量也更紧凑。

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

    此外,当 maintenance_work_memautovacuum_work_mem 较高时,vacuum 不再默默地限制为 1 GB 的内存。

  • 优化对没有索引的关系的 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.3.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) §

  • trust 连接添加 log_connections 日志行 (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.3.3.1.5. 权限 #
  • 允许授予执行维护操作的权利 (Nathan Bossart) §

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

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

E.3.3.1.6. 服务器配置 #
E.3.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() 以同步逻辑复制槽 (Hou Zhijie, Shveta Malik, Ajin Cherian, Peter Eisentraut) § §

  • failover 属性添加到复制协议 (Hou Zhijie, Shveta Malik) §

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

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

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

  • 启用逻辑槽的故障转移 (Hou Zhijie, Shveta Malik, Ajin Cherian) §

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

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

  • 将逻辑复制故障转移控制添加到 CREATE/ALTER SUBSCRIPTION (Shveta Malik, Hou Zhijie, Ajin Cherian) § §

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

    以前,只能为此目的使用btree索引。

  • 在存在许多子事务的情况下,提高逻辑解码的性能 (Masahiko Sawada) §

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

    这会强制重新身份验证。

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

    这使消息持久化。

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

    新的服务器变量是 synchronized_standby_slots

  • 将工作进程类型列添加到 pg_stat_subscription (Peter Smith) §

E.3.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 中,允许轻松指定应强制所有列为空或不为空 (Zhang Mingli) §

  • 允许分区表具有标识列 (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) § §

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

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

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

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

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

    该选项称为 MEMORY

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

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

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

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

E.3.3.3. 数据类型 #

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

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

    以前不允许这样做。

E.3.3.4. MERGE #

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

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

    已经支持目标行上的 WHEN NOT MATCHED

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

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

E.3.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 仅接受数字偏移量。

  • 允许通过 AT 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.3.3.6. PL/pgSQL #

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

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

E.3.3.7. libpq #

  • 添加 libpq 函数以更改角色密码 (Joe Conway) §

    新函数 PQchangePassword() 在将新密码发送到服务器之前对其进行哈希处理。

  • 添加 libpq 函数以关闭门户和预处理语句 (Jelte Fennema-Nio) §

    函数为 PQclosePrepared(), PQclosePortal(), PQsendClosePrepared()PQsendClosePortal()

  • 添加 libpqAPI它允许阻塞和非阻塞的取消请求,如果已在使用加密 (Jelte Fennema-Nio) §

    以前仅支持阻塞的、未加密的取消请求。

  • 添加 libpq 函数 PQsocketPoll() 以允许轮询网络套接字 (Tristan Partin, Tom Lane) § §

  • 添加 libpq 函数 PQsendPipelineSync() 以发送管道同步点 (Anton Kirilov) §

    这与 PQpipelineSync() 类似,但是除非达到输出缓冲区的大小阈值,否则它不会刷新到服务器。

  • 添加 libpq 函数 PQsetChunkedRowsMode() 以允许分块检索结果 (Daniel Vérité) §

  • 允许TLS连接,而无需网络往返协商 (Greg Stark, Heikki Linnakangas, Peter Eisentraut, Michael Paquier, Daniel Gustafsson) § § § § § § § §

    这是通过客户端选项 sslnegotiation=direct 启用的,需要ALPN并且仅适用于 PostgreSQL 17 及更高版本的服务器。

E.3.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

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

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

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

E.3.3.9. 服务器应用程序 #

  • 添加应用程序 pg_walsummary 以转储WAL摘要文件 (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) §

    应用程序是 initdb, pg_basebackup, pg_checksums, pg_dump, pg_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 选项控制此行为。

E.3.3.10. 源代码 #

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

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

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

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

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

  • 移除 AIX 支持 (Heikki Linnakangas) §

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

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

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

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

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

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

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

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

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

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

  • 移除 makedistprep 选项 (Peter Eisentraut) §

  • Android 共享库添加 make 支持 (Peter Eisentraut) §

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

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

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

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

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

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

E.3.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) §

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

    这对于扩展非常有用。

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

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

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

    这对于测试非常有用。

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

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

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

  • 替换两阶段提交GID存储在 pg_stat_statements 中的占位符 (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

  • 添加JIT将 deform_counter 详情添加到 pg_stat_statements (Dmitry Dolgov) §

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

    此参数默认为 false

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

E.3.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
威尔·莫滕森
威利·曼
沃尔夫冈·瓦尔特
项柳
王晓然
郭星
杨旭东
亚荷尔·尤泽福维奇
胡亚军
雅罗斯拉夫·萨布罗夫
李勇
黄永涛
永田裕吾
邱宇航
清野悠纪
尤拉·索科洛夫
尤里·拉什科夫斯基
藤井雄纪
渡航雄也
伊夫·科林
于志宏
侯志杰
全宗良
祖拜尔·埃里尔马兹
姜祖明

提交更正

如果您发现文档中有任何不正确、与您的特定功能体验不符或需要进一步澄清的地方,请使用此表单报告文档问题。