Redrock Postgres 搜索 英文
版本: 17

E.2. 版本 17 #

E.2.1. 概述
E.2.2. 迁移到版本 17
E.2.3. 更改
E.2.4. 致谢

发布日期:2024-09-26

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

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

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

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

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

    此特性db_user_namespace很少使用。

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

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

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

  • 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.2.3. 更改 #

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

E.2.3.1. 服务器 #

E.2.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.2.3.1.2. 索引 #
  • 允许 btree 索引更有效地查找一组值,例如使用常量的 IN 子句提供的那些值(Peter Geoghegan,Matthias van de Meent) §

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

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

    WALvacuum 造成的流量也更加紧凑。

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

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

  • 优化没有索引的关系的 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.2.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.2.3.1.5. 权限 #
  • 允许授予执行维护操作的权限(Nathan Bossart) §

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

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

E.2.3.1.6. 服务器配置 #
E.2.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.2.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) §

    以前只能为此目的使用 B树 索引。

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

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

    这会强制重新进行身份验证。

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

    这使消息持久化。

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

    新的服务器变量是 synchronized_standby_slots

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

E.2.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.2.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.2.3.3. 数据类型 #

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

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

    以前不允许这样做。

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

E.2.3.6. PL/pgSQL #

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

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

E.2.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.2.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 的选项卡补全 (Dagfinn Ilmari Mannsåker, Gilles Darold, Christoph Heiss, Steve Chavez, Vignesh C, Pavel Borisov, Jian He) § § § § § § § §

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

    这些应用程序是 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 控制此行为。

E.2.3.10. 源代码 #

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

  • 允许测试通过 OpenSSLFIPS

    模式 (Peter Eisentraut) § §

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

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

  • 使用原生CRC64 位 LoongArch CPU 上的指令 (杨旭东) §

  • 移除 AIX 支持 (Heikki Linnakangas) §

  • 移除特定于 Microsoft Visual StudioPostgreSQL 构建选项 (Michael Paquier) §

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

  • 移除配置选项 --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) §

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

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

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

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

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

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

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

E.2.3.11. 其他模块 #

  • 允许将具有非连接限定条件的连接下推到外部服务器和自定义扫描 (Richard Guo、藤田悦朗) §

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

  • 允许将 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 测试在 OpenSSL 中通过FIPS

    模式 (Peter Eisentraut) §

  • 允许 pgcrypto 测试在 OpenSSL 中通过FIPS

    模式 (Peter Eisentraut) §

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

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

    这对扩展很有用。

  • 允许扩展定义 自定义等待事件 (池田雅弘) § § § §

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

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

    这对于测试很有用。

E.2.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 中的 s 用占位符替换 (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.2.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
杨 Boyu
Bruce Momjian
Cameron Vogt
黄 Cary
Cédric Villemain
费 Changhong
Chantal Keller
Chapman Flack
孙 Chengxi
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
Dean Rasheed
Denis Erokhin
Denis Laxalde
Devrim Gündüz
Dilip Kumar
Dimitrios Apostolou
Dmitry Dolgov
Dmitry Koval
Dmitry Vasiliev
Dominique Devienne
李 Dong Wook
林 Donghang
刘 Dongming
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
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
松永 Hajime
Hal Takahara
Hanefi Onaldi
Hannu Krosing
Hans Buschmann
吴 Hao
张 Hao
黑田 Hayato
Heikki Linnakangas
Hemanth Sandrana
Himanshu Upadhyaya
铃木 Hironobu
Holger Reise
马 Hongxu
宋 Hongyu
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
Jeevan Chalke
Jeff Davis
Jeff Janes
Jelte Fennema-Nio
Jeremy Schneider
郭 Jian
何 Jian
Jim Jones
Jim Keener
Jim Nasby
张 Jingtang
李 Jingxian
傅 Jingzhou
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
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
Koen De Groote
甲斐 Kohei
孔 Man
Konstantin Knizhnik
菅藤 Kouhei
Krishnakumar R
Kuntal Ghosh
Kurt Roeckx
堀口 Kyotaro
刘 Lang
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
池田 Masahiro
桑村 Masaki
藤井 Masao
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
Michael Zhilin
Michail Nikolaev
Michal Bartak
Michal Kleczek
Mikhail Gribkov
张 Mingli
Miroslav Bendik
日向 Mitsuru
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
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
Richard Vesely
Ridvan Korkmaz
Robert Haas
Robert Scott
Robert Treat
Roberto Mello
Robins Tharakan
Roman Lozko
Ronan Dunklau
赵 Rui
松村 Ryo
吉田 Ryoga
Sameer Kumar
Sami Imseih
Samuel Dussault
Sanjay Minni
小泉 Satoru
Sebastian Skalacki
Sergei Glukhov
Sergei Kornilov
Sergey Prokhorenko
Sergey Sargsyan
Sergey Shinderuk
史 Shaozhong
Shaun Thomas
Shay Rojansky
钟 Shihao
加藤 Shinya
Shlok Kyal
Shruthi Gowda
Shubham Khanna
周 Shulin
Shveta Malik
Simon Riggs
Soumyadeep Chakraborty
Sravan Velagandula
胡 Stan
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
石井 Tatsuo
山田 Tatsurou
王 Tender
Teodor Sigaev
Thom Brown
Thomas Munro
Tim Carey-Smith
Tim Needham
Tim Palmer
Tobias Bussmann
Tom Lane
Tomas Vondra
Tommy Pavlicek
葛俣 Tomonari
Tristan Partin
Tristen Raab
阮 Tung
Umair Shahid
Uwe Binder
Valerie Woolard
Vallimaharajan G
瓦西里 Boytsov
Victor Wagner
Victor Yegorov
Victoria Shepard
Vidushi Gupta
Vignesh C
Vik Fearing
Viktor Leis
Vinayak Pokale
Vitaly Burovoy
Vojtech Benes
孙 Wei
王 Wei
张 Wenjiang
Will Mortensen
Willi Mann
Wolfgang Walther
刘 Xiang
王 Xiaoran
郭 Xing
杨 Xudong
Yahor Yuzefovich
胡 Yajun
Yaroslav Saburov
李 Yong
黄 Yongtao
永田 Yugo
邱 Yuhang
清野 Yuki
索科洛夫 Yura
Yurii Rashkovskii
藤井 Yuuki
渡边 Yuya
Yves Colin
于 Zhihong
侯 Zhijie
全 Zongliang
Zubeyr Eryilmaz
姜 Zuming