2025年9月25日: PostgreSQL 18 发布!

PostgreSQL 周刊新闻 - 2021年2月7日

发布于 2021-02-10,作者:PWN
PWN

PostgreSQL 周刊新闻 - 2021年2月7日

pg_probackup 2.4.9 发布,这是一个用于管理 PostgreSQL 数据库集群备份和恢复的工具。https://github.com/postgrespro/pg_probackup/releases/tag/2.4.9

pitrery 3.3 发布,这是一组用于管理 PostgreSQL PITR 备份的 Bash 脚本。http://dalibo.github.io/pitrery/

本周人物:https://postgresql.life/post/alexander_sosna/

PostgreSQL 产品新闻

二月 PostgreSQL 作业

https://archives.postgresql.org/pgsql-jobs/2021-02/

PostgreSQL 相关新闻

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

本周 PostgreSQL 周报由 David Fetter 提供。

请在太平洋标准时间(PST8PDT)周日晚上3:00之前将新闻和公告发送至 david@fetter.org。

已应用补丁

Alexander Korotkov 提交了

Tom Lane 提交

  • 修复新 jsonbsubs 代码中的可移植性问题。在 sizeof(Datum) > sizeof(Oid) 的机器上(即任何 64 位平台),如果 nupper 为奇数,则之前的代码会计算出错误的 workspace->index 指针。在不允许非对齐访问的架构上,将导致失败。这似乎解释了为什么 thorntail 不满意,而其他构建农场成员却没有。 https://git.postgresql.org/pg/commitdiff/7c5d57caed4d8af705d0cc3131d0d8ed72b7a41d

  • 修改 make_partition_pruneinfo 以不再使用其 partitioned_rels 输入。事实证明,allpaths.c 中 partitioned_rels 的计算是错误的,有时会省略相关的非叶分区,从而允许提交 a929e17e5a8 添加的断言触发。与其修复该问题,不如彻底删除这些字段。我们直到 create_plan 时才真正需要这些信息,一次性计算所选计划的成本应低于考虑每个 append path 的成本。作为第一步,让 make_partition_pruneinfo 自己收集相关的分区表。通过使用 AppendRelInfo 链接从子表向上遍历到父表,这并不难。同时,进行一些小的风格改进;主要是,不要将“Relids”别名用于非规划器考虑的任何关系的身份的位图集。也尝试更好地记录逻辑。不进行向后移植,因为在 a929e17e5a8 之前似乎没有实时问题。也没有新的回归测试;此补丁系列的末尾将不再存在错误所在的 code,因此纪念此问题似乎有些无意义。Tom Lane 和 David Rowley,根据 Andreas Seltenreich 和 Jaime Casanova 的报告。讨论:https://postgr.es/m/87sg8tqhsl.fsf@aurora.ydns.eu 讨论:https://postgr.es/m/CAJKUy5gCXDSmFs2c=R+VGgn7FiYcLCsEFEuDNNLGfoha=pBE_g@mail.gmail.com https://git.postgresql.org/pg/commitdiff/fb2d645dd53ff571572d830e830fc8c368063802

  • 移除对 partitioned_rels 列表的偶然依赖。事实证明,allpaths.c 中 [Merge]AppendPath.partitioned_rels 的计算是错误的,有时会省略相关的非叶分区,从而允许提交 a929e17e5a8 添加的断言触发。与其修复该问题,不如彻底删除这些字段。我们直到 create_plan 时才真正需要这些信息,一次性计算所选计划的成本应低于考虑每个 append path 的成本。前面的两个提交消除了对 partitioned_rels 值的所有使用;此提交仅机械地删除字段和计算它们的 code。讨论:https://postgr.es/m/87sg8tqhsl.fsf@aurora.ydns.eu 讨论:https://postgr.es/m/CAJKUy5gCXDSmFs2c=R+VGgn7FiYcLCsEFEuDNNLGfoha=pBE_g@mail.gmail.com https://git.postgresql.org/pg/commitdiff/5076f88bc985a7728eea337cbabae0e034b064b1

  • 移除 [Merge]AppendPath.partitioned_rels。事实证明,allpaths.c 中 [Merge]AppendPath.partitioned_rels 的计算是错误的,有时会省略相关的非叶分区,从而允许提交 a929e17e5a8 添加的断言触发。与其修复该问题,不如彻底删除这些字段。我们直到 create_plan 时才真正需要这些信息,一次性计算所选计划的成本应低于考虑每个 append path 的成本。前面的两个提交消除了对 partitioned_rels 值的所有使用;此提交仅机械地删除字段和计算它们的 code。讨论:https://postgr.es/m/87sg8tqhsl.fsf@aurora.ydns.eu 讨论:https://postgr.es/m/CAJKUy5gCXDSmFs2c=R+VGgn7FiYcLCsEFEuDNNLGfoha=pBE_g@mail.gmail.com https://git.postgresql.org/pg/commitdiff/f003a7522bfa11177dc52c65eb97273a1057dfba

  • 文档:在正则表达式匹配的初始示例中再努力一些。在 POSIX 正则表达式的开头和结尾编写不必要的 '.*' 除了让读者对是否需要之外,并没有太多作用。使表 9.16 中的示例更现实一些,并尝试将下一组示例变成独立的内容。根据 rmzgrimes 的抱怨。向 v13 向后移植,因为它很容易。讨论:https://postgr.es/m/161215841824.14653.8969016349304314299@wrigleys.postgresql.org https://git.postgresql.org/pg/commitdiff/9522085ac917af66dba29939af328ae67300f10a

  • 修复 contrib/auto_explain 中存在已久的内存泄漏。ExecutorEnd hook 在一个可能非常长寿的上下文中被调用,而不是执行器的自己的每个查询上下文,正如我认为我们一直在假设的那样。因此,在生成 EXPLAIN 输出时产生的任何临时数据都可能在多个查询中累积。这可能导致严重的泄漏(如果 log_nested_statements 为开启状态),即使没有它,我也很惊讶之前没有人抱怨过。为了修复,只需切换到执行器的上下文,以便我们分配的任何内容都会在 standard_ExecutorEnd 释放执行器状态时被释放。我们不妨也移除 code 的零售 pfree 解释输出字符串;这对于需求来说非常不足。Japin Li,根据 Jeff Janes 的报告。此 bug 历史悠久,因此向所有支持的分支向后移植。讨论:https://postgr.es/m/CAMkU=1wCVtbeRn0s9gt12KwQ7PLXovbpM8eg25SYocKW3BT4hg@mail.gmail.com https://git.postgresql.org/pg/commitdiff/5c0f7cc5442108e113d4fb88c952329b467e2c6a

  • 移除 plpgsql 语句计数器对 FOR 循环的额外递增。这在内部语句编号中留下了空白,这并非极其有害(否则我们早就发现了),但也不是很好。bbd5c207b 中的疏忽;向 v12(该提交进入的地方)向后移植。Pavel Stehule 讨论:https://postgr.es/m/CAFj8pRDXyQaJmpotNTQVc-t-WxdWZC35V2PnmwOaV1-taidFWA@mail.gmail.com https://git.postgresql.org/pg/commitdiff/dfcc46fe3030b0114b7a5715d5fa40819561c04b

  • 文档:更一致地识别可能为零的 OID 目录列。并非所有可能包含零(表示“无引用”)的 OID 引用列都在 catalogs.sgml 中显式标记。修复此问题,并尝试使样式更加一致——例如,在这些情况下始终写“zero”而不是“0”。Joel Jacobson 和 Tom Lane 讨论:https://postgr.es/m/4ed9a372-7bf9-479a-926c-ae8e774717a8@www.fastmail.com https://git.postgresql.org/pg/commitdiff/479331406e8403cc2e75d1082f8c613e7669c113

  • 在目录中构建一些关于外键关系的知识。这遵循了提交 dfb75e478 的精神,该提交创建了主键和唯一性约束以提高系统目录上施加的约束的可见性。虽然我们的目录包含许多类似外键的关系,但它们并不完全遵循 SQL 语义,因为遗漏引用的约定是写入零而不是 NULL。此外,我们有一些情况,其中包含数组,每个数组的元素都应该是一个 FK 引用;SQL 没有模型化这种情况的方法。因此,我们无法创建实际的外键约束来描述这种情况。尽管如此,我们还是可以收集和使用关于这些关系的信息。因此,此补丁向目录头文件添加了注释以声明外键关系。(BKI_LOOKUP 注释涵盖了简单情况,但我们以前没有区分哪些此类列允许包含零;我们还需要新的标记来表示多列 FK 引用。)然后,Catalog.pm 和 genbki.pl 被教导将此信息收集到一个新生成的头文件“system_fk_info.h”的表中。目前该文件的唯一用户是一个新的 SQL 函数 pg_get_catalog_foreign_keys(),它将该表暴露给 SQL。oidjoins 回归测试被重写,以使用 pg_get_catalog_foreign_keys() 来查找要检查的列。除了消除对该测试脚本手动维护的需要之外,它还可以涵盖旧的基于 findoidjoins 的实现所检查的许多关系。(截至此提交,测试检查了 217 个关系,而以前是 181 个。)讨论:https://postgr.es/m/3240355.1612129197@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/62f34097c88433ef1f3de604714fe7e7024f2fdf

  • 弃用 findoidjoins。在提交 62f34097c 之后,我们不再需要此工具。讨论:https://postgr.es/m/3240355.1612129197@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/ef3d4613c0204ab2b87ffa7e8e9551d74f932816

  • 移除对命名空间和角色 OID 的特殊 BKI_LOOKUP 魔法。现在提交 62f34097c 已将 BKI_LOOKUP 注释附加到目录中的所有命名空间和角色 OID 列,因此没有真正的理由保留 PGNSP 和 PGUID 符号魔法。通过使用 genbki.pl 的正常模式来实现这些查找,从而摆脱它们。这意味着在目录头文件中,BKI_DEFAULT(PGNSP) 变为 BKI_DEFAULT(pg_catalog),这似乎更加透明。BKI_DEFAULT(PGUID) 变为 BKI_DEFAULT(POSTGRES),这可能不太透明;但你可以查看 pg_authid.dat 来发现 POSTGRES 是引导超级用户的 nonce 名称。此更改还意味着,如果我们以后需要在初始目录数据中交叉引用除 POSTGRES 之外的任何其他内置角色,或者除了 pg_catalog 之外的任何其他内置模式,我们都可以做到。这里没有 catversion 升级,因为 postgres.bki 的内容实际上没有改变。讨论:https://postgr.es/m/3240355.1612129197@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/ba0faf81c65ac99dd42ce192f3257d4d2231ea50

  • 避免在预备语句中回滚时崩溃。如果使用 portal 来运行包含 ROLLBACK 的预备 CALL 或 DO 语句,PortalRunMulti 会失败,因为 rollback 会清除 portal 的语句列表。(由于语法不允许在 PREPARE 中使用 CALL/DO,因此获得此状态的唯一简单方法是通过扩展查询协议,该协议将所有输入视为预备语句。)由于资源管理问题,很难避免过早重置 portal,因此通过让 PortalRunMulti 警惕 portal->stmts 突然变为 NIL 来解决此问题。仅在 v13 和 HEAD 中观察到崩溃(这是由于 commit 1cff1b95a 添加了对 portal->stmts 的额外处理)。但即使在那之前,code 也触及了一个 portal 不再拥有任何控制权的 List。在当前测试用例中,List 仍然存在,因为对缓存计划有另一个引用计数;但我远不相信在控制权返回 PortalRunMulti 之前缓存计划被删除是不可能的。因此,向 v11(嵌套事务被添加的地方)向后移植。Thomas Munro 和 Tom Lane,根据 James Inform 的 bug #16811。讨论:https://postgr.es/m/16811-c1b599b2c6c2d622@postgresql.org https://git.postgresql.org/pg/commitdiff/9624321ec502f4e4f4722290b358694049447f95

  • 修复 YA 增量排序 bug。如果 switchToPresortedPrefixMode() 检测到批处理边界恰好在完整排序组的最后一个元组处,它会做错事。最初报告的症状是“在有界排序中检索了过多元组”错误,但此处添加的测试用例在没有此补丁的情况下会默默地给出错误答案。我(tgl)不满意在没有增量排序作者审查的情况下提交此补丁,但他们似乎失踪了,我们正面临发布截止日期。反正这确实使一些情况有所改善。根据 Yoran Heling 的 bug #16846。向 v13(增量排序被引入的地方)向后移植。Neil Chen 讨论:https://postgr.es/m/16846-ae49f51ac379a4cb@postgresql.org https://git.postgresql.org/pg/commitdiff/82e0e29308dedbc6000e73329beb112ae7e1ad39

  • 修复 HashAgg 选择性列溢出逻辑中的 bug。提交 230230223 教会了 nodeAgg.c,当从内存中溢出元组以进行超额哈希聚合时,它只需要溢出节点 tlist 和 quals 中引用的输入列。不幸的是,这是错误的:我们还必须保存分组列。错误在常见情况下被掩盖,因为分组列也出现在 tlist 中,但这不一定成立。看起来不成立的主要计划类别来自 semijoins(“WHERE outercol IN (SELECT innercol FROM innertable)”),其中 innercol 需要隐式提升才能与 outercol 进行比较。分组列将是“innercol::promotedtype”,但该表达式并未出现在 Agg 节点自身的 tlist 和 quals 中;tlist 中只找到裸“innercol”。我花了相当多的时间寻找一个合适的回归测试用例,但没有太大成功。如果 innercol 的不同值足够多以至于发生溢出,规划器往往会偏爱非 HashAgg 计划,至少对于回归测试中大小合理的规模是这样。所以,没有新的回归测试。然而,此补丁确实明显修复了最初报告的测试用例。根据 s.p.e (at) gmx-topmail.de 的报告。向 v13(有问题的 code 进入的地方)向后移植。讨论:https://postgr.es/m/trinity-1c565d44-159f-488b-a518-caf13883134f-1611835701633@3c-app-gmx-bap78 https://git.postgresql.org/pg/commitdiff/0ff865fbe50e82f17df8a9280fa01faf270b7f3f

  • 禁止将继承的子表转换为视图。通常,继承树的成员必须是普通表(或在较新版本中是外部表)。ALTER TABLE INHERIT 拒绝创建在任一端是视图的继承关系。当 DefineQueryRewrite 尝试将关系转换为视图时,它已经有检查禁止这样做,以防止分区父表或子表以及传统继承父表……但它忽略了检查传统继承子表未被转换。由于规划器假定任何继承子表都是表,这导致创建尝试在视图上执行物理扫描的计划,从而导致失败(在最近的版本中甚至崩溃)。人们可以设想通过正常展开视图来支持这种情况,但由于 rewriter 在规划器执行继承展开之前运行,因此需要进行一些非常基础的重构才能实现。系统中的其他许多部分可能也无法很好地处理这种情况。现在,只需禁止它。根据 Yang Lin 的 bug #16856。向所有支持的分支向后移植。(在 v10 之前的版本中,这包括向后移植 commit 501ed02cf 中添加 has_superclass() 的部分。也许缺乏该基础设施部分地解释了缺失的检查。)讨论:https://postgr.es/m/16856-0363e05c6e1612fd@postgresql.org https://git.postgresql.org/pg/commitdiff/dd705a039f6cd41921529fa4e971d70b224be052

  • 在复制 CTE 列表到规则时传播 CTE 属性标志。rewriteRuleAction() 忽略了这一步,尽管它小心地传播了其他类似的标志,如 hasSubLinks 或 hasRowSecurity。忽略 hasRecursive 的传递目前只是化妆品,但忽略 hasModifyingCTE 是一个实际的 bug,因为执行器肯定会查看它。提议的测试用例目前只失败到 v10,但由于执行器在 9.x 中也检查 hasModifyingCTE,我怀疑可以设计一个测试用例,该测试用例在旧分支中也会失败。鉴于发布截止日期的临近,我将不花时间寻找更好的测试。Greg Nancarrow 的报告和补丁,我的化妆品修改。讨论:https://postgr.es/m/CAJcOf-fAdj=nDKMsRhQzndm-O13NY4dL6xGcEvdX5Xvbbi0V7g@mail.gmail.com https://git.postgresql.org/pg/commitdiff/ed290896335414c6c069b9ccae1f3dcdd2fac6ba

  • 撤销“在复制 CTE 列表到规则时传播 CTE 属性标志”。这撤销了 commit ed290896335414c6c069b9ccae1f3dcdd2fac6ba 和等效的后端分支提交。问题比我想象的要复杂,而且并非新问题,因此在发布截止日期前不适合处理。我们将稍后仔细考虑如何处理。讨论:https://postgr.es/m/CAJcOf-fAdj=nDKMsRhQzndm-O13NY4dL6xGcEvdX5Xvbbi0V7g@mail.gmail.com https://git.postgresql.org/pg/commitdiff/d1d2979852538d7021cc809a40ef127d59747697

Michaël Paquier 提交

Peter Eisentraut 提交

Robert Haas 提交

Heikki Linnakangas 提交

  • 修复 COPY FROM 进度报告中的小错误。已处理的字节数被略微不正确地累积。在将更多数据加载到输入缓冲区后,我们将缓冲区中的字节数加到总和中。但在多字节字符或转义字符的情况下,缓冲区中可能会留下一些未处理的字节。这些字节被计算了两次。 https://git.postgresql.org/pg/commitdiff/2f86ab305e7fbc7b84960079551cf9cafd29684f

  • 修复 COPY FROM 中反斜杠转义多字节字符。如果在 TEXT 模式输入中用反斜杠转义了多字节字符,并且编码是仅客户端的编码之一,其中第一个字节之后的字节可以将 ASCII 字节“嵌入”到字符中,那么我们没有正确跳过字符。在反斜杠之后,我们只跳过了下一个字符的第一个字节,因此如果它是多字节字符,我们将尝试将其第二个字节作为单独的字符进行处理。如果它是具有特殊含义的字符之一,如 '\n'、'\r' 或另一个 '\',那将导致麻烦。一个例子是 Big5 编码中的字节序列 '\x5ca45c2e666f6f'。这应该是 [反斜杠][双字节字符][.][f][o][o],但因为双字节字符的第二个字节是 0x5c,我们错误地将其视为另一个反斜杠。并且因为下一个字符是点,我们将其解析为 copy 结束标记,并抛出“copy 结束标记损坏”错误。向所有支持的版本向后移植。审阅者:John Naylor, Kyotaro Horiguchi 讨论:https://postgresql.ac.cn/message-id/a897f84f-8dca-8798-3139-07da5bb38728%40iki.fi https://git.postgresql.org/pg/commitdiff/c444472af5c202067a9ecb0ff8df7370fb1ea8f4

Peter Geoghegan 提交

  • 加强 nbtree 页面删除。在索引删除的第二阶段添加了一些额外的防御性检查,以在 VACUUM 期间检测并报告索引损坏,并避免 VACUUM 在更多情况下卡住。在存在兄弟链接循环链的情况下,code 仍然不够健壮,尽管尚不清楚这是否真的重要。这是提交 3a01f68e 的后续工作。新的防御性检查依赖于这样的假设:任何给定时间只有一个 VACUUM 操作可以针对某个索引运行。移除一个旧的注释,该注释曾建议需要考虑多个并发 VACUUM。由于我们在其他几个地方也明显依赖于相同的假设,因此该问题现在似乎不太可能具有任何实际有效性。例如,有更新的注释在同一函数中(由 commit efada2b8e92 添加),它们也做出了相同的假设。还在相关 code 路径中添加了 CHECK_FOR_INTERRUPTS()。与 commit 3a01f68e 添加的注释相反,在这里处理中断实际上是可能的,至少在叶级别处理的常见情况下是这样。我们只在叶级别右侧移动时才持有 leafbuf/target 页面的 pin。不向后移植,因为在 commit 3a01f68e 添加到同一区域的 hardening 之后没有收到投诉。 https://git.postgresql.org/pg/commitdiff/c34787f910585f82320f78b0afd53a6a170aa229

  • 为保持一致性而重命名可移除 xid 函数。GlobalVisIsRemovableFullXid() 现在是 GlobalVisCheckRemovableFullXid()。这与处理 TransactionId 值的 FullTransactionId 等效函数的通用约定一致。它现在与附近的 GlobalVisCheckRemovableXid() 函数匹配,后者为使用 TransactionId 值的调用者执行相同的检查。commit dc7420c2c92 中的疏忽。讨论:https://postgr.es/m/CAH2-Wzmes12jFNDcVgpU89Vp=r6uLFrE-MT0fjSWGsE70UiNaA@mail.gmail.com https://git.postgresql.org/pg/commitdiff/617fffee8a6f350ff03069e2843ecd039ea06ccc

Thomas Munro 推送

Etsuro Fujita 推送

  • postgres_fdw:修复 estimate_path_cost_size() 中的断言。提交 08d2d58a2 添加了一个断言,该断言假设 estimate_path_cost_size() 中设置的用于外部关系的可检索行数估算值(它被重新用于对具有本地统计信息的预排序外部路径进行成本计算)至少为一行,但实际上并非如此,因为如果关系是一个元组数为 0 的外部表,则在不使用远程估算时,估算值会被设置为 0。根据 Alexander Lakhin 的 bug #16807。向 v13(上述提交进入的地方)向后移植。作者:Etsuro Fujita 审阅者:Kyotaro Horiguchi 讨论:https://postgr.es/m/16807-9fe4e08fbaa5c7ce%40postgresql.org https://git.postgresql.org/pg/commitdiff/5e7fa189ee92d5ecf42a295c336625d71bfe876d

Tatsuo Ishii 推送

待处理补丁

Kyotaro HORIGUCHI 提交了另一个补丁版本,该版本支持根据 X.509 规范使用 CRL(证书吊销列表)目录。

Zeng Wenjing 发送了另一个版本的补丁,用于实现全局临时表。

Scott Mead 提交了一个补丁,允许 cost_limit 被重新计算到最大允许值(当前为 10,000)。这使得用户可以通过设置 cost_limit 或 cost_delay 来重新加载配置更改,并且正在进行的 vacuum 可以被“加速”。

Paul Martinez 提交了另一个补丁版本,以澄清 pg_hba.conf 规则是拒绝了逻辑复制连接还是物理复制连接。

Thomas Munro 提交了另一个补丁版本,以在 Windows 上使用全局屏障修复 DROP TABLESPACE,并为 ProcSignalBarriers 使用条件变量。

Euler Taveira de Oliveira 提交了另一个补丁版本,以实现逻辑复制的行过滤。

Aleksey Kondratov 和 Michaël Paquier 交换了补丁,以支持 CLUSTER、VACUUM FULL 和 REINDEX 动态更改表空间。

Etsuro Fujita 提交了另一个补丁版本,以在 postgres_fdw 节点上实现异步 Append。

Hou Zhijie 和 Greg Nancarrow 交换了补丁,以添加一个 GUC 和能力来并行运行 DML。

Daniel Gustafsson 和 Jacob Champion 交换了补丁,以使 libpq 可以使用 NSS 作为 TLS 后端。

Heikki Linnakangas 提交了两个补丁版本,以更大块地执行 COPY FROM 编码转换。

Bruce Momjian 提交了另一个补丁版本,以实现密钥管理。

John Naylor 提交了两个补丁版本,以使用 SIMD 指令验证 UTF-8。

Amit Kapila、Peter Smith 和 Takamichi Osumi 交换了补丁,以使 tablesync 工作进程能够并行运行。

Pavel Stěhule 提交了另一个修订版的补丁,以实现模式变量。

Justin Pryzby 提交了一个补丁,以移除已弃用的 v8.2 containment operators。

Noah Misch 提交了一个补丁,以修复 KeepFileRestoredFromArchive() 和 restartpoint 之间的竞争。

Peter Eisentraut 提交了一个补丁,以通过添加显示具体数字的详细消息来改进新的 hash 分区边界检查错误消息。

Iwata Aya 提交了另一个补丁版本,以向 libpq 添加跟踪功能。

Julien Rouhaud 提交了三个补丁版本,以允许 HEAP_XMAX_LOCK_ONLY 和 HEAP_KEYS_UPDATED 组合。这种提示位组合以前被检测为一种损坏形式,但可以通过某些 SELECT ... FOR UPDATE 和 UPDATE 查询的组合获得。

Atsushi Torikoshi 和 Fujii Masao 交换了补丁,以向 pg_locks 添加 wait_start 列。

Greg Nancarrow 提交了两个补丁版本,以实现并行 INSERT ... SELECT。

Mark Rofail 提交了四个补丁版本,以实现外键数组。

Álvaro Herrera 提交了另一个补丁版本,以添加 pg_atomic_monotonic_advance_u64,并使用它使 LogwrtResult 成为原子操作。

David Rowley 提交了另一个补丁版本,以实现 Result Cache 节点并使用它来缓存子计划的结果。

Vigneshwaran C 提交了另一个补丁版本,以使超级用户能够使用新的 pg_print_backtrace() 函数打印指定 postgres 进程的 backtrace。

Peter Eisentraut 提交了一个补丁给 pg_dump,向 dump 函数的 *info 参数添加 const 装饰,以澄清它们不会修改该参数。

Daniel Gustafsson 提交了另一个补丁版本,以支持在运行实例中启用/禁用 checksum。

Peter Smith 提交了一个补丁,旨在修复一个表现为 DROP TABLE 破坏 sync worker relid 的 bug。

Heikki Linnakangas 提交了两个补丁版本,以移除对旧 FE/BE 协议版本 2 的服务器和 libpq 支持,并通过强制前瞻来简化 COPY FROM 解析。

Mark Dilger 提交了两个补丁版本,以实现 pg_amcheck。

Tomáš Vondra 发送了另一个补丁修订版,用于实现 BRIN 多范围索引。

Bharath Rupireddy 提交了另一个补丁给 postgres_fdw,该补丁在 FDW 和全局级别都添加了 keep_connections GUCs,指示不缓存连接。

David Rowley 提交了另一个补丁版本,以实现 tid 扫描,这与现有的 tid 探测不同。

Bertrand Drouvot 提交了另一个补丁修订版,用于在备用服务器上实现最小逻辑解码。

Bruce Momjian 提交了两个补丁版本,旨在修复一个表现为单个检查点中存在多个 full page writes 的 bug。

Amit Langote 提交了另一个补丁版本,以使继承树上的更新和删除能够更好地扩展。

Ronan Dunklau 和 Michaël Paquier 交换了补丁,以在 REINDEX CONCURRENTLY 上保留 attstattarget。

Shenhao Wang、Kyotaro HORIGUCHI 和 Hayato Kuroda 交换了补丁,以修复 ecpg connect 字符串中的解析错误。

Dilip Kumar 提交了三个补丁版本,以提供一个新接口来获取 recovery pause 状态。

Peter Smith 和 Amit Kapila 交换了补丁,以使 pg_replication_origin_drop 对并发 drop 安全。

Amit Langote 提交了另一个补丁版本,以在跨分区更新期间防止 FDW 插入批处理。

Li Japin 提交了另一版补丁,用于实现 ALTER SUBSCRIPTION ... ADD/DROP PUBLICATION。

Stephen Frost 提交了另一个补丁版本,以改进 auto-vacuum 和 auto-analyze 的日志记录。

Jacob Champion 提交了一个补丁来调整 Kerberos 测试。

Dilip Kumar 提交了两个补丁版本,以实现表的自定义压缩方法。

Masahiro Ikeda 提交了另一个补丁版本,以将 WAL write/fsync 统计信息添加到 pg_stat_wal。

Justin Pryzby 提交了另一个补丁版本,以使 CLUSTER 在分区索引上工作。

Heikki Linnakangas 提交了一个补丁,让 psql 的 \copy 以更大的块将数据发送到服务器。

Kazutaka Onishi 提交了两个补丁版本,以普遍实现外表上的 TRUNCATE,特别是在 PostgreSQL FDW 中。

Tom Lane 提交了另一个补丁版本,以修复 postgres_fdw 的 collation 处理。

Pavel Stěhule 提交了另一个补丁版本,以通过返回变量内容的文本值来增强 PL/pgsql 调试 API。

Haiying Tang 提交了一个补丁,以支持 psql 中对大写字符输入的 tab 补全。

Atsushi Torikoshi 提交了另一个补丁版本,以向 pg_stat_statements 添加 plan type。

Takamichi Osumi 提交了两个补丁版本,为 tablesync 工作进程添加测试。

Michaël Paquier 提交了另一个补丁版本,以向 VACUUM 添加 PROCESS_TOAST 选项。