PostgreSQL 每周新闻 - 2021 年 7 月 11 日

由 PWN 发布于 2021-07-12
PWN

PostgreSQL 每周新闻 - 2021 年 7 月 11 日

本周人物

PostgreSQL 产品新闻

pg-wrapper 1.0.0,PHP pgsql 扩展的包装器,已发布

JDBC 42.2.23 发布 https://jdbc.postgresql.ac.cn/documentation/changelog.html#version_42.2.23

Ora2Pg 22.1,一个用于将 Oracle 数据库迁移到 PostgreSQL 的工具,已发布。 https://github.com/darold/ora2pg/blob/master/changelog

credcheck 0.1.1,一个用于纯文本密码的密码检查机制,已发布

pg_builder 1.0.0,一个用于 PostgreSQL 的 PHP 查询构建器,已发布

PG-Strom 3.0,一个使用 GPU 和相关硬件加速 OLAP 查询的 PostgreSQL 扩展,已发布

Datasentinel 版本 2021.05,一个监控和报告 PostgreSQL 等的应用程序,已发布

7 月份的 PostgreSQL 工作

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

PostgreSQL 新闻

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

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

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

已应用的补丁

Amit Kapila 推送了

Peter Eisentraut 推送了

Dean Rasheed 推送了

Tom Lane 推送了

  • 重新思考 detach-partition-concurrently-[34] 中的阻塞注释。在 741d7f104 中,我尝试让取消步骤的报告在 pg_cancel_backend() 步骤之后出现,因为这是以前最常见的排序方式。然而,这并不能保证取消的步骤不会更晚报告,如 buildfarm 成员 idiacanthus 最近的故障所示。与其使用额外的注释使事情更加复杂,不如强制首先报告取消的效果。这并不是那么不自然。反向移植到出现这些测试用例的 v14。报告:https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=idiacanthus&dt=2021-07-02%2001%3A40%3A04 https://git.postgresql.org/pg/commitdiff/c04c767059b8460b99f6aa4aae5450ab3ee257a3

  • 减少 LookupOpclassInfo() 中缓存破坏测试的开销。提交 03ffc4d6d 添加了逻辑,以便在启用 CLOBBER_CACHE_ALWAYS 时绕过 LookupOpclassInfo 中的所有缓存行为。我似乎没有花太多时间考虑这会付出什么代价,但最近的调查表明,代价是巨大的:它大致使缓存破坏测试运行所需的时间加倍。在尝试测试 opclass 缓存加载逻辑本身时,此行为似乎确实有价值,但出于其他目的,成本过高。因此,让我们退回到仅当 debug_invalidate_system_caches_always 至少为 3 时才执行此操作;或者在较旧的分支中,当定义了 CLOBBER_CACHE_RECURSIVELY 时。在这里,清理 LookupOpclassInfo 中的其他一些小问题。重新排序代码,以便在尝试为新条目分配空间时遇到 OOM 的不太可能的情况下,我们不会留下损坏的缓存条目(导致稍后的核心转储)。(这似乎是我在 03ffc4d6d 中的疏忽。)此外,在 >= v13 中,停止分配一个多余的数组条目。这显然是 851b14b0c 中草率回滚的遗留问题。反向移植到所有支持的分支,主要是为了减少缓存破坏 buildfarm 动物的运行时。讨论:https://postgr.es/m/1370856.1625428625@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/9753324b7d9eba0aaf7e12942f52c240bfc7da7c

  • 文档:添加有关具有分数分钟 UTC 偏移量的时间戳的信息。我们的代码支持分数分钟 UTC 偏移量已久,但在主文档中没有提及这种可能性,并且在附录 B 中只有非常间接的参考。改进这一点。讨论:https://postgr.es/m/162543102827.697.5755498651217979813@wrigleys.postgresql.org https://git.postgresql.org/pg/commitdiff/ab2e19987ff66f83dfb99b5c541d9e05e8b0ede3

  • 避免在 postgres_fdw 的 conversion_error_callback 中进行目录查找。就像在 50371df26 中一样,这是一个坏主意,因为回调实际上无法知道正在抛出什么错误,因此无法知道尝试目录访问是否安全。与其将所述访问推送到主线代码中(通常会浪费周期),不如查看查询的 rangetable。此更改确实意味着我们将打印查询别名(如果使用了任何别名),而不是表或列的真实名称。但这似乎不是一件坏事:例如,在自连接情况下,这当然是一个更有用的定义。无论如何,似乎不太可能有任何应用程序依赖于此细节,因此更改似乎是安全的。由我修补。Andres Freund 最初提出抱怨;Bharath Rupireddy 注意到与 conversion_error_callback 的连接。讨论:https://postgr.es/m/20210106020229.ne5xnuu6wlondjpe@alap3.anarazel.de https://git.postgresql.org/pg/commitdiff/c7b7311f6177b90fe5033b8ed2c10dfcbb863eb6

  • 降低规划深度嵌套视图的成本。Joel Jacobson 报告说,简单(可展平)视图的深度嵌套会导致 N 深度嵌套的规划时间呈 O(N^3) 增长。事实证明,这一成本的很大一部分来自复制每个视图的 RTE_SUBQUERY RTE 的“子查询”子树。但是,一旦我们成功展平子查询,我们就不再需要它,因为规划器不会对该 RTE 执行其他有趣的操作。我们已经在 setrefs.c(参见 add_rte_to_flat_rtable)期间消除了子查询指针,但它比这更早也是无用的包袱。一旦 pull_up_simple_subquery 完成 RTE,清除指针就会将成本从 O(N^3) 降低到 O(N^2);这仍然不太好,但要好得多。进一步的改进将需要重新思考 RTE 数据结构,这正在另一个线程中考虑。由我修补;感谢 Dean Rasheed 的审核。讨论:https://postgr.es/m/797aff54-b49b-4914-9ff9-aa42564a4d7d@www.fastmail.com https://git.postgresql.org/pg/commitdiff/64919aaab45076445051245c9bcd48dd84abebe7

  • 允许 CustomScan 提供者声明是否支持投影。之前,所有 CustomScan 提供者都必须支持投影,但在某些情况下这可能不太方便。添加一个标志位来声明是否支持。发布说明的重要事项:这是非向后兼容的,因为现在的默认情况是假设 CustomScan 提供者不能进行投影,而不是假设它们可以。这是一种软性失败,但可能会因添加不必要的 Result 节点而导致明显的性能损失。Sven Klemm,由 Aleksander Alekseev 审核;我做了一些表面上的调整。讨论:https://postgr.es/m/CAMCrgp1kyakOz6c8aKhNDJXjhQ1dEjEnp+6KNT3KxPrjNtsrDg@mail.gmail.com https://git.postgresql.org/pg/commitdiff/955b3e0f9269639fb916cee3dea37aee50b82df0

  • 修复 postgres_fdw 中对可证明为空的远程 UPDATE/DELETE 操作的崩溃问题。在 86dc90056 中,我编写 find_modifytable_subplan 时假设如果 ModifyTable 的直接子节点是 Result,则它必须是带有子计划的投影 Result。但是,如果 UPDATE 或 DELETE 语句具有可证明为假的常量 WHERE 子句,则情况并非如此:我们将生成一个没有子节点的虚拟子计划 Result。添加缺失的空值检查,以防止在这种情况下崩溃。根据 Alexander Pyhalov 的报告。讨论:https://postgr.es/m/b9a6f53549456b2f3e2fd150dcd79d72@postgrespro.ru https://git.postgresql.org/pg/commitdiff/b9734c13f168ef0d487aa122e486ca9b6dd6aa59

  • 拒绝 WITH 子句中的查询重写为仅 NOTIFY 的情况。由于执行器无法处理作为计划树节点的实用程序语句,因此我们不支持将 NOTIFY 插入到更大的查询的 WITH 子句中出现的 INSERT/UPDATE/DELETE 命令中的情况。(可以想象解决这个问题的方法,但这将是一项新功能,而不是错误修复,而且到目前为止还没有人对此提出要求。)RewriteQuery 检查了这种情况,但它遗漏了 DML 命令重写为 NOTIFY 的情况。这会导致稍后在计划中发生崩溃。添加遗漏的检查,并提高此领域的测试水平。根据 Yaoguang Chen 的错误 #17094。自引入 WITH 以来就存在问题,因此回溯到所有支持的分支。讨论:https://postgr.es/m/17094-bf15dff55eaf2e28@postgresql.org https://git.postgresql.org/pg/commitdiff/a9da1934e971b38ab360ce80a352fbfc4d2d986b

  • 更新 configure 对 libldap 的探测,以使其与 OpenLDAP 2.5 兼容。单独的 libldap_r 已被移除,libldap 本身现在始终是线程安全的。不幸的是,似乎没有简单的方法通过检查来判断 libldap 是否是线程安全的,因此我们必须相信如果不存在 libldap_r,则 libldap 是线程安全的。这应该没问题,因为 libldap_r 似乎至少在 20 年前就是安装的标准组成部分。Adrian Ho 报告并提供了补丁。回溯到所有支持的分支,因为人们可能会尝试使用较新的 OpenLDAP 构建它们中的任何一个。讨论:https://postgr.es/m/17083-a19190d9591946a7@postgresql.org https://git.postgresql.org/pg/commitdiff/d0a02bdb8c2576b5aa607f127320e444080bd579

  • 避免创建标记为 LATERAL 的 RESULT RTE。提交 7266d0997 添加了代码来拉取简单的常量函数结果,将 RTE_FUNCTION RTE 转换为虚拟的 RTE_RESULT RTE,因为它不再需要扫描。但是我忘记了清除 RTE 如果设置了 LATERAL 标志。如果该函数简化为常量,则它肯定不包含横向引用,因此这种简化在逻辑上是正确的。这是必要的,因为其他一些地方会断言 RESULT RTE 不是 LATERAL。根据 Yaoguang Chen 的错误 #17097。回溯到出现错误代码的 v13 版本。讨论:https://postgr.es/m/17097-3372ef9f798fc94f@postgresql.org https://git.postgresql.org/pg/commitdiff/d23ac62afa646b7073a7f0db0a137308459a263b

  • 修复 AIX 构建的中断。在提交 d0a02bdb8 中,我假设统一探测 ldap_bind 会使意图更清晰。但是,由于一些模糊的原因(也许它在那里是一个宏),这似乎在 AIX 上不起作用。恢复以前的行为,即为线程安全情况探测 ldap_simple_bind,否则探测 ldap_bind。根据构建场成员 hoverfly。讨论:https://postgr.es/m/17083-a19190d9591946a7@postgresql.org https://git.postgresql.org/pg/commitdiff/31e8cfac5845fa57e1805f4ff81e00ab78dff025

  • 再次修复 AIX 构建的中断。我错误地诊断了 hoverfly 不高兴的原因。仔细观察,它似乎在没有 libssl 的情况下无法链接 libldap;因此问题在于我在进行检查之前清除 LIBS 的想法。恢复到基本原始的编码,除了当 libldap_r 不存在时,使用 libldap 而不是失败。根据构建场成员 hoverfly。讨论:https://postgr.es/m/17083-a19190d9591946a7@postgresql.org https://git.postgresql.org/pg/commitdiff/53c38a086a8001d63401671755638bc95c7fa1c7

  • 修复 ldap_initialize 的中断测试。唉……我期望 AC_CHECK_LIB 做一些它没有做的事情,即更新 LIBS。这导致找不到 ldap_initialize。通过移动 ldap_initialize 的探测来修复。在某种意义上,这无论如何都更加正确,因为(至少目前)我们关心的是 ldap_initialize 是否存在于 libldap 中,而不是 libldap_r 中。根据构建场成员 elver 和本地测试。讨论:https://postgr.es/m/17083-a19190d9591946a7@postgresql.org https://git.postgresql.org/pg/commitdiff/9f6be2e79f88c65cef7cfeb0580e8b2ba74974f6

  • 在 ALTER EXTENSION ADD/DROP 期间锁定扩展。尽管我们小心地锁定了要添加或删除的对象,但我们未能对扩展本身进行任何类型的锁定。这允许 ALTER 与 DROP EXTENSION 并行进行,这存在一些问题。如果两个命令都成功,我们会在 pg_depend 中留下一个悬空的链接,这会在以后导致问题。此外,如果 ALTER 由于某种原因失败,它可能会尝试打印扩展的名称,这可能会导致崩溃或(在较旧的分支中)出现关于扩展“(null)”的愚蠢的错误消息。根据 Alexander Lakhin 的错误 #17098。回溯到所有支持的分支。讨论:https://postgr.es/m/17098-b960f3616c861f83@postgresql.org https://git.postgresql.org/pg/commitdiff/626731db26ae2617e41536678440c3817128a006

Michaël Paquier 推送

David Rowley 推送

  • 减少构建分区边界时的 palloc 调用次数。在 LIST、RANGE 和 HASH 分区的每个 create_*_bound() 函数中,都有大量的 palloc 调用,这些调用可以减少到更少的次数。在这些函数中的每一个中,都构建了一个数组,以便我们可以在创建 PartitionBoundInfo 之前对其进行 qsort 排序。对于 LIST 和 HASH 分区,分配了一个指针数组,然后在该数组中分配每个元素。由于预先知道每个维度中的项目数,我们可以只为它分配一个内存块。同样,对于所有分区策略,我们都能够减少分配次数来构建 ->datums 字段。这是一个 Datum 指针数组,但每个元素指向的 Datums 不需要单独分配。一个大块就可以了。对于 RANGE 分区,PartitionBoundInfo->kind 字段可以得到相同的处理。我们可以将相同的优化应用于 partition_bounds_copy()。在分区修剪期间或在分区表上进行 DML 时,这样做可能会对搜索正确分区的缓存性能产生很小的影响。但是,这可能很小,并且这主要是为了减少 palloc 开销。作者:Nitin Jadhav,Justin Pryzby,David Rowley 审核人:Justin Pryzby,Zhihong Yu 讨论:https://postgr.es/m/flat/CAMm1aWYFTqEio3bURzZh47jveiHRwgQTiSDvBORczNEz2duZ1Q@mail.gmail.com https://git.postgresql.org/pg/commitdiff/53d86957e980efa06f15232b8cff430d4cc6dd64

  • 修复注释中的拼写错误。作者:James Coleman 讨论:https://postgr.es/m/CAAaqYe8f8ENA0i1PdBtUNWDd2sxHSMgscNYbjhaXMuAdfBrZcg@mail.gmail.com https://git.postgresql.org/pg/commitdiff/9ee91cc583802c6507fbc31c348a79e63a10f956

  • 使用哈希表来加速 NOT IN(值)。类似于 50e17ad28,它允许对一组常量使用哈希表来处理 IN 子句,这里我们为 NOT IN 子句添加相同的功能。 NOT IN 的评估方式与以下相同:WHERE a <> v1 AND a <> v2 AND a <> v3。显然,如果我们使用哈希表,我们必须与此完全等效,并返回相同的结果,同时考虑到条件的任何一边都可能包含 NULL。这需要一些特殊的处理才能使其与哈希表版本一起工作。当处理 NOT IN 时,ScalarArrayOpExpr 的运算符将是 <> 运算符。为了能够构建和查找哈希表,我们必须使用 <> 的求反运算符。规划器会检查该运算符是否存在且可哈希,并在 ScalarArrayOpExpr 中设置相关字段,以指示执行器使用哈希。作者:David Rowley,James Coleman 审核人:James Coleman,Zhihong Yu 讨论:https://postgr.es/m/CAApHDvoF1mum_FRk6D621edcB6KSHBi2+GAgWmioj5AhOu2vwQ@mail.gmail.com https://git.postgresql.org/pg/commitdiff/29f45e299e7ffa1df0db44b8452228625479487f

  • 修复 pg_size_pretty(bigint) 中不正确的返回值。由于 pg_size_pretty(bigint) 的实现方式,当给定一个负的字节数时,返回的值可能与给定等效正的字节数时返回的等效正值不匹配。这是由于两个单独的问题。1. 该函数使用位移来将字节数转换为更大的单位。位移执行的舍入与除法不同。例如 -3 >> 1 = -2,但 -3 / 2 = -1。这两个运算仅对正数等效。2. half_rounded() 宏向正无穷大舍入。这意味着负数向零舍入,正数远离零舍入。这里我们通过除以值而不是位移来修复 #1。我们通过调整 half_rounded 宏始终远离零舍入来修复 #2。此外,调整 pg_size_pretty(numeric) 函数,使其更明确地使用除法而不是位移。一个不经意的观察者可能会认为使用了位移,因为一个静态函数名为 numeric_shift_right。但是,该函数是从位数计算除数并执行除法。这里我们使它更清晰。此更改只是表面上的,不会影响该函数的数值版本的返回值。这里我们还添加了一组 pg_size_pretty() 两个版本的回归测试,这些测试直接测试函数切换到下一个单位之前和之后的值。这个错误是在 8a1fab36a 中引入的。在此之前,负值总是以字节为单位显示。作者:Dean Rasheed,David Rowley 讨论:https://postgr.es/m/CAEZATCXnNW4HsmZnxhfezR5FuiGgp+mkY4AzcL5eRGO4fuadWg@mail.gmail.com 向后移植至:9.6,该错误是在这里引入的。https://git.postgresql.org/pg/commitdiff/55fe609387685de1c754332e260b2d0e17d257dc

  • 在 pg_size_pretty 和 pg_size_bytes 中使用查找表来表示单位。多年来,我们已经开发了 pg_size_pretty 的 2 个版本,一个用于 BIGINT,一个用于 NUMERIC。两者都应该输出相同的内容,但是由于两个函数都没有共享关于使用哪些单位以及如何转换到下一个最大单位的真实来源,因此保持它们同步比需要的更困难。这里我们添加一个静态数组,它定义了我们识别的单位,并且让 pg_size_pretty 和 pg_size_pretty_numeric 都使用它。这将使将来添加任何单位变得非常简单。该表包含允许我们修改 pg_size_bytes 以使用查找表所需的所有信息,因此也对其进行调整。这里没有行为更改。作者:David Rowley 审核人:Dean Rasheed,Tom Lane,David Christensen 讨论:https://postgr.es/m/CAApHDvru1F7qsEVL-iOHeezJ+5WVxXnyD_Jo9nht+Eh85ekK-Q@mail.gmail.com https://git.postgresql.org/pg/commitdiff/56ff8b29919f75a078969766393b9e20871a75c8

  • 让 pg_size_pretty 和 pg_size_bytes 了解拍字节。有人谈到要添加一直到尧字节的单位,但似乎不太可能有人会需要这些单位。由于如此大的单位并不常见,因此 pg_size_pretty 输出大于拍字节的单位似乎实际上对任何人都没有帮助。由于拍字节即将出现,所以我们只添加这些。也许有一天我们会添加其他单位,但是在数据库大小方面,在我们需要考虑超出拍字节之前,可能还需要一段时间。作者:David Christensen 讨论:https://postgr.es/m/CAOxo6XKmHc_WZip-x5QwaOqFEiCq_SVD0B7sbTZQk+qqcn2qaw@mail.gmail.com https://git.postgresql.org/pg/commitdiff/ca2e4472ba7b6e5e8cd8955eacffb90e4d88d085

Álvaro Herrera 推送了

藤井正雄推送了

  • postgres_fdw:收紧 batch_size、fetch_size 选项的允许值。以前,诸如 '100$%$#$#', '9,223,372,' 之类的值被接受并被视为 postgres_fdw 选项 batch_size 和 fetch_size 的有效整数。而对于 fdw_startup_cost 和 fdw_tuple_cost 选项,情况并非如此,因为会抛出错误。这是因为在使用 strtol 将字符串转换为整数时未使用 endptr。此提交更改了逻辑,使其使用 parse_int 函数而不是 strtol,因为它在无法将字符串转换为整数时会返回 false。请注意,此函数还会将诸如 '100.456' 之类的值四舍五入为 100,将 '100.567' 或 '100.678' 四舍五入为 101。在此基础上,将 parse_real 用于 fdw_startup_cost 和 fdw_tuple_cost 选项。由于 parse_int 和 parse_real 用于 reloptions 和 GUC,因此在 postgres_fdw 中使用它而不是直接使用 strtol 和 strtod 更合适。向后移植到 v14。作者:Bharath Rupireddy 审核人:Ashutosh Bapat,Tom Lane,Kyotaro Horiguchi,Fujii Masao 讨论:https://postgr.es/m/CALj2ACVMO6wY5Pc4oe1OCgUOAtdjHuFsBDw8R5uoYR86eWFQDA@mail.gmail.com https://git.postgresql.org/pg/commitdiff/d854720df6df68cfe1432342e33c9e3020572a51

  • doc:修复有关 pg_stat_statements.track_planning 的描述。此提交修复了有关 track_planning 选项的描述中的错误措辞,如“较少种类”。向后移植到添加 pg_stat_statements.track_planning 的 v13。作者:Justin Pryzby 审核人:Julien Rouhaud,Fujii Masao 讨论:https://postgr.es/m/20210418233615.GB7256@telsasoft.com https://git.postgresql.org/pg/commitdiff/9d2a7757347cb1adb48599fce4dcde0f1fc9e9ae

Daniel Gustafsson 推送了

Thomas Munro 推送了

Jeff Davis 推送了

待处理的补丁

Jie Zhang 发送了一个补丁,使 libpq 的 PQsendFlushRequest 按照文档记录的那样返回 0 而不是编码的 false。

Gilles Darold 发送了另一个补丁的修订版,以添加新的事件 XACT_EVENT_COMMAND_START 和 SUBXACT_EVENT_COMMAND_START,可以在执行新命令时在 xact 回调中捕获这些事件。

Ranier Vilela 发送了一个补丁,以修复 src/backend/utils/adt/varlena.c 中可能未初始化的变量声明。

Ronan Dunklau 和 Ranier Vilela 交换了补丁,允许 Sort 节点使用快速的“单数据”tuplesort。

Andrey V. Lepikhov 提交了两个补丁修订版,旨在教优化器考虑非分区表与分区表的每个分区进行分区式连接,并禁止对两个分区(或追加)关系进行非对称连接机制,因为它可能在 NestLoop 路径的重新参数化期间导致巨大的 CPU 和内存消耗。

Victor Spirin 提交了两个补丁修订版,以使 Windows 上的重命名操作具有原子性。

Peter Smith 提交了一个补丁,为 psql 的 CREATE PUBLICATION 的 tab 补全添加了更多细微之处。

Amit Langote 提交了另一个补丁修订版,用于导出 get_partition_for_tuple(),并使用它来避免对某些 RI 检查使用 SPI。

侯志杰提交了另一个补丁修订版,使其能够将表标记为安全允许(或不允许)并行 DML,并在 INSERT ... SELECT 中使用它来实现并行查询,并添加一个 pg_get_table_parallel_dml_safety(regclass) 函数。

Dilip Kumar 提交了一个补丁,使 CREATE DATABASE 成为 WAL 日志记录操作,以避免检查点和写入风暴,这使得之前的实现繁琐。

曾文静提交了一个补丁,用于更早地检查同步备用服务器。

Vigneshwaran C 提交了另一个补丁修订版,用于在 CREATE/ALTER SUBSCRIPTION 期间识别发布者中缺少的发布。

Dipesh Pandit 提交了一个补丁,通过维护正在归档的当前文件的日志段号,并将其加“1”来获取下一个 WAL 文件,从而缓解 WAL 归档器中 O(N^2) 的目录扫描。

Justin Pryzby 提交了一个补丁,在 procarray.c 中添加了一些 ASSERTION,并向 pg_resetwal.c 添加了一个新的 oldest-transaction-id 可选参数。

Gilles Darold 提交了三个补丁修订版,为 PostgreSQL FDW 添加 CASE 子句的下推。

Bharath Rupireddy 和 Peter Smith 交换了补丁,使 parse_subscription_options 函数负责预先清理 SubOpts 参数,而不是期望调用者这样做,并删除对“supported_opts”的冗余条件检查,因为我们已经知道必须支持该选项。

Ajin Cherian、Amit Kapila 和 Peter Smith 交换了补丁,为逻辑复制添加对预备事务的支持。

Vigneshwaran C 提交了两个补丁修订版,以增强错误消息,以便在出现重复选项错误时包含选项名称。

Greg Nancarrow 提交了另一个补丁修订版,以添加一个新的“client_connection”事件和针对该事件的客户端连接触发器支持。

Gurjeet Singh 提交了一个补丁,明确指出 --sync-only 不会修改数据。

Kyotaro HORIGUCHI 提交了一个补丁,使 FPI_FOR_HINT 遵循标准的 FPI 发射策略。

David Rowley 提交了另一个补丁修订版,以删除 BIGINT 序列 MINVALUE/MAXVALUE 值上无用的 int64 范围检查。

Bharath Rupireddy 提交了另一个补丁修订版,通过更具体地说明无法将对象添加到同一发布中的原因,从而改进发布错误消息。

Andy Fan 提交了另一个补丁修订版,以扩展在规划器中使用唯一性的方式。

Gurjeet Singh 提交了一个补丁,当 initdb 的 --sync-only 选项与其他选项混合使用时发出警告。

Dean Rasheed 提交了另一个补丁修订版,以修复 NUMERIC 类型指数运算中的精度损失错误并防止一些溢出错误。

Bruce Momjian 提交了三个补丁修订版,以修复一个导致可见性映射损坏的错误。

Dagfinn Ilmari Mannsåker 提交了一个补丁,在适当的地方使用 l*_node() 函数系列。

Li Japin 和 Ranier Vilela 交换了补丁,以验证 parse_subscription_options 中的 slot_name。

Yugo Nagata 提交了另一个补丁修订版,以避免一些 pgbench 错误。

Euler Taveira de Oliveira 和 Greg Nancarrow 交换了补丁,以实现逻辑复制的行过滤。

Takamichi Osumi 提交了一个补丁,修复了一个导致逻辑复制进度测量失败的事务统计信息失败的错误。

Fabien COELHO 提交了两个补丁修订版,以用更好的 PRNG 替换 rand48。

Masahiko Sawada 提交了一个补丁,以阐明 ALTER SUBSCRIPTION 关于 refresh_option 选项的文档。

Robert Haas 提交了另一个补丁修订版,以重构 basebackup.c。

Seino Yuki 提交了一个补丁,用于跟踪物化视图的统计信息。

Georgios Kokolatos 提交了另一个补丁修订版,以教 pg_receivewal 使用 lz4 压缩。

Kyotaro HORIGUCHI 提交了两个补丁修订版,以严格拒绝命令行上的无效数字参数,并抱怨应该为数字的环境变量中出现相同的参数。

Alexander Lakhin 和 Michaël Paquier 交换了补丁,以修复 pg_ls_dir。

Quan Zongliang 提交了四个补丁修订版,以修复一个当块大小为 32k 时,导致 pageinspect 的函数 page_header 返回负数的错误。

Bharath Rupireddy 提交了另一个补丁修订版,以消除使用“非负数”的错误消息的歧义。

Atsushi Torikoshi 提交了另一个补丁修订版,添加一个函数来记录未截断的查询字符串及其为指定进程 ID 的后端上当前运行的查询计划。

侯志杰提交了另一个补丁修订版,为发布添加架构级别的支持。

Bertrand Drouvot 提交了另一个补丁修订版,以修复一个表现为使用 toast 的关系重写的逻辑解码不重置 toast_hash 的错误。

Georgios Kokolatos 提交了一个补丁,用于在 pg_receivewal 中测试 gzip 压缩。

Pavel Borisov 提交了另一个补丁修订版,以自动生成 LIST 和 HASH 的分区。

Amul Sul 提交了另一个补丁修订版,以添加 RelationGetSmgr 内联函数。

David Rowley 提交了另一个补丁修订版,以在 RelOptInfo 中跟踪未修剪的分区,并在更多情况下允许有序分区扫描。

Dagfinn Ilmari Mannsåker 提交了一个补丁,为 psql 中的 CREATE SCHEMA 添加 tab 补全。

Zhihong Yu 提交了一个补丁,以缩短 find_hash_columns() 中所需列的测试。

Nathan Bossart 提交了另一个补丁修订版,以预分配 WAL 段。

Tomáš Vondra 提交了另一个补丁修订版,使在 pg_dump 中可以单独转储函数。

Peifeng Qiu 提交了一个补丁,为 postgres_fdw 提供 kerberos 身份验证支持。

Erik Rijkers 提交了一个补丁,将 JSON 操作作为 JIT 编译的候选对象。

Fabien COELHO 提交了另一个补丁修订版,以分解 psql 中的 echo 代码。

David Rowley 提交了一个补丁,将 Result Cache 节点的名称更改为 Memoize。

Soumyadeep Chakraborty 提交了另一个补丁修订版,以在 pg_stats 中显示长度和边界直方图。

Ranier Vilela 提交了一个补丁,通过检查数组项的最大限制来防止 src/backend/access/nbtree/nbtxlog.c 中可能发生的内存损坏。

Thomas Munro 提交了另一个补丁修订版,为 psql 的 \watch 命令添加 PSQL_WATCH_PAGER 设置。