发布日期:. 2024-09-26
PostgreSQL 17 包含许多新特性和增强功能,包括:
为 VACUUM 提供新的内存管理系统,可减少内存消耗并提升整体清理性能。
新的 SQL/JSON 能力,包括构造器、标识函数,以及可将 JSON 数据转换为表表示的 JSON_TABLE() 函数。
各种查询性能改进,包括使用流式 I/O 的顺序读取、高并发下的写入吞吐量,以及在 btree 索引上对多个值的搜索。
逻辑复制增强,包括:
故障切换控制
pg_createsubscriber,这是一个从物理备用服务器创建逻辑副本的工具
pg_upgrade 现在会保留发布端的逻辑复制槽以及订阅端的完整订阅状态。这将使升级到未来主要版本时能够继续进行逻辑复制,而无需通过复制重新同步。
新的客户端连接选项 sslnegotiation=direct,可直接执行 TLS 握手,以避免一次往返协商。
pg_basebackup 现在支持增量备份。
COPY 增加了一个新选项 ON_ERROR ignore,允许复制操作在发生错误时继续执行。
下面几节将更详细地解释上述项目以及 PostgreSQL 17 的其他新特性。
对于希望从任何以前的版本迁移数据的人来说,需要使用 pg_dumpall 进行转储/恢复,或者使用 pg_upgrade 或逻辑复制。有关迁移到新主要版本的通用信息,请参阅 Section 18.6。
版本 17 包含许多可能影响与以前版本兼容性的更改。请注意以下不兼容项:
更改函数,使其在维护操作期间使用安全的 search_path(Jeff Davis) § §
这可防止维护操作(ANALYZE、CLUSTER、CREATE INDEX、CREATE MATERIALIZED VIEW、REFRESH MATERIALIZED VIEW、REINDEX 或 VACUUM)执行不安全的访问。表达式索引和物化视图中使用、且需要引用非默认 schema 的函数,必须在创建函数时指定 search path。
限制 ago 只能出现在 interval 值的末尾(Joseph Koshakow) § §
同时,禁止空 interval 单位出现多次。
移除服务器变量 old_snapshot_threshold(Thomas Munro) §
该变量允许 vacuum 移除对正在运行事务而言理论上仍可能可见的行,从而在之后访问时引发“snapshot too old”错误。如果将来找到改进的实现方式,此功能可能会重新加入 PostgreSQL。
更改 SET SESSION AUTHORIZATION 对初始会话用户超级用户状态的处理方式(Joseph Koshakow) §
新行为基于发出 SET SESSION AUTHORIZATION 命令时会话用户的超级用户状态,而不是其连接建立时的超级用户状态。
移除模拟每数据库用户的功能(Nathan Bossart) §
该功能即 db_user_namespace,使用得很少。
移除 contrib 扩展 adminpack(Daniel Gustafsson) §
它曾由现已终止支持的 pgAdmin III 使用。
在 Windows 上移除 wal_sync_method 的 fsync_writethrough 值(Thomas Munro) §
该值在 Windows 上与 fsync 相同。
更改两个 WAL 文件名函数对文件边界的处理方式(Kyotaro Horiguchi, Andres Freund, Bruce Momjian) §
当 LSN 位于文件段边界时,pg_walfile_name() 和 pg_walfile_name_offset() 过去会报告前一个 LSN 段号;现在则返回当前的 LSN 段。
移除已不再需要的服务器变量 trace_recovery_messages(Bharath Rupireddy) §
移除 information schema 列 element_types.domain_default(Peter Eisentraut) §
更改 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) § §
重命名系统视图 pg_stat_slru 中的 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) §
vacuum 产生的 WAL 流量也更紧凑。
允许 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 对 huge pages 的使用情况(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() 进行查看。
将系统标识符添加到文件系统 backup manifest 文件中(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) § §
允许逻辑复制变更的应用在订阅端使用 hash 索引(Hayato Kuroda) §
以前只有 btree 索引可用于此目的。
如果撤销订阅所有者的超级用户权限,则重启应用工作进程(Vignesh C) §
这会强制重新认证。
为 pg_logical_emit_message() 添加 flush 选项(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 中,允许方便地指定所有列都应被强制设为 null 或 not null(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) § §
为 ALTER TABLE .. SET ACCESS METHOD 添加 DEFAULT 设置(Michael Paquier) §
添加对在连接时触发的 事件触发器 的支持(Konstantin Knizhnik, Mikhail Gribkov) §
允许 EXPLAIN 报告优化器内存使用情况(Ashutosh Bapat) §
该选项名为 MEMORY。
添加 EXPLAIN 选项 SERIALIZE,用于报告为网络传输转换数据的成本(Stepan Rutz, Matthias van de Meent) §
为 EXPLAIN 的 BUFFERS 输出添加本地 I/O 块读/写耗时统计信息(Nazir Bilal Yavuz) §
改进 EXPLAIN 对 SubPlan 节点和输出参数的显示(Tom Lane, Dean Rasheed) §
为 EXPLAIN 添加 JIT deform_counter 细节(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 值转换为其他数据类型(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() 会在将新密码发送到服务器之前先对其进行哈希处理。
添加用于关闭 portal 和预备语句的 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 及更高版本的服务器。
改进 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 环境变量。
用户定义的数据类型接收函数将不再接收到以空字符终止的数据(David Rowley) §
添加增量式 JSON 解析器,以用于超大的 JSON 文档(Andrew Dunstan) §
将顶层 README 文件转换为 Markdown(Nathan Bossart) §
移除不再需要的顶层 INSTALL 文件(Tom Lane) §
移除 make 的 distprep 选项(Peter Eisentraut) §
为 make 添加对 Android 共享库的支持(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 命令所需的条目数量。
将存储在 pg_stat_statements 中的两阶段提交 GID 替换为占位符(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。
为 pg_stat_statements 添加 JIT deform_counter 细节(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 |
| 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 |
如果您发现文档中有不正确的内容、与您使用特定功能的经验不符或需要进一步说明,请使用此表单来报告文档问题。