E.12. 发布版本 17 #
发布日期:. 2024-09-26
E.12.1. 概述 #
PostgreSQL 17 包含许多新特性和增强功能,包括:
为
VACUUM提供新的内存管理系统,可减少内存消耗并提升整体清理性能。新的 SQL/JSON 能力,包括构造器、标识函数,以及可将 JSON 数据转换为表表示的
JSON_TABLE()函数。各种查询性能改进,包括使用流式 I/O 的顺序读取、高并发下的写入吞吐量,以及在 B-树索引上对多个值的搜索。
逻辑复制增强,包括:
故障切换控制
pg_createsubscriber,这是一个从物理备库创建逻辑副本的工具
pg_upgrade 现在会保留发布端的逻辑复制槽以及订阅端的完整订阅状态。这将使升级到未来主要版本时能够继续进行逻辑复制,而无需通过复制重新同步。
新的客户端连接选项
sslnegotiation=direct,可直接执行 TLS 握手,以避免一次往返协商。pg_basebackup 现在支持增量备份。
COPY增加了一个新选项ON_ERROR ignore,允许复制操作在发生错误时继续执行。
下面几节将更详细地解释上述项目以及 PostgreSQL 17 的其他新特性。
E.12.2. 迁移到版本 17 #
对于希望从任何以前的版本迁移数据的人来说,需要使用 pg_dumpall 进行转储/恢复,或者使用 pg_upgrade 或逻辑复制。有关迁移到新主要版本的通用信息,请参阅第 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()接受的列名也随之更改。
E.12.3. 变更 #
下文详细说明 PostgreSQL 17 与上一主要版本之间的变更。
E.12.3.1. 服务器 #
E.12.3.1.1. 优化器 #
允许优化器通过考虑较早行输出子句中所引用列的统计信息和排序顺序来改进 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)§
E.12.3.1.2. 索引 #
E.12.3.1.3. 一般性能 #
允许 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)§ § §
E.12.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中报告的等待事件补充描述。允许 vacuum 报告索引处理进度(Sami Imseih)§
这显示在系统视图
pg_stat_progress_vacuum的indexes_total和indexes_processed列中。
E.12.3.1.5. 权限 #
允许授予执行维护操作的权限(Nathan Bossart)§
该权限可以通过
MAINTAIN权限按表授予,也可以通过预定义角色pg_maintain按角色授予。允许的操作包括VACUUM、ANALYZE、REINDEX、REFRESH MATERIALIZED VIEW、CLUSTER和LOCK TABLE。允许拥有
pg_monitor成员资格的角色执行pg_current_logfile()(Pavlo Golub, Nathan Bossart)§
E.12.3.1.6. 服务器配置 #
添加系统变量 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 自动扩展。
E.12.3.1.7. 流复制与恢复 #
添加对增量文件系统备份的支持(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)§
以前只有 B-树索引可用于此目的。
如果撤销订阅所有者的超级用户权限,则重启应用工作进程(Vignesh C)§
这会强制重新认证。
为
pg_logical_emit_message()添加flush选项(Michael Paquier)§这会使该消息具有持久性。
允许指定在对订阅者可见之前必须先完成同步的物理备库(Hou Zhijie, Shveta Malik)§ §
新的服务器变量是 synchronized_standby_slots。
为
pg_stat_subscription添加工作进程类型列(Peter Smith)§
E.12.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 或 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)§
允许
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添加 JITdeform_counter细节(Dmitry Dolgov)§
E.12.3.3. 数据类型 #
允许
interval数据类型支持+/-infinity值(Joseph Koshakow, Jian He, Ashutosh Bapat)§如果该类型是在同一事务中创建的,则允许使用通过
ALTER TYPE新增的ENUM值(Tom Lane)§这在以前是不允许的。
E.12.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值转换为其他数据类型(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()会在将新密码发送到服务器之前先对其进行 hash 运算。添加用于关闭 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)§ § § § § § § §
E.12.3.9. 服务器应用 #
添加应用程序 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控制此行为。
E.12.3.10. 源代码 #
移除对 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)§
E.12.3.11. 附加模块 #
允许将带有非连接限制条件的连接下推到外部服务器和自定义扫描中(Richard Guo, Etsuro Fujita)§
外部数据包装器和自定义扫描需要修改才能处理这些情况。
允许将
EXISTS和IN子查询下推到 postgres_fdw 外部服务器(Alexander Pyhalov)§提高默认的外部数据包装器元组代价(David Rowley, Umair Shahid)§ §
该值由优化器使用。
允许在 ltree 列上创建 hash 索引(Tommy Pavlicek)§
这也使得能够在 ltree 列上进行哈希连接和 hash 聚合。
允许 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)§这对测试很有用。
E.12.3.11.1. pg_stat_statements #
将存储在
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添加 JITdeform_counter细节(Dmitry Dolgov)§为
pg_stat_statements_reset()添加可选的第四个参数(minmax_only),以允许仅重置最小/最大统计信息(Andrei Zubkov)§该参数默认为
false。为
pg_stat_statements添加列stats_since和minmax_stats_since,用于跟踪条目创建时间以及上次最小/最大值重置时间(Andrei Zubkov)§
E.12.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 |
报告文档问题
阅读 上游文档. 通过 PostgreSQL 文档反馈表单.