暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PostgreSQL 17 发行说明

通讯员 2024-09-27
243

E.1.1. 概述 

PostgreSQL 17 包含许多新功能和增强功能,包括:

  • 适用于 VACUUM 的新内存管理系统,可减少内存消耗并提高整体 vacuuming 性能。

  • 新的 SQL/JSON 功能,包括构造函数、标识函数和 JSON_TABLE() 函数,该函数用于将 JSON 数据转换为表表示形式。

  • 各种查询性能改进,包括使用流式 I/O 的顺序读取、高并发下的写入吞吐量以及搜索 btree 索引中的多个值。

  • 逻辑复制增强功能,包括:

    •  故障转移控制

    • pg_createsubscriber,一种从物理备用数据库创建逻辑副本的实用程序

    • pg_upgrade 现在在发布者和订阅者上保留复制槽

  • 新的客户端连接选项 sslnegotiation=direct,用于执行直接 TLS 握手以避免往返协商。

  • pg_basebackup 现在支持增量备份。

  • COPY 添加了一个新选项 ON_ERROR ignore,该选项允许在出现错误时继续执行复制操作。

以下部分将更详细地解释 PostgreSQL 17 的上述项目和其他新功能。

E.1.2. 迁移到版本 17 

对于希望从任何先前版本迁移数据的用户,需要使用 pg_dumpall 或使用 pg_upgrade 或逻辑复制进行转储/恢复。有关迁移到新主要版本的一般信息,请参见Section 18.6

版本 17 包含许多可能影响与以前版本的兼容性的更改。请注意以下不兼容情况:

  • 更改功能以在维护操作期间使用安全search_path (Jeff Davis) §

    这可以防止维护操作(ANALYZECLUSTER、REFRESH MATERIALIZED VIEWREINDEX 或 VACUUM)执行不安全的访问。表达式索引和物化视图使用的函数需要引用非默认 Schema,在创建函数时必须指定搜索路径。

  • 将 ago 限制为仅在间隔值的末尾显示 (Joseph Koshakow) §§

    此外,还可以防止空间隔单位多次出现。

  • 删除服务器变量 old_snapshot_threshold (Thomas Munro) §

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

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

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

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

    db_user_namespace,此功能很少使用。

  • 在 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) §

  • 删除信息架构列 element_types 。 domain_default (彼得·艾森特劳特) §

  • 更改 pgrowlocks 锁定模式输出标签 (Bruce Momjian) §

  • 移除 buffers_backend 和 buffers_backend_fsync 从 pg_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 . attstattarget 和 pg_statistic_ext . stxstattarget 将默认统计目标表示为 NULL (Peter Eisentraut) § §

  • 重命名 pg_collation 。 colliculocale to colllocale 和 pg_database . daticulocale 至 datlocale (Jeff Davis) §

  • 将列重命名为 ,重命名 num_dead_tuples 为 num_dead_item_ids ,并添加 dead_tuple_bytes (泽田正彦) § § max_dead_tuple_bytes pg_stat_progress_vacuum max_dead_tuples

  • 在系统视图中重命名 SLRU 列 pg_stat_slru (Alvaro Herrera) §

    pg_stat_reset_slru() 接受的列名也会更改。

E.1.3. 更改 

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

E.1.3.1. 服务器 

E.1.3.1.1. 优化器 
  • 允许优化器通过考虑前面的行输出子句 (Jian Guo, Richard Guo, Tom Lane) §§ 中引用的列的统计信息和排序顺序来改进 CTE 计划

  • 改进 IS NOT NULL 和 IS NULL 查询限制的优化 (David Rowley, Richard Guo, Andy Fan) §§

    如果指定了 IS NULL,则从 NOT NULL 列的查询中删除 IS NOT 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) §

    可以使用 server 变量 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.1.3.1.2. 索引 
  • 允许 btree 索引更有效地查找一组值,例如使用 constants 的 IN 子句提供的值 (Peter Geoghegan, Matthias van de Meent) §

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

E.1.3.1.3. 一般性能 
  • 允许真空更有效地去除和冻结元组(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.1.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) §

    这是由 server 变量 log_replication_commands 启用的。

  • 添加报告等待事件类型的系统视图pg_wait_events (Bertrand Drouvot) §

    这对于为 pg_stat_activity 中报告的 await 事件添加描述非常有用。

  • 为检查点延迟添加等待事件 (Thomas Munro) §

  • 允许真空报告索引处理的进度 (Sami Imseih) §

    这显示在系统视图 pg_stat_progress_vacuum 列 indexes_total 和 indexes_processed 中。

E.1.3.1.5. 权限 
  • 允许授予执行维护操作的权限 (Nathan Bossart) §

    可以使用 MAINTAIN 特权按表授予权限,也可以通过 pg_maintain 预定义角色按角色授予权限。允许的操作包括 VACUUM、ANALYZE、REINDEX、REFRESH MATERIALIZED VIEWCLUSTER 和 LOCK TABLE

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

E.1.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 (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.1.3.1.7. 流式复制和恢复 
E.1.3.1.8. 逻辑复制
  • 添加应用程序pg_createsubscriber以从物理备用服务器 (Euler Taveira) § 创建逻辑副本

  • pg_upgrade迁移有效的逻辑槽和订阅(Hayato Kuroda、Hou Zhijie、Vignesh C、Julien Rouhaud、Shlok Kyal)§§

    这允许逻辑复制在升级后快速继续。这仅适用于版本 17 或更高版本的旧 PostgreSQL 集群。

  • 启用逻辑槽的故障转移 (Hou Zhijie, Shveta Malik, Ajin Cherian) §

    这由 . pg_create_logical_replication_slot()

  • 添加服务器变量sync_replication_slots以启用故障转移逻辑槽同步 (Shveta Malik, Hou Zhijie, Peter Smith) §§

  • 为 CREATE/ALTER SUBSCRIPTION 添加逻辑复制故障转移控制 (Shveta Malik, Hou Zhijie, Ajin Cherian) §§

  • 允许应用逻辑复制更改以在订阅者上使用哈希索引 (Hayato Kuroda) §

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

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

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

    这将强制重新验证。

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

    这使得消息持久。

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

    新的 server 变量为 synchronized_standby_slots

  • 向 pg_stat_subscription (Peter Smith) § 添加工作人员类型列

E.1.3.2. 实用程序命令 

  • 添加新的 COPY 选项ON_ERROR忽略以丢弃错误行(Damir Belyalov、Atsushi Torikoshi、Alex Shulgin、Jian He、Yugo Nagata)§§§§

    默认行为是 ON_ERROR stop

  • 添加新 COPY 选项 LOG_VERBOSITY ,报告 COPY FROM 忽略的错误行 (Bharath Rupireddy) §

  • 允许 COPY FROM 报告处理过程中跳过的行数 (Atsushi Torikoshi) §

    这将显示在系统视图列 pg_stat_progress_copy 中。tuples_skipped

  • 在 COPY FROM 中,允许轻松指定所有列都应该强制为 null 或不为 null(张明利)§

  • 允许分区表具有标识列 (Ashutosh Bapat) §

  • 允许对分区表进行排除约束 (Paul A. Jungwirth) §

    只要排除约束比较分区键列是否相等,其他列就可以使用特定于排除约束的比较。

  • 添加更清晰的ALTER TABLE方法,将列设置为默认统计目标(Peter Eisentraut)§

    新语法为 ALTER TABLE ... SET STATISTICS DEFAULT ;仍然支持使用 SET STATISTICS -1

  • 允许 ALTER TABLE 更改列的生成表达式 (Amul Sul) §

     语法为 ALTER TABLE ... ALTER COLUMN ... SET EXPRESSION .

  • 允许在分区表上指定表访问方法 (Justin Pryzby, Soumyadeep Chakraborty, Michael Paquier) §§

  • 添加 DEFAULT ALTER TABLE .. SET ACCESS METHOD (Michael Paquier) § 的设置

  • 添加了对在连接时触发的事件触发器的支持(Konstantin Knizhnik、Mikhail Gribkov)§

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

  • 如果未指定表名,则允许 CLUSTER 选项使用括号语法(Nathan Bossart)§

E.1.3.2.1. 解释
  • 允许 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) §

E.1.3.3. 数据类型 

  • 允许 interval 数据类型支持 +/-无穷大值(Joseph Koshakow、Jian He、Ashutosh Bapat)§

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

    这在以前是不允许的。

E.1.3.4. 合并

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

  • 添加到 WHEN NOT MATCHED BY SOURCE MERGE (Dean Rasheed) §

    已支持对目标行执行 WHEN NOT MATCHED

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

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

E.1.3.5. 函数 

  • 添加函数 JSON_TABLE() 以将 JSON 数据转换为表表示形式(Nikita Glukhov、Teodor Sigaev、Oleg Bartunov、Alexander Korotkov、Andrew Dunstan、Amit Langote、Jian He)§§

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

  • 添加 SQL/JSON 构造函数 JSON()、JSON_SCALAR() 和 JSON_SERIALIZE()(Nikita Glukhov、Teodor Sigaev、Oleg Bartunov、Alexander Korotkov、Andrew Dunstan、Amit Langote)§

  • 添加 SQL/JSON 查询函数 JSON_EXISTS()、JSON_QUERY() 和 JSON_VALUE() (Nikita Glukhov, Teodor Sigaev, Oleg Bartunov, Alexander Korotkov, Andrew Dunstan, Amit Langote, Peter Eisentraut, Jian He) §§§§§

  • 添加 jsonpath 方法以将 JSON 值转换为其他 JSON 数据类型 (Jeevan Chalke) §

    jsonpath 方法是 .bigint() 、 、 .boolean() .date() 、 .decimal([precision [, scale]]) .integer() .number() .string() .time() .time_tz() .timestamp() 和 .timestamp_tz() 。

  • 添加 to_timestamp() 时区格式说明符 (Tom Lane) §

    TZ 接受时区缩写或数字偏移量,而 OF 仅接受数字偏移量。

  • 允许会话时区由 AS LOCAL (Vik Fearing) § 指定

    这在转换时间戳值、添加和删除时区时非常有用,而不是指定文本会话时区。

  • 添加函数 uuid_extract_timestamp() 并 uuid_extract_version() 返回 UUID 信息(Andrey Borodin) §

  • 添加函数以生成指定范围内的随机数 (Dean Rasheed) §

    这些函数是 random(min, max),它们采用 integerbigint 和 numeric 类型的值。

  • 添加函数以将整数转换为二进制和八进制字符串(Eric Radman,Nathan Bossart)§

    函数是 to_bin() 和 to_oct() 。

  • 添加 Unicode 信息函数 (Jeff Davis) §

    函数 unicode_version() 返回 Unicode 版本,icu_unicode_version() 返回 ICU 版本,如果为字符分配了 Unicode 码位,则返回 unicode_assigned()。

  • 添加函数 xmltext() 以将文本转换为单个 XML 文本节点 (Jim Jones) §

  • 添加函数 to_regtypemod() 以返回类型规范的类型修饰符 (David Wheeler, Erik Wienhold) §

  • 添加 pg_basetype() 函数以返回域的基本类型(史蒂夫·查韦斯)§

  • 添加函数 pg_column_toast_chunk_id() 以返回值的 TOAST 标识符 (Yugo Nagata) §

    如果值未存储在 TOAST 中,则返回 NULL

E.1.3.6. PL/pgSQL#

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

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

E.1.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.1.3.8. psql 

  • 改进默认和空权限的 psql 显示(Erik Wienhold、Laurenz Albe)§

    命令 \dp 现在为空权限显示 (none);default 仍显示为 empty。

  • 让反斜杠命令 honor \pset null (Erik Wienhold, Laurenz Albe) §

    以前 \pset null 被忽略。

  • 允许 psql 的 \watch 在返回最少行数后停止(Greg Sabino Mullane)§

    参数为 min_rows

  • 允许使用 control-C 取消 psql 连接尝试 (Tristan Partin) §

  • 允许 psql 遵守 FETCH_COUNT 非 SELECT 查询 (Daniel Vérité) §

  • 改进 psql Tab 键补全 (Dagfinn Ilmari Mannsåker, Gilles Darold, Christoph Heiss, Steve Chavez, Vignesh C, Pavel Borisov, Jian He) §§§§

E.1.3.9. 服务器应用程序 

  • 添加应用程序pg_walsummary以转储 WAL 摘要文件 (Robert Haas) §

  • 允许批量恢复 pg_dump 的大型对象 (Tom Lane) §

    这允许恢复许多大型对象以避免事务限制并并行恢复。

  • 添加pg_dump选项 --exclude-extension (Ayush Vatsa) §

  • 允许 pg_dumppg_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)§

  • 允许 reindexdbvacuumdb 和 clusterdb 处理与模式匹配的所有数据库中的对象 (Nathan Bossart) §§§

    新选项 --all 控制此行为。

E.1.3.10. 源代码 

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

  • 允许在 OpenSSLFIPS 模式下通过测试 (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) §§

    现在,我们假设所有支持的平台都有足够的线程支持。

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

E.1.3.11. 其他模块 

  • 允许将具有非加入资格的加入推送到外部服务器和自定义扫描(Richard Guo,Etsuro Fujita)§

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

  • 允许将 EXISTS 和 IN 子查询下推到postgres_fdw外部服务器 (Alexander Pyhalov) §

  • 增加默认的外部数据包装器元组成本(David Rowley、Umair Shahid)§§

    此值由优化器使用。

  • 允许中断 dblink 数据库操作 (Noah Misch) §

  • 允许在 ltree 列上创建哈希索引 (Tommy Pavlicek) §

    这还可以在 ltree 列上启用 hash join 和 hash 聚合。

  • 允许非重音字符翻译规则包含空格和引号 (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) §

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

    现在生命周期已结束的 pgAdmin III 使用了这。

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

    这对于扩展非常有用。

  • 允许扩展定义自定义等待事件 (Masahiro Ikeda) §§§§

    自定义等待事件已添加到 postgres_fdw 和 dblink

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

    这对于测试很有用。

E.1.3.11.1. pg_stat_statements 
  • 将 pg_stat_statements 中的 CALL 参数替换为占位符 (Sami Imseih) §

  • 将存储在 pg_stat_statements 中的保存点名称替换为占位符 (Greg Sabino Mullane) §

    这大大减少了记录 SAVEPOINT、RELEASE SAVEPOINT 和 ROLLBACK TO SAVEPOINT 命令所需的条目数。

  • 将存储在 pg_stat_statements 中的两阶段提交 GID替换为占位符 (Michael Paquier) §

    这大大减少了记录 PREPARE TRANSACTION、COMMIT PREPARED 和 ROLLBACK PREPARED 所需的条目数。

  • Track DEALLOCATE in pg_stat_statements (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)§

E.1.4. 致谢 


链接

文章转载自通讯员,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论