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

PostgreSQL 周刊新闻 - 2021 年 1 月 17 日

发布于 2021-01-18,作者 PWN
PWN

PostgreSQL 周刊新闻 - 2021 年 1 月 17 日

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

PostgreSQL 产品新闻

pspg 4.0.0,一个为 PostgreSQL 设计的页面查看器,已发布。https://github.com/okbob/pspg/releases/tag/4.0.0

DBConvert Studio 2.0,一个支持 PostgreSQL 的数据库迁移和同步套件,已发布。https://dbconvert.com/dbconvert-studio

一月份的 PostgreSQL 工作岗位

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

PostgreSQL 相关新闻

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

本周 PostgreSQL 周报由 David Fetter 提供。

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

已应用补丁

Thomas Munro 推送

Tom Lane 提交

  • 在 libpq 中,始终将新的错误消息附加到 conn->errorMessage。之前,我们有一个无组织的 printfPQExpBuffer 和 appendPQExpBuffer 调用混合,用于在 libpq 中报告错误。此提交建立了一个统一的规则,即应使用 appendPQExpBuffer[Str]。conn->errorMessage 仅在应用程序请求开始时重置,然后累积消息直到完成。我们可以移除不少于三种不同的临时机制,这些机制曾用于在一系列操作中实现错误消息的连接效果。虽然这在概念上使事情更加清晰,但主要原因是使多目标主机功能(已添加一段时间)更加安全。以前,在单个主机连接尝试期间发生的错误可能会覆盖之前尝试的记录。 (报告仍然不足,因为很难区分哪个主机发生了故障,但这似乎是另一个提交的问题。)当前,lo_import 和 lo_export 包含 "永远不要使用 printfPQExpBuffer" 规则的例外。如果更改它们,我们可能会在实际读写失败之前报告偶然的 lo_close 失败,这会令人困惑,尤其因为 lo_close 发生在主要失败之后。我们可以通过创建内部版本的 lo_close 来改进这一点,它不会重置 errorMessage;但我们也需要一个具有此功能的 PQfn() 版本,但目前看来并不值得付出努力。Discussion: https://postgr.es/m/BN6PR05MB3492948E4FD76C156E747E8BC9160@BN6PR05MB3492.namprd05.prod.outlook.com https://git.postgresql.org/pg/commitdiff/ffa2e4670123124b92f037d335a1e844c3782d3f

  • 允许 pg_regress.c wrapper 后处理测试结果文件。向 regression_main() 添加一个可选的回调函数,如果提供了该回调函数,则在尝试将其与期望结果文件进行比较之前,会对每个测试输出文件调用该回调函数。主程序和隔离测试程序(目前)不需要此功能。在 pg_regress_ecpg 中,添加一个过滤器,该过滤器会从 "无法连接" 错误报告中删除目标主机详细信息。截至此提交,此过滤器不执行任何操作,但下一个提交将需要它。长远来看,我们可能希望提供更通用、可能是基于模式的测试输出过滤机制。目前,这将解决当前问题。Discussion: https://postgr.es/m/BN6PR05MB3492948E4FD76C156E747E8BC9160@BN6PR05MB3492.namprd05.prod.outlook.com https://git.postgresql.org/pg/commitdiff/800d93f314b0f7c10193e48b259f87800cb85d84

  • 统一标识 libpq 连接失败报告中的目标主机。在套接字()调用之后发生的所有连接失败情况下,前缀 "could not connect to host-or-socket-path:",并删除附加到其中一些消息的临时服务器标识数据。这应该在多目标主机情况下产生更易于理解的错误报告,尤其是在出现非标准错误情况下(因为其中没有提供服务器标识信息)。例如,以前,具有错误端口号的连接尝试,如 "psql -p 12345 -h localhost,/tmp" 可能会产生 psql: error: could not connect to server: Connection refused Is the server running on host "localhost" (::1) and accepting TCP/IP connections on port 12345? could not connect to server: Connection refused Is the server running on host "localhost" (127.0.0.1) and accepting TCP/IP connections on port 12345? could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.12345"? 现在看起来像 psql: error: could not connect to host "localhost" (::1), port 12345: Connection refused Is the server running on that host and accepting TCP/IP connections? could not connect to host "localhost" (127.0.0.1), port 12345: Connection refused Is the server running on that host and accepting TCP/IP connections? could not connect to socket "/tmp/.s.PGSQL.12345": No such file or directory Is the server running locally and accepting connections on that socket? 这需要调整一些回归测试,以允许连接失败消息内容的变化。Discussion: https://postgr.es/m/BN6PR05MB3492948E4FD76C156E747E8BC9160@BN6PR05MB3492.namprd05.prod.outlook.com https://git.postgresql.org/pg/commitdiff/52a10224e3cc1d706ba9800695f97cb163b747d5

  • 在 "无法立即连接" 失败后尝试下一个主机。如果服务器返回 ERRCODE_CANNOT_CONNECT_NOW,则尝试下一个主机,如果提供了多个主机名。这允许优雅地处理可能尚未进入热备用模式的备用服务器。在上一条提交之后,重试更多错误情况似乎是可行的,但我不(tgl)倾向于过于激进地处理 --- 例如,对于 bad-password 等情况,不清楚是否可取。但这种情况似乎足够安全。Hubert Zhang,由 Takayuki Tsunakawa 审查 Discussion: https://postgr.es/m/BN6PR05MB3492948E4FD76C156E747E8BC9160@BN6PR05MB3492.namprd05.prod.outlook.com https://git.postgresql.org/pg/commitdiff/c1d589571c497a952d7fbe40d9828655859d746f

  • 重新思考 ERRCODE_IDLE_SESSION_TIMEOUT 的 SQLSTATE 代码。将其移至 57 类(Operator Intervention),鉴于从客户端的角度来看,它的行为与 ERRCODE_ADMIN_SHUTDOWN 等非常相似,这似乎是一个更好的选择。在一个全新的环境中,我也会将 ERRCODE_IDLE_IN_TRANSACTION_SESSION_TIMEOUT 放在这里。但这已经存在了几年,所以可能无法更改其 SQLSTATE 代码。Discussion: https://postgr.es/m/763A0689-F189-459E-946F-F0EC4458980B@hotmail.com https://git.postgresql.org/pg/commitdiff/4edf96846a02693e4416478b3302e5133d2e8e01

  • 使 pg_dump 的对象类型优先级表更易于维护。将新对象类型插入此表以前需要手动重新编号许多现有条目。(尽管似乎有些人图省事,复用了现有对象类型的优先级级别,即使它并不特别相关。)我们可以通过创建一个枚举类型来让编译器进行计数,该类型按顺序列出所需的优先级级别。现在,如果您想添加或删除一个优先级级别,只需一行代码即可。此补丁不纯粹是美观的,因为我拆分了 DO_COLLATION 和 DO_TRANSFORM 的优先级,以及 DO_ACCESS_METHOD 和 DO_OPERATOR 的优先级,在我看来,这些优先级是出于便利性合并的,而不是因为这是个好主意。Shell 类型继续与完整类型互换排序,opclasses 也与 opfamilies 互换排序。https://git.postgresql.org/pg/commitdiff/d5ab79d815783fe60062cefc423b54e82fbb92ff

  • 将 ALTER TABLE ... ATTACH PARTITION 声明为单独的 ArchiveEntry。以前,我们将 ATTACH PARTITION 命令作为子表的 ArchiveEntry 发出的。这是一个糟糕的选择,因为它使恢复分区作为独立表变得复杂;您必须忽略 ATTACH 的错误,这在直接到数据库使用 pg_restore 进行恢复时甚至不是一个选项。(pg_restore 将整个 ArchiveEntry 作为单个 PQexec 发出,因此任何错误都会回滚表创建。)因此,将其作为其自己的 ArchiveEntry 单独列出,正如我们已经为 index ATTACH PARTITION 命令所做的那样。Justin Pryzby Discussion: https://postgr.es/m/20201023052940.GE9241@telsasoft.com https://git.postgresql.org/pg/commitdiff/9a4c0e36fbd671b5e7426a5a0670bdd7ba2714a0

  • Doc:修复 ALTER PUBLICATION 所需权限的描述。将表添加到发布(publication)需要该表的拥有权(以及发布的拥有权)。这一点在任何地方都没有提到。https://git.postgresql.org/pg/commitdiff/cc865c0f319fde22540625e02863f42e9853b3e4

  • pg_dump:为 INDEX ATTACH ArchiveEntries 标记所有者。尽管分区索引附加到其父索引没有单独的所有权,但其 ArchiveEntry 仍然需要标记所有者,以确保在恢复时使用 --use-set-session-authorization 时由适当的角色运行 ALTER 命令。没有这个,ALTER 将由启动恢复会话的角色运行,这通常会成功,但形式上是错误的。回溯到 v11,当时添加了这种 ArchiveEntry 类型。在 HEAD 中,将等效的注释添加到刚刚添加的 TABLE ATTACH 情况,该情况我已经处理得当。Discussion: https://postgr.es/m/1094034.1610418498@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/9eabfe300a22ad3d776dc293265e15379790bd9a

  • Doc:澄清 pg_dump 中反向选项的行为。将归档数据转换为 SQL 文本的选项在转储为归档格式时将被忽略。文档以前说 "没有意义",这是没有帮助的。Discussion: https://postgr.es/m/161052021249.12228.9598689907884726185@wrigleys.postgresql.org https://git.postgresql.org/pg/commitdiff/06ed235adeb621a73cafd6ab35fa2405b3177329

  • 在 pgbench 中不允许使用数字作为变量名的第一个字符。此限制的目的是避免尝试将变量替换到时间戳文字值中,因为这些值可能包含像 '12:34' 这样的字符串。还有很多工作要做,以减少 pgbench 在不应该替换的地方进行替换的倾向。但这足以解决 Jaime Soler 抱怨的情况,并且足够简单,可以回溯。回溯到 v11;在 commit 9d36a3866 之前,pgbench 对变量名的定义略有不同,而且似乎不应该因为这个原因更改长期稳定的分支。Fabien Coelho Discussion: https://postgr.es/m/alpine.DEB.2.22.394.2006291740420.805678@pseudo https://git.postgresql.org/pg/commitdiff/c21ea4d53e9404279273da800daa49b7b9a5e81e

  • Doc,或多或少:取消注释很久以前修复的教程示例。撤销 commit 344190b7e 的一部分。早在二十世纪,我们就遇到了多语句 SQL 函数的一些问题,但它们已经正常工作了很长时间。Daniel Westermann Discussion: https://postgr.es/m/GVAP278MB04242DCBF5E31F528D53FA18D2A90@GVAP278MB0424.CHEP278.PROD.OUTLOOK.COM https://git.postgresql.org/pg/commitdiff/dce62490818170b6479dfe08a28aae4bcdf7cc2d

  • 运行 reformat-dat-files 以清理目录数据文件。这里的情况变得相当混乱,显然主要是(但并非完全)由 multirange 补丁造成的。没有功能性更改。https://git.postgresql.org/pg/commitdiff/8b411b8ff41566a1aa601d1f05aeebbebbdb4a54

  • 将 inet_server_addr() 和 inet_server_port() 标记为并行受限。这些需要被标记为 PR,因为它们访问 MyProcPort 数据结构,该结构不会被复制到并行工作进程。非常相似的函数 inet_client_addr() 和 inet_client_port() 已经被标记为 PR,但有人忽略了这两个函数。尽管这是一个已存在错误,但由于我们无法强制 initdb,因此无法在旧分支中轻易修复它。鉴于这两个函数的使用量很小,并且它们被推送到并行工作进程的可能性更小,因此建议 DBA 手动修复似乎不值得麻烦。Masahiko Sawada Discussion: https://postgr.es/m/CAD21AoAT4aHP0Uxq91qpD7NL009tnUYQe-b14R3MnSVOjtE71g@mail.gmail.com https://git.postgresql.org/pg/commitdiff/5a6f9bce8dabd371bdb4e3db5dda436f7f0a680f

  • pg_dump:为 PUBLICATION TABLE ArchiveEntries 标记所有者。这与提交 9eabfe300 对 INDEX ATTACH 条目的修复相同,但用于表到发布(publication)的附加。与该情况一样,即使后端不记录附加的 "所有权",我们也应该在转储归档中标记它,以便在恢复时由应运行 ALTER PUBLICATION 命令的角色来运行。现有行为导致 ALTER 由启动恢复的原始角色执行;这通常可以正常工作,但可能存在一些边际情况会导致失败。补丁的大部分内容是关于更改 struct PublicationRelInfo 以包含指向相关 PublicationInfo 对象的指针,以便在需要时可以从中获取所有者的名称。同时,我重写了 getPublicationTables(),使其只查询一次 pg_publication_rel,而不是每个表一次。回溯到 v10,当时引入了此代码。Discussion: https://postgr.es/m/1165710.1610473242@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/8e396a773b80c72e5d5a0ca9755dffe043c97a05

  • 改进我们为 macOS 选择 PG_SYSROOT 的启发式方法。在 Xcode 版本比底层 macOS 版本更新的情况下,向 xcodebuild 询问 SDK 路径将指向 Xcode 附带的 SDK,这可能会构建在底层 macOS 版本上无法正常工作的代码。似乎在这种情况下,xcodebuild 的答案也与 Apple 编译器的默认行为不符:假设已安装 Xcode 的 "命令行工具",则在 /Library/Developer/CommandLineTools 中会有一个 OS 自己的版本的 SDK,并且编译器将默认使用它。所有这些文档记录都很差,但实验表明,"xcrun --show-sdk-path" 会给出编译器实际使用的 sysroot 路径,至少在某些情况下如此。因此,首先尝试这个,但如果 xcrun 失败则恢复到 xcodebuild(在非常旧的 Xcode 中,它缺失或缺少 --show-sdk-path 开关)。另外,"xcrun --show-sdk-path" 可能会给出一个有效的路径,但缺少任何 OS 版本标识符。我们并不真正想要这个,因为将 -isysroot 链接到构建标志的动机主要是确保 PG 安装的所有部分都针对相同的 SDK 进行构建,即使考虑到稍后构建的扩展和/或在另一台机器上构建的扩展。坚持在目录名称中找到 "N.N" 才接受结果。(将 "--sdk macosx" 添加到 xcrun 调用似乎会给出与 xcodebuild 相同的答案,但通常更快,因为它被缓存,所以我们也尝试将其作为回退。)在这些情况下,我们不想使用 Xcode 的默认 SDK 的核心原因是,Apple 引入新系统调用的技术与 Autoconf 配合不佳:例如,在使用 Big Sur SDK 时,configure 会认为 preadv/pwritev 存在,即使在旧的 macOS 版本中它们不存在。我们希望有一个更好的解决方案来解决这个问题,但此补丁并未尝试修复它。根据 Sergey Shinderuk 的报告。回溯到所有支持的版本。Discussion: https://postgr.es/m/ed3b8e5d-0da8-6ebd-fd1c-e0ac80a4b204@postgrespro.ru https://git.postgresql.org/pg/commitdiff/4823621db312a0597c40686c4c94d47428889fef

  • 为 test_regex.c 添加缺失的数组扩容逻辑。报告 "部分" 匹配的语句可能会超出初始分配的输出数组,因此它需要与主循环中的数组重调大小逻辑相同的副本。我在 ca8217c10 中忽略了此需求。根据 Alexander Lakhin 的报告。Discussion: https://postgr.es/m/3206aace-50db-02a-bbea-76d5cdaa2cb6@gmail.com https://git.postgresql.org/pg/commitdiff/0c7d3bb99f72d66ec6ac63aee4c5fe6d683eee86

Amit Kapila 提交

Álvaro Herrera 提交

Michaël Paquier 提交

Heikki Linnakangas 提交

Magnus Hagander 已推送

Fujii Masao 提交

Peter Geoghegan 提交

  • 传递 "逻辑上未更改索引" 提示。添加一个 executor aminsert() 提示机制,告知索引 AM,传入的索引元组(伴随提示的元组)不是通过逻辑上修改索引任何键列的 SQL 语句插入的。当 UPDATE 发生(尽管仅对所有键列逻辑上未更改的索引)并且没有应用像 heapam 的 HOT 这样的优化时,索引会收到此提示。接收到插入提示的任何索引元组都应是至少一个现有旧版本的副本,该副本对于同一个逻辑行是必需的。相关版本通常存储在同一索引页上,至少在应用提示的索引 AM 中是这样。在索引 AM 级别识别 MVCC 版本重复与真正逻辑行重复之间的差异,有助于清理垃圾索引元组。清理可以智能地定位可能是垃圾的元组,而不会在不太有希望的元组/页上浪费太多周期(版本重复很少的索引页)。这是即将到来的提交的基础设施,该提交将教会 nbtree 执行自下而上的索引删除。目前还没有索引 AM 应用此提示。Author: Peter Geoghegan pg@bowt.ie Reviewed-By: Victor Yegorov vyegorov@gmail.com Discussion: https://postgr.es/m/CAH2-Wz=CEKFa74EScx_hFVshCOn6AA5T-ajFASTdzipdkLTNQQ@mail.gmail.com https://git.postgresql.org/pg/commitdiff/9dc718bdf2b1a574481a45624d42b674332e2903

  • 增强 nbtree 索引元组删除。教会 nbtree 和 heapam 协作,以便主动删除表示已死 MVCC 版本的重复元组。这是 "自下而上的删除"。每次自下而上的删除传递都是根据 nbtree 叶子页上的大量版本而延迟触发的。这通常涉及一个 "逻辑上未更改索引" 提示(这些提示由提交 9dc718bd 添加的执行器机制生成)。自下而上索引删除的直接目标是避免完全由版本重复引起的 "不必要" 的页面拆分。它自然也有一个更有用的效果:它充当了针对任何给定逻辑行累积过多索引元组版本的后备。自下而上的索引删除是对我们现在可能称为 "自上而下的索引删除" 的补充:由 VACUUM 执行的索引 vacuuming。自下而上的索引删除响应查询的即时局部需求,同时让 autovacuum 来执行索引的偶尔的全面清理。总体效果是避免与 UPDATE 的 "版本交错" 相关的某些病态性能问题。索引 AM 用于执行元组删除的先前表am接口(table_compute_xid_horizon_for_tuples() 函数)已被替换为一个新的接口,该接口支持某些新要求。此提交添加的大部分(也许是所有)功能也可以扩展到其他索引 AM。这留待以后提交完成。通过添加逻辑来考虑额外的索引元组(未标记为 LP_DEAD)以便在传递中删除,扩展了 nbtree 中 LP_DEAD 标记的索引元组的删除。这在许多情况下显著增加了删除的索引元组数量。"简单删除"(现在称为 "简单删除" 以清楚地区分于自下而上的删除)过程通常不需要访问任何额外的表块来检查这些额外的元组。我们无论如何都要访问相同的表块来生成 latestRemovedXid 值(至少在索引删除操作的 WAL 记录需要该值的情况下)。测试表明,"额外元组" 简单删除增强功能几乎可以删除任何在叶子页面上设置了 LP_DEAD 位的 LSN 的索引元组,从而增加了已删除索引元组的数量。也就是说,它几乎总能删除至少一些额外的索引元组。它在恰好有很多删除安全元组的情况下最有帮助。单个删除操作删除的索引元组数量比旧的简单方法多一个数量级的情况并不少见(例如,该补丁的自定义仪器显示,当运行回归测试时,这种情况相当频繁地发生)。添加了进一步的增强功能,该功能可以增强索引中的简单删除和自下而上的删除,这些索引利用了去重:教会 nbtree 的bt_delitems_delete() 函数支持 posting list 元组中的粒度 TID 删除。现在可以从 posting list 元组中删除单个 TID,前提是 TID 的 tableam 块号是删除过程中访问的表块(表块的访问可以由直接或间接触发)。将 posting list 元组的 LP_DEAD 位设置为零仍然是全有或全无的事情,但现在这无关紧要了,因为删除只需要首先有一个正确的总体想法,即哪些索引元组是可删除的。由于 xl_btree_delete 发生了变化,XLOG_PAGE_MAGIC 被提升。BTREE_VERSION 没有提升,因为 nbtree 索引的磁盘表示没有变化。在 PostgreSQL 12 或 PostgreSQL 13 上构建的索引将在 pg_upgrade 后自动受益于自下而上的索引删除(即无需重新索引)。简单删除的增强功能在 pg_upgrade 后可用于所有 B-Tree 索引,无论用户从哪个 PostgreSQL 版本升级。Author: Peter Geoghegan pg@bowt.ie Reviewed-By: Heikki Linnakangas hlinnaka@iki.fi Reviewed-By: Victor Yegorov vyegorov@gmail.com Discussion: https://postgr.es/m/CAH2-Wzm+maE3apHB8NOtmM=p-DO65j2V5GzAWCOEEuy3JZgb2g@mail.gmail.com https://git.postgresql.org/pg/commitdiff/d168b666823b6e0bcf60ed19ce24fb5fb91b8ccf

Tomáš Vondra 提交了

Noah Misch 推送

  • 修复 pg_dump 对初始权限中的 GRANT OPTION 的处理。上下文是一个对象不再拥有其初始的某些 aclitem。(用户发出了针对该对象的 REVOKE 或 GRANT 语句)。pg_dump 正在形成 SQL 来重现对象 ACL。由于 initdb 不创建任何带有 GRANT OPTION 的 ACL,因此遇到此 bug 需要一个在其创建脚本中建立此类 ACL 的扩展。没有 PGXN 扩展这样做。如果安装遇到了 bug,pg_dump 将省略分号,导致 REVOKE 和下一个 SQL 语句失败。另外,由于受影响的代码是为了消除整个 aclitem,它需要普通的 REVOKE,而不是 REVOKE GRANT OPTION FOR。回溯到 9.6,commit 23f34fa4ba358671adab16773e79c17c92cbc870 首次出现。Discussion: https://postgr.es/m/20210109102423.GA160022@rfd.leadboat.com https://git.postgresql.org/pg/commitdiff/f713ff7c646e5912e08089de74dacdfaaac3d03b

  • 防止 SimpleLruTruncate() 过度删除。除了 pg_notify 外,每个核心 SLRU 都会环绕。环绕点可能位于页面中间。在 PagePrecedes 回调的规范以及 SimpleLruTruncate() 使用该回调时,要考虑到这一点。更新每个回调实现以适应新规范。这会将 SerialPagePrecedesLogically() 的风格从 asyncQueuePagePrecedes() 改为 CLOGPagePrecedes() 风格。(虽然 pg_clog 和 pg_serial 共享一个密钥空间,但 pg_serial 与 pg_notify 完全不同。)此 bug 修复的症状和用户后续步骤与 592a589a04bd456410b853d86bd05faa9432cbbb 相同。回溯到 9.5(所有支持的版本)。由 Andrey Borodin 和(在早期版本中)Tom Lane 审阅。Discussion: https://postgr.es/m/20190202083822.GC32531@gust.leadboat.com https://git.postgresql.org/pg/commitdiff/6db992833c04c0322f7f34a486adece01651f929

Jeff Davis 推送

待处理补丁

Andrey V. Lepikhov 发送了对一个补丁的又一次修订,旨在移除一类可以安全移除的冗余自连接。

Tom Lane 发送了一个旨在修复一个 bug 的补丁,该 bug 在连接字符串中的多个主机未能以非热备用模式进行故障转移时出现,通过修复一些连接的重试和错误逻辑。

David Fetter 发送了对一个将 popcount 暴露给 SQL 的补丁的又一次修订。

Andrey V. Lepikhov 发送了对一个向 FDW API 添加批量插入接口并将其用于 PostgreSQL FDW 的补丁的又一次修订。这应该会加快对带有 foreign 分区的表的批量加载速度。

Masahiko Sawada 和 Bharath Rupireddy 交换了补丁,以避免在 conversion_error_callback 中进行目录访问。

Konstantin Knizhnik 和 Tomáš Vondra 交换了实现 libpq 压缩的补丁。

Ian Barwick 和 Greg Sabino Mullane 交换了补丁,以通过包含函数参数的数据类型来帮助 psql 制表符补全函数。

Mark Dilger 发送了对一个添加 contrib 模块 pg_amcheck 的补丁的又一次修订,该模块是一个用于对表和索引运行 amcheck 验证的命令行接口。

Bharath Rupireddy 发送了另外两个关于使并行插入在 CTAS 中可用的补丁修订。

Anastasia Lubennikova 发送了另外两个关于在 COPY FREEZE 中设置 PD_ALL_VISIBLE 和 visibility map bits 的补丁修订。

Masahiko Sawada 发送了一个实现缓冲区加密的补丁,以确保 kms 补丁能够与其他使用 kmgr 管理的加密密钥的组件协同工作。

Simon Riggs 发送了对实现系统版本化时间表表的补丁的又一次修订。

Ian Barwick 发送了一个补丁,用于修复 has_column_privilege() 对 attnums 和不存在列的处理。它通过确认列是否存在来确认用户即使拥有表级权限,否则该函数将在提供无效 attnum 时愉快地报告用户对已删除或不存在的列拥有权限。

Yugo Nagata 发送了另一个版本的补丁,用于实现增量视图维护。

Atsushi Torikoshi 发送了另一个关于将计划类型(通用或自定义)添加到 pg_stat_statements 的补丁修订。

Peter Smith 发送了另外两个关于使 background workers 可用于 tablesync 的补丁修订。

Kyotaro HORIGUCHI 发送了另外两个关于使表能够更改持久性(LOGGED/UNLOGGED)而不产生堆重写的补丁修订。

Atsushi Torikoshi 发送了另一个关于通过新函数 pg_get_target_backend_memory_contexts() 收集指定进程的内存上下文的补丁修订。

John Naylor 发送了一个补丁,用于移除对已移除的 replication_timeout GUC 的引用。

Hou Zhijie 发送了另外两个关于为 eval_const_expressions_mutator 添加 Nullif 情况的补丁修订。

Justin Pryzby 发送了另一个关于 pg_upgrade 的补丁修订,用于添加一个测试以验证二进制兼容性。

Álvaro Herrera 发送了另一个关于在 REINDEX CONCURRENTLY 期间设置 PROC_IN_SAFE_IC 的补丁修订。

Tomáš Vondra 发送了四个关于为外部表添加批量插入的补丁修订。

Li Japin 和 Bharath Rupireddy 交换了补丁,用于修复 ALTER PUBLICATION...DROP TABLE 的行为,通过安排当 entry 在 rel_sync_cache_publication_cb() 中失效时,将 pubactions 标记为 false,并让 get_rel_sync_entry() 重新计算 pubactions。

Takamichi Osumi 发送了三个关于添加新 wal_level 以禁用 WAL 日志记录的补丁修订,该日志记录旨在加快批量加载速度,但会冒着集群在中间失败时无法恢复的风险。

Bruce Momjian 发送了三个关于实现密钥管理的补丁修订。

DRU 发送了三个关于添加数据页面校验和文档,以及在运行集群中支持校验和启用/禁用的补丁修订。

Heikki Linnakangas 和 Andrey Borodin 交换了向 'pageinspect' 添加用于检查 GiST 索引的函数的补丁。

Dilip Kumar 发送了另一个关于支持表自定义压缩方法的补丁修订。

Yuzuko Hosoya 发送了一个补丁,用于使 DISCARD ALL 能够释放 SPI 计划以进行参照完整性,这将(除其他外)减少创建或使用具有许多分区的表的外键时使用的内存量。

Stephen Frost 发送了一个引入过时附录的补丁,用于将旧术语链接到新文档。

Stephen Frost 发送了另一个关于使用预取 ANALYZE 并使 autoanalyze 记录的详细信息与 autovacuum 的详细信息保持一致的补丁修订。

Michaël Paquier 和 Aleksey Kondratov 交换了重构实用语句选项的补丁。

Peter Eisentraut 发送了对 pageinspect 的另一个修订,该修订将块号参数更改为 bigint 以避免可能的溢出。

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

Heikki Linnakangas 发送了另外两个补丁修订,用于出于安全和清晰性考虑将一些 ResourceOwnerEnlarge() 调用移位,并通过使用单个数组和哈希(而不是每种对象类型一个)使 resowners 更易于扩展。

Kyotaro HORIGUCHI 发送了一个补丁,用于修复 RelationNeedsWAL 的一些错误用法。

Dilip Kumar 发送了另一个关于确保 pg_is_wal_replay_paused 等待恢复暂停的补丁修订。

Kyotaro HORIGUCHI 发送了另一个补丁修订,用于将统计信息收集器的临时存储从文件移至共享内存。

Kyotaro HORIGUCHI 发送了另一个补丁修订,用于通过添加 CatCache 过期功能来防止 syscache 因负缓存条目而膨胀。

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

Li Japin 发送了一个补丁,用于修复 WalSndPrepareWrite 注释中的一个拼写错误。

Simon Riggs 发送了一个补丁,用于在不验证的情况下更改索引的唯一性,以及一种单独进行该验证的方法。

Takayuki Tsunakawa 发送了一个补丁,用于通过将几个不正确的 += 赋值更改为 = 来修复 shmem TOC 的大小计算。

Peter Geoghegan 发送了一个补丁,将 vacuum_cost_page_miss 的默认值降低到 3。

Ian Barwick 发送了另一个关于向 pg_lock_status 函数添加锁获取等待开始时间的补丁修订。

Andy Fan 发送了一个使 cost_sort 更准确的补丁。

Masahiko Sawada 发送了另一个关于使涉及多个 postgres 外部服务器的事务成为可能的补丁修订。

Fujii Masao 和 Bharath Rupireddy 交换了补丁,为 postgres_fdw 添加了一个用于丢弃缓存连接的函数,以及一个 postgres_fdw 特定 GUC 和一个系统范围的 GUC keep_connections。

Hou Zhijie 发送了一个补丁,用于移除 reorderbuffer.c 注释中的一个多余的撇号。

Álvaro Herrera 发送了一个补丁,用于在计算要删除的元组的 Xid horizon 时,让 VACUUM 忽略正在进行 CIC 和 RC 的进程。

Álvaro Herrera 发送了一个补丁,用于增加 pg_commit_ts 缓冲区的大小。

David Zhang 发送了一个补丁,用于更新表空间文档,使其与 pgbench 的新表访问方法选项保持一致。

Iwata Aya 发送了另一个关于启用 libpq 跟踪的补丁修订。

Tomáš Vondra 发送了另外两个关于覆盖带扩展统计信息的表达式的补丁修订。

Tom Lane 发送了一个补丁,用于修复 pull_varnos() 中的错误计算。

Thomas Munro 发送了另一个关于使 pgbench 能够延迟查询直到连接建立的补丁修订。