发布日期: 2024-09-26
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 的其他新功能将在以下部分中进行更详细的解释。
对于那些希望从任何以前版本迁移数据的人,需要使用 pg_dumpall 进行转储/恢复,或者使用 pg_upgrade 或逻辑复制。有关迁移到新的主要版本的一般信息,请参阅 第 18.6 节。
版本 17 包含许多可能会影响与以前版本兼容性的更改。请注意以下不兼容性
更改函数以在维护操作期间使用安全的 search_path (Jeff Davis) § §
这可以防止维护操作(ANALYZE、CLUSTER、CREATE INDEX、CREATE MATERIALIZED VIEW、REFRESH MATERIALIZED VIEW、REINDEX 或 VACUUM)执行不安全的访问。表达式索引和需要引用非默认模式的物化视图使用的函数必须在函数创建期间指定搜索路径。
限制 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 使用。
删除 Windows 上 wal_sync_method 值 fsync_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) §
更改 pgrowlocks 锁定模式输出标签 (Bruce Momjian) §
从 pg_stat_bgwriter 中删除 buffers_backend 和 buffers_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.attstattarget 和 pg_statistic_ext.stxstattarget 以将默认统计目标表示为 NULL (Peter Eisentraut) § §
将 pg_collation.colliculocale 重命名为 colllocale,并将 pg_database.daticulocale 重命名为 datlocale (Jeff Davis) §
将 pg_stat_progress_vacuum 列 max_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() 接受的列名也已更改。
以下是 PostgreSQL 17 和以前主要版本之间更改的详细说明。
允许优化器改进CTE通过考虑早期行输出子句中引用的列的统计信息和排序顺序来计划 (Jian Guo, Richard Guo, Tom Lane) § §
改进 IS NOT NULL 和 IS 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) §
允许 GiST 和 SP-GiST 索引成为增量排序的一部分 (Miroslav Bendik) §
这对于第一个列具有 GiST 和 SP-GiST 索引而其他列没有的 ORDER BY 子句特别有用。
向 pg_stats 添加列以报告范围类型直方图信息 (Egor Rogov, Soumyadeep Chakraborty) §
允许 vacuum 更有效地删除和冻结元组 (Melanie Plageman, Heikki Linnakangas) §
WALvacuum 引起的流量也更紧凑。
允许 vacuum 更有效地存储元组引用 (Masahiko Sawada, John Naylor) § § § §
此外,当 maintenance_work_mem 或 autovacuum_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) § § §
创建系统视图 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 中报告的等待事件添加描述非常有用。
允许 vacuum 报告索引处理的进度 (Sami Imseih) §
这出现在系统视图 pg_stat_progress_vacuum 的列 indexes_total 和 indexes_processed 中。
允许授予执行维护操作的权利 (Nathan Bossart) §
可以使用 MAINTAIN 权限在每个表的基础上授予该权限,也可以通过 pg_maintain 预定义角色在每个角色的基础上授予该权限。允许的操作包括 VACUUM、ANALYZE、REINDEX、REFRESH MATERIALIZED VIEW、CLUSTER 和 LOCK TABLE。
允许具有 pg_monitor 成员身份的角色执行 pg_current_logfile() (Pavlo Golub, Nathan Bossart) §
添加系统变量 allow_alter_system 以禁止 ALTER SYSTEM (Jelte Fennema-Nio, Gabriele Bartolini) §
允许 ALTER SYSTEM 设置无法识别的自定义服务器变量 (Tom Lane) §
也可以使用 GRANT ON PARAMETER 实现。
添加服务器变量 transaction_timeout 以限制事务的持续时间 (Andrey Borodin, Japin Li, Junwang Zhao, Alexander Korotkov) § § §
添加一个内置的、与平台无关的排序规则提供程序 (Jeff Davis) § § § §
这支持 C 和 C.UTF-8 排序规则。
添加服务器变量 huge_pages_status 以报告 Postgres 使用大页的情况 (Justin Pryzby) §
当 huge_pages 设置为 try 时,这非常有用。
添加服务器变量以禁用事件触发器 (Daniel Gustafsson) §
该设置 event_triggers 允许临时禁用事件触发器以进行调试。
允许配置 SLRU 缓存大小 (Andrey Borodin, Dilip Kumar, Alvaro Herrera) §
新的服务器变量是 commit_timestamp_buffers、multixact_member_buffers、multixact_offset_buffers、notify_buffers、serializable_buffers、subtransaction_buffers 和 transaction_buffers。commit_timestamp_buffers、transaction_buffers 和 subtransaction_buffers 会随 shared_buffers 自动按比例增大。
添加对增量文件系统备份的支持 (Robert Haas, Jakub Wartak, Tomas Vondra) § §
可以使用 pg_basebackup 的新 --incremental 选项创建增量备份。新的应用程序 pg_combinebackup 允许操作基本文件系统备份和增量文件系统备份。
允许创建WAL摘要文件 (Robert Haas, Nathan Bossart, Hubert Depesz Lubaczewski) § § § §
这些文件记录在 LSN 范围内已更改的块号,对于增量文件系统备份非常有用。这由服务器变量 summarize_wal 和 wal_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) § §
添加应用程序 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索引。
如果撤销订阅所有者的超级用户权限,则重新启动应用工作进程 (Vignesh C) §
这会强制重新身份验证。
将 flush 选项添加到 pg_logical_emit_message() (Michael Paquier) §
这使消息持久化。
允许指定在订阅者可见之前必须同步的物理备用服务器 (Hou Zhijie, Shveta Malik) § §
新的服务器变量是 synchronized_standby_slots。
将工作进程类型列添加到 pg_stat_subscription (Peter Smith) §
添加新的 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) §
允许 EXPLAIN 报告优化器内存使用情况 (Ashutosh Bapat) §
该选项称为 MEMORY。
添加 EXPLAIN 选项 SERIALIZE 以报告用于网络传输的数据转换成本 (Stepan Rutz, Matthias van de Meent) §
将本地 I/O 块读取/写入计时统计信息添加到 EXPLAIN 的 BUFFERS 输出 (Nazir Bilal Yavuz) §
改进 EXPLAIN 对 SubPlan 节点和输出参数的显示 (Tom Lane, Dean Rasheed) §
添加JIT deform_counter 详细信息到 EXPLAIN (Dmitry Dolgov) §
允许 interval 数据类型支持 +/-infinity 值 (Joseph Koshakow, Jian He, Ashutosh Bapat) §
如果该类型在同一事务中创建,则允许使用通过 ALTER TYPE 添加的 ENUM (Tom Lane) §
以前不允许这样做。
添加函数 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),它们接受 integer、bigint 和 numeric 类型的值。
添加函数以将整数转换为二进制和八进制字符串 (Eric Radman, Nathan Bossart) §
函数是 to_bin() 和 to_oct()。
添加 Unicode 信息函数 (Jeff Davis) §
函数 unicode_version() 返回 Unicode 版本,icu_unicode_version() 返回ICU版本,并且 unicode_assigned() 返回字符是否已分配 Unicode 码位。
添加函数 to_regtypemod() 返回类型规范的类型修饰符 (David Wheeler, Erik Wienhold) §
添加 pg_basetype() 函数以返回域的基本类型 (Steve Chavez) §
添加函数 pg_column_toast_chunk_id() 返回值的 TOAST 标识符 (Yugo Nagata) §
如果值未存储在TOAST 中,则返回 NULL.
添加 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 及更高版本的服务器。
改进 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) § § § § § § § §
添加应用程序 pg_walsummary 以转储WAL摘要文件 (Robert Haas) §
允许 pg_dump 的大型对象分批恢复 (Tom Lane) §
这允许恢复许多大型对象,以避免事务限制并并行恢复。
添加 pg_dump 选项 --exclude-extension (Ayush Vatsa) §
允许 pg_dump、pg_dumpall 和 pg_restore 在文件中指定包含/排除的对象 (Pavel Stehule, Daniel Gustafsson) §
该选项称为 --filter。
向多个客户端应用程序添加 --sync-method 参数 (Justin Pryzby, Nathan Bossart) §
应用程序是 initdb, pg_basebackup, pg_checksums, pg_dump, pg_rewind 和 pg_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_basebackup 和 pg_receivewal 在其连接规范中使用 dbname (Jelte Fennema-Nio) §
这对于对数据库名称敏感的连接池很有用。
为 pg_upgrade 添加 --copy-file-range 选项 (Thomas Munro) §
该选项在 Linux 和 FreeBSD 上受支持。
允许 reindexdb 的 --index 选项并行处理来自不同表的索引 (Maxim Orlov, Svetlana Derevyanko, Alexander Korotkov) §
允许 reindexdb、 vacuumdb 和 clusterdb 处理与模式匹配的所有数据库中的对象 (Nathan Bossart) § § §
新的 --all 选项控制此行为。
移除对 OpenSSL 1.0.1 的支持 (Michael Paquier) §
使用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) §
移除 make 的 distprep 选项 (Peter Eisentraut) §
为 Android 共享库添加 make 支持 (Peter Eisentraut) §
为注入点添加后端支持 (Michael Paquier) § § § §
这用于服务器调试,必须在服务器编译时启用。
添加动态共享内存注册表 (Nathan Bossart) §
这允许在启动时未初始化的共享库协调动态共享内存访问。
修复 emit_log_hook,使其对同一查询使用与其他日志记录相同的时间值 (Kambam Vinay, Michael Paquier) §
改进了使用 jsonpath 进行谓词检查的文档 (David Wheeler) §
允许将带有非连接限定的连接下推到外部服务器和自定义扫描 (Richard Guo, Etsuro Fujita) §
需要修改外部数据包装器和自定义扫描以处理这些情况。
允许将 EXISTS 和 IN 子查询下推到 postgres_fdw 外部服务器 (Alexander Pyhalov) §
增加默认的外部数据包装器元组成本 (David Rowley, Umair Shahid) § §
此值由优化器使用。
允许在 ltree 列上创建哈希索引 (Tommy Pavlicek) §
这还启用了 ltree 列上的哈希连接和哈希聚合。
允许 unaccent 字符转换规则包含空格和引号 (Michael Paquier) §
unaccent.rules 文件的语法已更改。
允许 amcheck 使用新选项 --checkunique 检查唯一约束冲突 (Anastasia Lubennikova, Pavel Borisov, Maxim Orlov) §
允许 ALTER OPERATOR 设置更多优化属性 (Tommy Pavlicek) §
这对于扩展非常有用。
允许扩展定义自定义等待事件 (Masahiro Ikeda) § § § §
已将自定义等待事件添加到 postgres_fdw 和 dblink。
添加 pg_buffercache 函数 pg_buffercache_evict() 以允许共享缓冲区逐出 (Palak Chaturvedi, Thomas Munro) §
这对于测试非常有用。
用占位符替换存储在 pg_stat_statements 中的保存点名称 (Greg Sabino Mullane) §
这大大减少了记录 SAVEPOINT、 RELEASE SAVEPOINT 和 ROLLBACK TO SAVEPOINT 命令所需的条目数。
替换两阶段提交GID存储在 pg_stat_statements 中的占位符 (Michael Paquier) §
这大大减少了记录 PREPARE TRANSACTION、 COMMIT PREPARED 和 ROLLBACK 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_time 和 local_blk_write_time。
添加JIT将 deform_counter 详情添加到 pg_stat_statements (Dmitry Dolgov) §
为 pg_stat_statements_reset() 添加可选的第四个参数 (minmax_only),以允许仅重置最小值/最大值统计信息 (Andrei Zubkov) §
此参数默认为 false。
添加 pg_stat_statements 列 stats_since 和 minmax_stats_since 来跟踪条目创建时间和上次最小值/最大值重置时间 (Andrei Zubkov) §
以下个人(按字母顺序排列)以补丁作者、提交者、审阅者、测试人员或问题报告者的身份为本版本做出了贡献。
| 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 |
| 威尔·莫滕森 |
| 威利·曼 |
| 沃尔夫冈·瓦尔特 |
| 项柳 |
| 王晓然 |
| 郭星 |
| 杨旭东 |
| 亚荷尔·尤泽福维奇 |
| 胡亚军 |
| 雅罗斯拉夫·萨布罗夫 |
| 李勇 |
| 黄永涛 |
| 永田裕吾 |
| 邱宇航 |
| 清野悠纪 |
| 尤拉·索科洛夫 |
| 尤里·拉什科夫斯基 |
| 藤井雄纪 |
| 渡航雄也 |
| 伊夫·科林 |
| 于志宏 |
| 侯志杰 |
| 全宗良 |
| 祖拜尔·埃里尔马兹 |
| 姜祖明 |
如果您发现文档中有任何不正确、与您的特定功能体验不符或需要进一步澄清的地方,请使用此表单报告文档问题。