PostgreSQL 每周新闻 - 2020 年 11 月 29 日

由 PWN 发布于 2020-11-30
PWN

PostgreSQL 每周新闻 - 2020 年 11 月 29 日

PostgreSQL 产品新闻

Pgpool-II 4.2.0 发布,这是一个用于 PostgreSQL 的连接池和语句复制系统。https://www.pgpool.net/docs/42/en/html/release-4-2-0.html

pgBadger v11.4 发布,这是一个用 Perl 编写的 PostgreSQL 日志分析器和图形工具。https://github.com/darold/pgbadger/releases

Database Lab 2.0 发布,这是一个用于快速克隆大型 PostgreSQL 数据库以构建非生产环境的工具:https://postgres.ai/blog/dle-2.0-release/

pgagroal 1.0.0 发布,这是一个用于 PostgreSQL 的高性能协议原生连接池。https://agroal.github.io/pgagroal/release/announcement/2020/11/24/pgagroal-1.0.0.html

11 月份的 PostgreSQL 工作

http://archives.postgresql.org/pgsql-jobs/2020-11/

PostgreSQL 新闻

Planet PostgreSQL: http://planet.postgresql.org/

本周的 PostgreSQL 每周新闻由 David Fetter 为您带来

请在太平洋标准时间下午 3:00 前(周日)将新闻和公告提交至 david@fetter.org。

已应用补丁

Tom Lane 推送了

  • 允许多行 INSERT 为生成的列指定 DEFAULT。可以使用 "INSERT INTO tab(generated_col) VALUES (DEFAULT)" 而不会引发错误。但是,多行 VALUES 列表的等效情况总是会引发错误,即使在每行中都正确地声明了 DEFAULT。修复此问题。同时,改进了有关 OVERRIDING SYSTEM/USER 值的附近逻辑的测试用例。Dean Rasheed 讨论:https://postgr.es/m/9q0sgcr416t.fsf@gmx.us https://git.postgresql.org/pg/commitdiff/17958972fe3bb03454a4b53756b29d65dc285efa

  • 改进了与生成的列相关的两个错误消息的措辞。明确指出,只要插入的是 DEFAULT 占位符,就可以“插入”到生成的列中。此外,使用 ERRCODE_GENERATED_ALWAYS 代替 ERRCODE_SYNTAX_ERROR;似乎没有任何理由使用不太具体的错误代码。讨论:https://postgr.es/m/9q0sgcr416t.fsf@gmx.us https://git.postgresql.org/pg/commitdiff/d36228a9fcdccd57a7dc332572eb9837c7c301e6

  • 重命名 “点严格高于/低于点” 的比较运算符。历史上,它们被称为 >^ 和 <^,但这与类似的框、多边形和圆运算符不一致,后者分别命名为 |>> 和 <<|。更糟糕的是,>^ 和 <^ 名称用于框类型的严格高于/低于测试。因此,根据更常见的命名发明新的运算符。旧的运算符现在仍然可用,并且仍然被相关的索引操作类接受。但是有一个弃用通知,所以也许我们有一天可以摆脱它们。Emre Hasegeli,由 Pavel Borisov 审核。讨论:https://postgr.es/m/24348.1587444160@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/0cc99327888840f2bf572303b68438e4caf62de9

  • 删除不必要的 #include。Justin Pryzby 讨论:https://postgr.es/m/20201123205505.GJ24052@telsasoft.com https://git.postgresql.org/pg/commitdiff/3b9b01f75d6e2d7bf9e0bf8ec958ce420aa037c2

  • 集中跳过无用 ereport/elog 调用的逻辑。虽然当错误消息级别太低而无法打印时,ereport() 和 elog() 本身非常便宜,但某些地方需要在调用这些宏之前做大量的工作。为了在不打印任何内容时优化掉这些设置工作,使 elog.c 导出一个新函数 message_level_is_interesting(elevel),该函数报告 ereport/elog 是否会执行任何操作。在各种地方利用它,这些地方对 log_min_messages 等进行了临时直接测试。还教 ProcSleep 使用它以避免一些工作。(可能还有其他地方可以有效地使用它;我没有仔细搜索。)在 elog.c 中,稍微重构一下以避免重复策略设置逻辑的副本。当编写该代码时,我们不依赖于内联函数的可用性;因此为了效率,它有一些重复的地方,我将其删除了。Alvaro Herrera 和 Tom Lane 讨论:https://postgr.es/m/129515.1606166429@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/789b938bf2b8e38d0894261eae6bc84bbbb4714e

  • 在内联函数的声明上放置 “inline” 标记。我很难说 C 标准的字面意思是否要求这样做,但是我们确实有一些构建场成员在未完成此操作时会发出警告。c532d15dd 中的疏忽。https://git.postgresql.org/pg/commitdiff/ec05bafdbbf474bf0a1416772da31f9f1f27fa1e

  • 避免向客户端发送多个 ParameterStatus 消息。到目前为止,当任何 GUC_REPORT 变量的活动值发生任何更改时,我们会立即向客户端发送 ParameterStatus 消息。当该功能设计出来时,这勉强可以接受;现在我们有了函数 SET 子句之类的内容,在查询中 GUC_REPORT 变量可能会多次更改,甚至可能最终回到其原始值,这在用例中非常合理。幸运的是,我们的大多数 GUC_REPORT 变量不太可能经常更改;但是,目前有一些扩大该集合的提案,甚至使其可由用户配置。因此,让我们修复这些问题,使每个查询中每个变量生成的 ParameterStatus 消息不超过一条,并且除非查询结束值与我们上次报告的值不同,否则不发送任何消息。讨论:https://postgr.es/m/5708.1601145259@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/2432b1a04087edc2fd9536c7c9aa4ca03fd1b363

  • 文档:对第 11.2 节“索引类型”进行小的改进。将每个索引类型的讨论分解为 <sect2>,以便在视觉上更加分离并且更容易找到。改进标记,并进行一些小的措辞调整。这还修复了对现已弃用的点运算符 <^ 和 >^ 的一个多余引用。Dagfinn Ilmari Mannsåker,由 David Johnston 和 Jürgen Purtz 审核。讨论:https://postgr.es/m/877dukhvzg.fsf@wibble.ilmari.org https://git.postgresql.org/pg/commitdiff/85b4ba73423b480902206ca04330c1cbea371c3c

  • 在 psql 的 \d 命令中,不要截断属性默认值。历史上,psql 将列的默认表达式的文本截断为 128 个字符。这与 describe.c 中的任何其他行为都不同,而且现在限制仅应用于表达式本身,而不应用于可能包裹它的 "generated always as (...) stored" 文本时,它变得特别令人困惑。在我们的 git 历史中挖掘表明,此限制的最初动机并不是真正为了限制显示宽度(正如我长期以来认为的那样),而是为了安全地使用固定宽度的输出缓冲区来存储结果。当然,这种实现限制早已不复存在,但限制仍然存在。让我们摆脱它。同时,重新排列关于何时释放输出字符串的逻辑,使其不那么依赖于关于 attidentity 和 attgenerated 的可能值的未声明的假设。根据 David Turon 的 bug #16743。向 v12 回溯补丁,其中 GENERATED 出现在那里。(可以说我们可以将其进一步回溯,但是我不想为此更改长期稳定的分支的行为。)讨论:https://postgr.es/m/16743-7b1bacc4af76e7ad@postgresql.org https://git.postgresql.org/pg/commitdiff/314fb9baeacb3426a5d9a26132aae8d828cc0ad7

  • 修复最近在 LISTEN/NOTIFY 处理中引入的竞争条件。Commit 566372b3d 修复了一些涉及并发 SimpleLruTruncate 调用的竞争条件,但在 async.c 中引入了新的竞争条件。新监听的后端可能会尝试读取正在截断的 Notify SLRU 页面,从而可能导致错误。此外,QUEUE_TAIL 指针可能会设置为不等于任何后端的队列位置的值。虽然这在 v13 及更高版本中是相当无害的(感谢 commit 51004c717),但在旧版本中,它会导致队列截断逻辑几乎永久禁用,因此继续使用 NOTIFY 会导致队列填充警告,并最终导致无法发送更多通知。(服务器重启足以使其消失,但这仍然非常令人不快。)问题的核心是对 QUEUE_TAIL 代表队列的“逻辑”尾部(即,最旧的仍然有趣的数据)还是“物理”尾部(我们尚未截断的最旧数据)感到困惑。为了修复,将其拆分为两个变量。QUEUE_TAIL 重新定义为逻辑尾部,并且我们引入了一个新变量来跟踪最旧的未截断页面。根据 Mikael Gustavsson 的报告。与之前的补丁一样,回溯到所有受支持的分支。讨论:https://postgr.es/m/1b8561412e8a4f038d7a491c8b922788@smhi.se https://git.postgresql.org/pg/commitdiff/9c83b54a9ccdb111ce693ada2309475197c19d70

  • 清理 src/test/locale/ 中的测试后。257836a75 中的疏忽,添加了这些测试。https://git.postgresql.org/pg/commitdiff/b90a7fe15f78b1e2513cbcb27a33f4adc47bcd3d

  • 文档:澄清 PQconnectdbParams() 的行为。文档中遗漏了一个关键细节:如果关键字数组条目对应的数值数组条目为 NULL 或空字符串,则该条目会被直接忽略;它不会覆盖该参数先前获得的任何值。(请参阅 conninfo_array_parse()。)我原以为这会将设置强制恢复为默认值,这导致了我遇到了 bug #16746;但事实并非如此。趁着这个机会,我忍不住对 PQconnectdbParams() 的描述以及关于连接 URI 语法的章节进行了一些文字编辑。讨论:https://postgr.es/m/931505.1606618746@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/d5e2bdf7dda712a60234f08e036ec9de28085a2d

Heikki Linnakangas 推送了

Álvaro Herrera 推送了

David Rowley 推送了

Michaël Paquier 推送了

藤井正雄提交

  • 文档:从一些索引项中删除不必要的空格字符。以前,一些索引项在文档中具有 “ ,”(即,空格 + 逗号),如下所示。由于逗号前的空格字符是不必要的,因此本次提交将其删除,以与其他索引项保持一致。 parallel_leader_participation 配置参数, 其他规划器选项 作者:藤井正雄 审阅人:Euler Taveira 讨论:https://postgr.es/m/e87b4ddf-1498-2850-bf55-519df3928fd4@oss.nttdata.com https://git.postgresql.org/pg/commitdiff/e522024bd8dd28a0f13dcccfd39170698f45c939

  • 文档:添加有关准备好的语句的重新分析和重新规划的描述。每当语句中使用的数据库对象发生了定义更改,或者它们的规划器统计信息已更新时,都会对准备好的语句进行重新分析和重新规划。前者以前已经记录在案,但后者以前没有。本次提交将有关后一种情况的描述添加到文档中。作者:鳥越 篤史 审阅人:Andy Fan, 藤井正雄 讨论:https://postgr.es/m/3ac82f4817c9fe274a905c8a38d87bd9@oss.nttdata.com https://git.postgresql.org/pg/commitdiff/4a36eab79a193700b7b65baf6c09c795c90c02c6

  • pg_stat_statements:跟踪 pgss 条目被释放的次数。如果观察到的不同语句多于 pg_stat_statements.max,则会释放关于执行次数最少的语句的 pg_stat_statements 条目。本次提交使我们能够跟踪这些条目被释放的总次数。该数字可以在本次提交添加的 pg_stat_statements_info 视图中查看。在调整 pg_stat_statements.max 参数时,它很有用。如果它很高,即条目释放非常频繁,这可能会导致性能下降,我们可以增加 pg_stat_statements.max 以避免这些频繁的释放。pg_stat_statements_info 视图旨在显示 pg_stat_statements 模块本身的统计信息。目前,它只有一个名为“dealloc”的列,表示条目被释放的次数。但是即将到来的补丁将向该视图添加其他列(例如,上次重置 pg_stat_statements 统计信息的时间)。作者:桂 裕太, 清野 祐貴 审阅人:藤井正雄 讨论:https://postgr.es/m/0d9f1107772cf5c3f954e985464c7298@oss.nttdata.com https://git.postgresql.org/pg/commitdiff/9fbc3f318d039c3e1e8614c38e40843cf8fcffde

  • 在 worker_spi 中使用标准的 SIGHUP 和 SIGTERM 信号处理程序。以前,worker_spi 对 SIGHUP 和 SIGTERM 使用其自定义信号处理程序。本次提交使 worker_spi 使用标准信号处理程序,以简化代码。请注意,die() 用作 worker_spi 中的标准 SIGTERM 信号处理程序,而不是 SignalHandlerForShutdownRequest() 或 bgworker_die()。以前的退出处理只能从主循环内部退出,而不能从它调用的后端代码内部退出。这就是为什么这里需要使用 die() 的原因,以便 worker_spi 可以在执行查询时响应 SIGTERM 信号。也许我们可以说 worker_spi 在查询执行期间无法响应 SIGTERM 是一个错误。但是由于 worker_spi 只是后台工作代码的示例,因此我们不进行向后移植。感谢 Craig Ringer 报告和调查此问题。作者:Bharath Rupireddy 审阅人:藤井正雄 讨论:https://postgr.es/m/CALj2ACXDEZhAFOTDcqO9cFSRvrFLyYOnPKrcA1UG4uZn9hUAVg@mail.gmail.com 讨论:https://postgr.es/m/CAGRY4nxsAe_1k_9g5b47orA0S011iBoHsXHFMH7cg7HV0O1bwQ@mail.gmail.com https://git.postgresql.org/pg/commitdiff/2a0847720ae6fa4180bfbe404e4e6bbf2f737708

  • 在 test_shm_mq worker 中使用标准的 SIGTERM 信号处理程序 die()。以前,test_shm_mq worker 使用 die() 的精简版本作为 SIGTERM 信号处理程序。本次提交使其改用 die(),以简化代码。就代码而言,die() 和以前使用的精简版本之间的区别在于信号处理程序是否可以直接调用 ProcessInterrupts()。但是这种差异在后台工作进程中不存在,因为在 bgworker 中,DoingCommandRead 标志永远不会为真,并且 die() 永远不会直接调用 ProcessInterrupts()。因此,test_shm_mq worker 可以像其他 bgworker 进程(例如,逻辑复制应用启动器或 autoprewarm worker)当前所做的那样安全地使用 die()。感谢 Craig Ringer 报告和调查此问题。作者:Bharath Rupireddy 审阅人:藤井正雄 讨论:https://postgr.es/m/CAGRY4nxsAe_1k_9g5b47orA0S011iBoHsXHFMH7cg7HV0O1bwQ@mail.gmail.com https://git.postgresql.org/pg/commitdiff/ef848f4ac5a4bd072c65867186268775acfb4298

  • 修复 CLUSTER 报告的扫描块数的进度。以前,pg_stat_progress_cluster 视图将堆扫描中的当前块号报告为已扫描的堆块数 (即 heap_blks_scanned)。当启用 synchronize_seqscans 时,此报告的数字可能不正确,因为它允许堆扫描从中间的块开始。当堆扫描环绕时,这可能会导致 heap_blks_scanned 列中出现环绕。本次提交通过计算从堆扫描开始的块到扫描中的当前块的块数,并在 heap_blks_scanned 列中报告该数字来修复此错误。此外,在 pg_stat_progress_cluster 视图中,如果扫描的最后一页为空,则 heap_blks_scanned 以前在堆扫描阶段结束时无法达到 heap_blks_total。本次提交通过在堆扫描阶段结束时手动将 heap_blks_scanned 更新为与 heap_blks_total 相同的值来修复此错误。向后移植到引入 pg_stat_progress_cluster 视图的 v12。报告人:Matthias van de Meent 作者:Matthias van de Meent 审阅人:藤井正雄 讨论:https://postgr.es/m/CAEze2WjCBWSGkVfYag001Rc4+-nNLDpWM7QbyD6yPvuhKs-gYQ@mail.gmail.com https://git.postgresql.org/pg/commitdiff/3df51ca8b39f08ef19a77b9776f2547c86b70c49

Andrew Gierth 提交

  • 在 ExecSupportsMarkRestore 中正确检查索引标记/还原。以前,此代码假定所有 IndexScan 节点都支持标记/还原,但事实并非如此,因为它取决于可选的索引 AM 支持函数。这可能会在没有排序键的合并连接的罕见边缘情况下导致关于缺少支持函数的错误,在这种情况下,一个无序的非 btree 索引扫描被放置在没有保护 Materialize 节点的内部路径上。(通常,合并连接需要有序输入的事实会避免此错误。)由于此错误很古老,因此一直向后移植。根据 Eugen Konkov 在 IRC 上的报告。讨论:https://postgr.es/m/87o8jn50be.fsf@news-spur.riddles.org.uk https://git.postgresql.org/pg/commitdiff/660b89928d18386de7755565c008439ae75d1218

Amit Kapila 提交

Thomas Munro 提交

Peter Eisentraut 提交

Noah Misch 推送了

待处理的补丁

Amul Sul 提交了另一个补丁修订版,以实现 ALTER SYSTEM READ {ONLY|WRITE}。

Daniel Vérité 提交了另一个补丁修订版,以在 libpq 中实现批处理/管道处理。

Justin Pryzby 和 Tomáš Vondra 交换了补丁,以实现表达式的扩展统计信息。

Álvaro Herrera 提交了另一个补丁修订版,以避免 brin 汇总中的错误,当索引同时被重新索引时可能会发生这种情况。

Álvaro Herrera 提交了一个补丁,以修复一个错误,该错误表现为 walsender 在关闭期间卡住且关闭,从而阻止 postmaster 通过检查 XLogRecPtrIsInvalid(replicatedPtr) 是否为 true 来完成关闭循环。

Zeng Wenjing 提交了三个全球临时表实现补丁的修订版。

Bharath Rupireddy 提交了两个 postgres_fdw 连接缓存实现补丁的修订版 - 导致远程会话在本地会话退出之前一直存在。

Bharath Rupireddy 和 Heikki Linnakangas 交换了补丁,使其可以在 CREATE TABLE AS 中使用并行插入,在这样做是安全的情况下。

Tomáš Vondra 提交了另一个补丁修订版,以使用非易失性存储作为 WAL 缓冲区。

Takayuki Tsunakawa 提交了两个用于外表批量插入的补丁的修订版。

Justin Pryzby 提交了另一个补丁修订版,以允许 INSERT SELECT 使用 BulkInsertState,使 INSERT SELECT 使用 multi_insert,并动态切换到 multi-insert 模式。

Michaël Paquier 提交了另一个补丁修订版,以重构 SHA2 和加密哈希 API,将 cryptohash_openssl.c 切换为使用 EVP,并使 pgcrypto 对 EVP 使用核心资源所有者工具。

Justin Pryzby 提交了另一个补丁修订版,以允许 CLUSTER、VACUUM FULL 和 REINDEX 动态更改表空间。

Keisuke Kuroda 提交了一个补丁,通过减少 ri SPI 计划哈希的大小,修复了在具有 FK 的分区表上表现为巨大内存消耗的错误。

Konstantin Knizhnik 提交了两个 libpq 自定义压缩实现补丁的修订版。

Takamichi Osumi 提交了另一个补丁修订版,使其可以禁用 WAL 日志记录以加快批量加载速度。

Nathan Bossart 提交了两个向 CHECKPOINT 添加 FAST 选项的补丁修订版。

Amit Kapila、Ajin Cherian 和 Peter Smith 交换了实现两阶段事务逻辑解码的补丁。

David Rowley 提交了一个补丁,将 pg_attribute_cold 和 pg_attribute_hot 定义为 minGW 8.1 上的空宏,以避免该工具链中的错误。

Li Japin 提交了另一个补丁修订版,允许通过新的 GUC idle_session_timeout 来终止空闲会话,并减少调用 setitimer() 的频率。

Euler Taveira de Oliveira 提交了一个补丁,将逻辑解码消息添加到 pgoutput,在流式传输时将 xid 添加到消息,解释为什么忽略 LOGICAL_REP_MSG_MESSAGE,简化 parse_output_parameters 函数以采用整个 PGOutputData 而不是零碎的数据,调整消息的 in_streaming,并彻底检查测试以考虑所有这些。

Peter Eisentraut 提交了另一个补丁修订版,以添加 result_format_auto_binary_types 设置。

Michaël Paquier 提交了另一个补丁修订版,以修复当 pg_database 元组包含 toast 属性时,vac_update_datfrozenxid 将引发“错误的元组长度”的问题。

Kyotaro HORIGUCHI 提交了另一个补丁修订版,以修复几何类型中 NaN 的处理。

Masahiko Sawada 提交了另一个补丁修订版,以启用多个外服务器的两阶段提交。

Daniel Gustafsson 提交了另一个补丁修订版,使其可以在线启用和禁用数据校验和。

Alexander Korotkov 提交了一个补丁,以实现用于在自动化测试套件中重现并发问题的内置基础设施。该基础设施的核心是“停止事件”,这些事件是代码中的特殊位置,在某些条件下可以停止执行。

Peter Eisentraut 提交了另一个补丁修订版,以按照 SQL 标准在公共表表达式中实现 SEARCH 和 CYCLE 子句。

Thomas Munro 提交了另一个补丁修订版,以使闩锁发送更少的信号,使用 SIGURG 而不是 SIGUSR1 用于闩锁,使用 signalfd 用于 epoll 闩锁,并使用 EVFILT_SIGNAL 用于 kqueue 闩锁。

Tom Lane 提交了另一个补丁修订版,以在查询结束时报告 GUC 更改。

Peter Smith 提交了一个使用枚举表示消息类型的补丁。

David Zhang 提交了三个补丁修订版,以将表访问方法作为 pgbench 的一个选项添加。

Anastasia Lubennikova 提交了一个处理传递给 normal_rand() 的负数元组数量的补丁。

Peter Eisentraut 提交了一个 pageinspect 补丁,将块号参数更改为 bigint。

Bertrand Drouvot 提交了四个补丁修订版,使其可以通过新的 GUC log_recovery_conflict_waits 来记录备用恢复冲突等待。

Kasahara Tatsuhito 提交了三个补丁修订版,以修复大量表导致的自动清理问题。

Masahiko Sawada 提交了另一个补丁修订版,以将基本统计信息添加到 pg_stat_wal 视图。

Takamichi Osumi 提交了一个补丁,以防止在 wal_level=minimal 时,归档恢复遇到来自 WAL 的情况,并且服务器继续工作,这种情况可能会导致数据未被复制。

Euler Taveira de Oliveira 提交了一个补丁,用于在后端崩溃后删除临时文件,以避免由多次崩溃导致的 ENOSPC 条件。

Pavel Borisov 提交了另一个补丁修订版,以使用 SP-GiST 索引访问方法实现覆盖索引。

Kirk Jamison 提交了另一个补丁修订版,以防止在恢复期间在 smgrextend() 中使块无效,在 smgrnblocks() 中为缓存块添加一个 bool 参数,通过避免在关系足够小或要无效的总块数低于完全扫描阈值时扫描整个缓冲区池,来减少恢复期间 DropRelFileNodeBuffers() 的大小,并且在关系足够小或要无效的块数低于完全扫描阈值时,使 DropRelFileNodesAllBuffers() 跳过在恢复期间耗时的整个缓冲区池扫描。

Krunal Bauskar 和 Alexander Korotkov 交换了补丁,以改进 ARM 上的自旋锁实现。

Arne Roland 提交了三个补丁修订版,以确保重命名分区表上的触发器也会重命名分区上的触发器。

Bharath Rupireddy 提交了一个补丁,以修复 pg_workers 关闭的错误消息,使其谈论后台工作进程,而不是适用于其他情况的不存在的连接。

Stephen Frost 提交了另一个补丁修订版,如果需要,将 GSS 信息添加到连接授权日志消息中。

Michael Banck 提交了一个补丁,以阐明 CREATEROLE 角色可以授予默认角色的事实。

Ashutosh Bapat 和 Alexander Korotkov 交换了补丁,以使其易于打印 LSN。

Andreas Karlsson 提交了一个 PoC 补丁,以修复 btree_gist 提供的扩展中丢弃网络掩码信息导致 inet/cidr 支持损坏的问题。

Pavel Stěhule 和 Justin Pryzby 交换了补丁,使其可以从文件中读取 pg_dump 要转储的表。

Justin Pryzby 提交了另一个补丁修订版,以使 CLUSTER ON 成为 pg_dump 中的单独转储对象,为分区表实现 CLUSTER,将 indisclustered 的更改传播到子/父级,使父索引无效,在附加时使父索引集群无效,并在聚集的分区索引的子级上保留 indisclustered。

Simon Riggs 提交了另一个补丁修订版,以向 VACUUM 添加 FAST_FREEZE 选项。

Simon Riggs 提交了一个补丁,以实现惰性 VACUUM 的 one_freeze 然后 max_freeze。

Justin Pryzby 提交了另一个补丁修订版,以使 pg_ls_* 显示目录和共享文件集。

Justin Pryzby 提交了另一个补丁修订版,以删除对 pg_dump 8.1 之前切换行为的引用。

Justin Pryzby 提交了另一个补丁修订版,以允许在分区表上同时 CREATE INDEX CONCURRENTLY,为更多集成添加 SKIPVALID 标志,并使 ReindexPartitions() 设置 indisvalid。

Paul A Jungwirth 提交了两个多范围实现补丁的修订版。

Dean Rasheed 提交了另一个补丁修订版,以改进 OR 子句的估计。

James Coleman 提交了一个补丁,如果收集合并路径没有充分排序,则会报错。

James Coleman 提交了另一个补丁修订版,以确保 generate_useful_gather_paths 不会跳过未排序的子路径,强制执行 generate_useful_gather_paths 中路径键的并行安全性,禁止主动排序中的 SRF,删除不必要的易失性 expr 目标搜索,并在 prepare_sort_from_pathkeys 中记录 find_em_expr_usable_for_sorting_rel。