9.3 9.4 9.5 9.6 10 11 12 13 14 15 Current(16) 17
问题报告 纠错本页面

E.6. 发布 17 #

E.6.1. 概述
E.6.2. 迁移到版本17
E.6.3. 变更
E.6.4. 致谢

发布日期:. 2024-09-26

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

需要使用pg_dumpall进行转储/恢复,或者使用 pg_upgrade或逻辑复制来迁移数据,以从任何先前版本迁移。 有关迁移到新主要版本的一般信息,请参阅Section 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 扩展模块 (Daniel Gustafsson) §

    这曾被现已停止维护的pgAdmin III使用。

  • 移除 wal_sync_methodfsync_writethroughWindows 上(Thomas Munro) §

    该值与fsyncWindows上的值相同。

  • 更改两个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_fsyncpg_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.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.6.3. 变更 #

下面您将找到PostgreSQL 17与之前主要版本之间变更的详细说明。

E.6.3.1. 服务器 #

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

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

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

    WAL traffic caused by vacuum is also more compact.

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

    此外,当maintenance_work_memautovacuum_work_mem设置较高时,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.6.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日志行(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.6.3.1.5. 权限 #
  • 允许授予执行维护操作的权限 (Nathan Bossart) §

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

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

E.6.3.1.6. 服务器配置 #
E.6.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使用。

  • 允许在连接字符串值 dbname 中写入,当 pg_basebackup 将连接信息写入 postgresql.auto.conf(Vignesh C,黑田隼人) §

  • 添加列 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.6.3.1.8. 逻辑复制 #
  • 添加应用程序pg_createsubscriber 用于从物理备用服务器创建逻辑副本 (Euler Taveira) §

  • pg_upgrade 迁移有效的逻辑槽和订阅(黑田隼人、侯志杰、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, Hou Zhijie, Ajin Cherian) § §

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

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

  • 提升逻辑解码的性能,尤其是在存在大量子事务的情况下 (Masahiko Sawada) §

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

    这会强制重新认证。

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

    这使得消息具有持久性。

  • 允许指定必须同步的物理备用节点,只有同步完成后才对订阅者可见(侯志杰,Shveta Malik) § §

    新的服务器变量是 synchronized_standby_slots

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

E.6.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报告处理过程中跳过的行数(鸟越敦史) §

    这出现在系统视图列 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 METHODDEFAULT 设置(Michael Paquier) §

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

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

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

E.6.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.6.3.3. 数据类型 #

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

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

    这以前是不允许的。

E.6.3.4. MERGE #

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

  • 添加 WHEN NOT MATCHED BY SOURCEMERGE(Dean Rasheed) §

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

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

    新的RETURNING函数 merge_action()报告了生成该行的 DML

E.6.3.5. 函数 #

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

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

  • 添加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 标识符 (永田裕吾) §

    这将返回NULL,如果该值未存储在TOAST中。

E.6.3.6. PL/pgSQL #

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

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

E.6.3.7. libpq #

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

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

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

    这些函数是 PQclosePrepared()PQclosePortal()PQsendClosePrepared(), 以及 PQsendClosePortal()

  • 添加了 libpq API,支持阻塞和非阻塞的 取消请求,如果已在使用则支持加密(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.6.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.6.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_rewind, 以及pg_upgrade

  • 添加 pg_restore 选项 --transaction-size,以允许在事务批处理中恢复对象(Tom Lane) §

    这允许在不产生过大事务块问题的情况下,获得事务批处理的性能优势。

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

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

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

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

  • 允许 pg_archivecleanup 删除备份历史文件(鸟越敦史) §

    该选项是 --clean-backup-history

  • 添加一些长选项到 pg_archivecleanup (鸟越敦) §

    长选项是 --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.6.3.10. 源代码 #

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

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

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

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

  • 在64位LoongArch CPU上使用本地CRC指令(杨旭东) §

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

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

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

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

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

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

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

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

E.6.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测试在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.6.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中的两阶段提交 GID为占位符(Michael Paquier) §

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

  • 跟踪 DEALLOCATEpg_stat_statements(Dagfinn Ilmari Mannsåker,Michael Paquier) §

    DEALLOCATE names are stored in pg_stat_statements as placeholders.

  • 添加了本地I/O块读写时序统计列到 pg_stat_statements(Nazir Bilal Yavuz) § §

    新的列是 local_blk_read_timelocal_blk_write_time

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

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

    此参数默认为false

  • 添加pg_stat_statements的列stats_sinceminmax_stats_since,用于跟踪条目创建时间和最后的最小/最大重置时间(Andrei Zubkov) §

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