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 带给您

请在太平洋标准时间/太平洋夏令时间周日下午 3:00 前将新闻和公告发送至 david@fetter.org。

应用的补丁

Alexander Korotkov 推送了

Tom Lane 推送了

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

  • 修改 make_partition_pruneinfo 以不使用其 partitioned_rels 输入。事实证明,allpaths.c 中 [Merge]AppendPath.partitioned_rels 的计算是有缺陷的,有时会忽略相关的非叶子分区,从而允许提交 a929e17e5a8 添加的断言触发。与其修复它,不如完全删除这些字段。我们直到创建计划时才真正需要这些信息,并且为所选计划计算一次应该比为我们考虑的每个附加路径都计算要便宜。作为第一步,教 make_partition_pruneinfo 自己收集相关的分区表。通过使用 AppendRelInfo 链接从子表向上遍历到父表并不难做到。同时,进行一些小的样式改进;主要是,不要将“Relids”用作非计划程序考虑的任何关系的标识的 bitmapset 的别名。也尝试更好地记录逻辑。没有后向移植,因为在 a929e17e5a8 之前似乎没有实际问题。也没有新的回归测试;该错误所在的代码将在该补丁系列的末尾消失,因此纪念该问题似乎有点毫无意义。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 添加的断言触发。与其修复它,不如完全删除这些字段。我们直到创建计划时才真正需要这些信息,并且为所选计划计算一次应该比为我们考虑的每个附加路径都计算要便宜。此补丁撤消了对 partitioned_rels 值的几个非常小的用法。createplan.c 正在测试 nil 值,以优化 make_partition_pruneinfo() 的准备工作。如果检查几乎是免费的,那么这是值得做的,但不值得花大力气来避免。create_append_path() 正在测试 nil 值,作为决定如何为 AppendPath 设置 ParamPathInfo 的一部分。我将其替换为检查 appendrel 的父 rel 是否已分区。这并不完全相同,但应该涵盖大多数情况。如果我们注意到任何有趣的优化损失,我们可以将其简化为当父级是 baserel 时始终使用更昂贵的方法。讨论: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 添加的断言触发。与其修复它,不如完全删除这些字段。我们直到创建计划时才真正需要这些信息,并且为所选计划计算一次应该比为我们考虑的每个附加路径都计算要便宜。前面的两次提交取消了对 partitioned_rels 值的所有使用;此提交只是机械地删除字段和计算它们的代码。讨论: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 钩子在一个可能持续很长时间的上下文中被调用,而不是我们认为的那样,在执行器自己的每个查询上下文中。因此,在生成 EXPLAIN 输出时产生的任何垃圾都可能在多个查询中累积。如果启用了 log_nested_statements,这会导致惊人的泄漏,即使没有启用,我也很惊讶之前没有人抱怨。为了修复这个问题,只需切换到执行器的上下文,这样当我们标准 ExecutorEnd 释放执行器状态时,我们分配的任何内容都将被释放。我们不妨也删除代码中零售的 pfree 对 explain 输出字符串的处理;这对于需求来说是可笑的不足。Japin Li,根据 Jeff Janes 的报告。这个错误很老了,因此反向移植到所有受支持的分支。讨论: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

  • 在目录中构建一些关于外键关系的知识。这遵循 commit 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。在 commit 62f34097c 之后,我们不再需要此工具。讨论:https://postgr.es/m/3240355.1612129197@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/ef3d4613c0204ab2b87ffa7e8e9551d74f932816

  • 删除命名空间和角色 OID 的特殊 BKI_LOOKUP 魔术。现在 commit 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 是引导超级用户的临时名称。此更改还意味着,如果我们曾经需要在初始目录数据中交叉引用除了 POSTGRES 之外的任何其他内置角色,或者除了 pg_catalog 之外的其他一些内置模式,我们可以直接这样做。这里没有 catversion 增加,因为 postgres.bki 的内容没有实际更改。讨论:https://postgr.es/m/3240355.1612129197@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/ba0faf81c65ac99dd42ce192f3257d4d2231ea50

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

  • 修复 YA 增量排序错误。如果 switchToPresortedPrefixMode() 在完整排序组的最后一个元组处检测到批处理边界,则会执行错误的操作。最初报告的症状是“在有界排序中检索的元组太多”错误,但是此处添加的测试用例在没有此补丁的情况下只会默默地给出错误的答案。我 (tgl) 对在没有增量排序作者审查的情况下提交此补丁感到不满意,但他们似乎都无法联系,而我们的发布期限很紧迫。无论如何,这确实可以使某些情况变得更好。根据 Yoran Heling 的错误 #16846。反向移植到引入增量排序的 v13。Neil Chen 讨论:https://postgr.es/m/16846-ae49f51ac379a4cb@postgresql.org https://git.postgresql.org/pg/commitdiff/82e0e29308dedbc6000e73329beb112ae7e1ad39

  • 修复 HashAgg 选择性列溢出逻辑中的错误。commit 230230223 教导 nodeAgg.c,当从内存中溢出超大的哈希聚合中的元组时,它只需要溢出节点 tlist 和 quals 中引用的输入列。不幸的是,这是错误的:我们还必须保存分组列。该错误在常见情况下被掩盖了,因为分组列也出现在 tlist 中,但这不一定是真的。其中不成立的计划的主要类别似乎来自半连接(“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。讨论: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 尝试将关系转换为视图时,它已经有检查禁止对分区父级或子级以及传统的继承父级进行此操作……但是它忽略了检查是否正在转换传统的继承子级。由于规划器假设任何继承子级都是一个表,因此这导致制定尝试对视图进行物理扫描的计划,从而导致失败(甚至在最近的版本中会导致崩溃)。可以想象尝试通过正常展开视图来支持这种情况,但是由于重写器在规划器进行继承展开之前运行,因此需要一些非常基本的重构才能使其成为可能。系统的其他许多部分可能也无法很好地处理这种情况。目前,只是禁止这样做。根据 Yang Lin 的错误 #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 则是一个实际的错误,因为执行器肯定会检查它。提议的测试用例仅在 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 属性标志”。此操作会还原提交 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,我们错误地将其视为另一个反斜杠。并且由于下一个字符是点号,我们将其解析为复制结束标记,并抛出“复制结束标记损坏”错误。回溯到所有受支持的版本。审核人: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 在更多情况下卡住。尽管尚不清楚这是否真的重要,但该代码在存在兄弟链接的循环链的情况下仍然不够健壮。这是对提交 3a01f68e 的后续工作。新的防御性检查依赖于这样一个假设,即对于一个索引,在任何给定时间最多只能运行一个 VACUUM 操作。删除一个旧的注释,该注释表明这里需要考虑多个并发 VACUUM。现在看来,这种担忧不太可能具有任何实际意义,因为我们显然在其他几个地方依赖于相同的假设。例如,在同一函数中出现(由提交 efada2b8e92 添加)的更新的注释也做出了相同的假设。还在相关代码路径中添加了 CHECK_FOR_INTERRUPTS()。与提交 3a01f68e 添加的注释相反,实际上可以在此处处理中断,至少在叶级进行处理的常见情况下是这样。我们仅在叶级向右步进时,才在 leafbuf/目标页面上保持锁定。由于在提交 3a01f68e 向同一区域添加增强功能后没有收到任何投诉,因此不进行回溯。https://git.postgresql.org/pg/commitdiff/c34787f910585f82320f78b0afd53a6a170aa229

  • 为保持一致性,重命名可移除的 xid 函数。GlobalVisIsRemovableFullXid() 现在为 GlobalVisCheckRemovableFullXid()。这与处理 TransactionId 值的函数的 FullTransactionId 等价物的通用约定一致。它现在与附近的 GlobalVisCheckRemovableXid() 函数匹配,后者对使用 TransactionId 值的调用者执行相同的检查。提交 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 的错误 #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 交换了补丁,以使可以将 NSS 用作 libpq 的 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 包含运算符。

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

Peter Eisentraut 发送了一个补丁,以通过添加详细消息来改进新的哈希分区边界检查错误消息,该消息显示了涉及的特定数字。

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 发送了另一个补丁修订版,以实现结果缓存节点,并使用相同的方法来缓存来自子计划的结果。

Vigneshwaran C 发送了另一个补丁修订版,以使用数据库超级用户可访问的新 pg_print_backtrace() 函数,使得可以打印指定 postgres 进程的回溯。

Peter Eisentraut 发送了一个补丁到 pg_dump,以向 dump 函数的 *info 参数添加 const 修饰符,以阐明它们不修改该参数。

Daniel Gustafsson 发送了另一个补丁修订版,以支持在运行的实例中启用/禁用校验和。

Peter Smith 发送了一个补丁,旨在修复一个错误,该错误表现为 DROP TABLE 会破坏同步工作进程 relid。

Heikki Linnakangas 发送了两个补丁修订版,以删除服务器和 libpq 对旧 FE/BE 协议版本 2 的支持,并通过强制预读来简化 COPY FROM 解析。

Mark Dilger 发送了两个补丁修订版,以实现 pg_amcheck。

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

Bharath Rupireddy 发送了另一个 postgres_fdw 的补丁修订版,该补丁在 FDW 和全局级别都添加了 keep_connections GUC,以指示不缓存连接。

David Rowley 发送了另一个补丁修订版,以实现 tid 扫描,这与现有的 tid 探测不同。

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

Bruce Momjian 发送了两个补丁修订版,旨在修复一个错误,该错误表现为在单个检查点中多次完全页面写入。

Amit Langote 发送了另一个补丁修订版,以使对继承树的更新和删除具有更好的可扩展性。

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

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

Dilip Kumar 发送了三个补丁修订版,以提供一个新接口来获取恢复暂停状态。

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

Amit Langote 发送了另一个补丁修订版,以防止跨分区更新期间的 FDW 插入批处理。

Li Japin 发送了另一个补丁修订版,以实现 ALTER SUBSCRIPTION ... ADD/DROP PUBLICATION。

Stephen Frost 发送了另一个补丁修订版,以改进自动清理和自动分析的日志记录。

Jacob Champion 发送了一个补丁,以调整 Kerberos 测试。

Dilip Kumar 发送了另外两个补丁修订版,以实现表的自定义压缩方法。

Masahiro Ikeda 发送了另一个补丁修订版,以将 WAL 写入/fsync 统计信息添加到 pg_stat_wal。

Justin Pryzby 发送了另一个补丁修订版,以使 CLUSTER 在分区索引上工作。

Heikki Linnakangas 发送了一个补丁,使 psql 的 \copy 以更大的块向服务器发送数据。

Kazutaka Onishi 发送了另外两个补丁修订版,以实现对外部表(一般情况下)以及在 PostgreSQL FDW 中使用 TRUNCATE。

Tom Lane 发送了另一个补丁修订版,以修复 postgres_fdw 排序规则处理。

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

Haiying Tang 发送了一个补丁,以支持 psql 中大写字符输入的制表符补全。

Atsushi Torikoshi 发送了另一个补丁修订版,以将计划类型添加到 pg_stat_statements。

Takamichi Osumi 发送了另外两个补丁修订版,以向 tablesync worker 添加测试。

Michaël Paquier 发送了另一个补丁修订版,以向 VACUUM 添加 PROCESS_TOAST 选项。