本周人物:https://postgresql.life/post/pavlo_golub/
JDBC 42.2.20 发布 https://jdbc.postgresql.ac.cn/documentation/changelog.html#version_42.2.20
kubgres 1.1 发布,这是一个 Kubernetes 操作器,可以部署配置了复制和故障转移的 PostgreSQL pod 集群。https://github.com/reactive-tech/kubegres/releases/tag/v1.1
pspg 4.6.1 发布,这是一个专为 PostgreSQL 设计的分页器。https://github.com/okbob/pspg/releases/tag/4.6.1
pgAdmin4 5.2 发布,这是一个用于 PostgreSQL 的 Web 和原生 GUI 控制中心。https://www.pgadmin.org/docs/pgadmin4/5.2/release_notes_5_2.html
pg_log_statements 0.2 发布,这是一个扩展,可以记录特定服务器进程的语句。https://github.com/pierreforstmann/pg_log_statements/releases
https://archives.postgresql.org/pgsql-jobs/2021-04/
Planet PostgreSQL: https://planet.postgresql.org/
本周 PostgreSQL 每周新闻由 David Fetter 为您带来
请在太平洋标准时间下午 3:00 前(PDT)将新闻和公告提交至 david@fetter.org。
Thomas Munro 推送了
Michaël Paquier 推送了
替换 Perl 脚本中 seek() 调用的魔法常量。一些测试使用 0 作为魔法常量,而可以使用 SEEK_SET 代替。这使得代码更容易理解,并且更符合 3c5b068 中所做的更改。根据与 Andrew Dunstan 的讨论。讨论:https://postgr.es/m/YHrc24AgJQ6tQ1q0@paquier.xyz https://git.postgresql.org/pg/commitdiff/c731f9187b5fd7038b04ba60703d3cace1806366
修复注释和文档中的拼写错误和语法错误。作者:Justin Pryzby 讨论:https://postgr.es/m/20210416070310.GG3315@telsasoft.com https://git.postgresql.org/pg/commitdiff/7ef8b52cf079ef3ace4575f7b97c2d6f80463b4f
将 CURRENT_ROLE 添加到 psql 中 GRANT 的标签补全角色列表中。此兼容性已在 45b9805 中添加,但 psql 忘记了调用。作者:Wei Wang 审阅人:Aleksander Alekseev 讨论:https://postgr.es/m/OS3PR01MB6275935F62E161BCD393D6559E489@OS3PR01MB6275.jpnprd01.prod.outlook.com https://git.postgresql.org/pg/commitdiff/22b2dec31b2ef4dfee299290b16375e9fa6e6932
doc:在 pg_stat_statements 的必需配置中列出 compute_query_id。不启用 compute_query_id 将禁用 pg_stat_statements,即使该模块在 shared_preload_libraries 中列出,因此将其添加到文档中列出的最小配置集中。作者:Greg Nancarrow 审阅人:Julien Rouhaud、Bharath Rupireddy 讨论:https://postgr.es/m/CAJcOf-fXyb2QiDbwftD813UF70w-+BsK-03bFp1GrijXU9GQYQ@mail.gmail.com https://git.postgresql.org/pg/commitdiff/64087eb5def7786bd49e60eb5d984ec6e4a872a9
doc:将 parallel_leader_participation 移动到其正确的类别。parallel_leader_participation 在 e5253fd 中引入,其中在 guc.c 中的 RESOURCES_ASYNCHRONOUS 下列出,但文档并未反映这一点,而是与其他计划器相关的选项一起列出。此提交修复了这种不一致,因为该参数旨在作为异步参数。同时,稍微重组了专用于异步参数的部分,将 backend_flush_after 移动到前面,以便更好地按照列出选项的字母顺序排列。报告人:Yanliang Lei 作者:Bharath Rupireddy 讨论:https://postgr.es/m/16972-42d4b0c15aa1d5f5@postgresql.org https://git.postgresql.org/pg/commitdiff/1599e7b375127cac81b539d2c69d3faf7598509b
修复逻辑复制中触发触发器的订阅者的关系泄漏。在触发应用操作的关系上创建触发器会导致在更改提交后发生关系泄漏,因为执行器会错过该关系需要事先关闭的情况。此问题是在 1375422c 中完成的重构中引入的,其中需要跟踪 es_opened_result_relations 中的关系,以确保它们已关闭。我们已经讨论过使用 ExecInitResultRelation() 和 ExecCloseResultRelations() 来跟踪订阅者中需要通过应用操作跟踪的关系,这将大大简化索引的打开和关闭,但这需要对工作代码进行更大的重构和重组,特别是对于元组路由部分。而且在功能冻结后并不受欢迎。因此,现在,采用与 TRUNCATE 相同的解决方案,即使用打开的关系填充 es_opened_result_relations,以确保 ExecGetTriggerResultRel() 找到它们并且它们已关闭。代码经过了轻微的重构,因此对于每个 DML 代码路径,不会注册三次关系,从而使整个过程更容易理解。报告人:Tang Haiying、Shi Yu、Hou Zhijie 作者:Amit Langote、Masahiko Sawada、Hou Zhijie 审阅人:Amit Kapila、Michael Paquier 讨论:https://postgr.es/m/OS0PR01MB611383FA0FE92EB9DE21946AFB769@OS0PR01MB6113.jpnprd01.prod.outlook.com https://git.postgresql.org/pg/commitdiff/f3b141c482552a57866c72919007d6481cd59ee3
删除一些可翻译字符串中对 [U]INT64_FORMAT 的使用。%lld(带有 (long long))或 %llu(带有 (unsigned long long))更适合。这类似于
作者:Kyotaro Horiguchi 讨论:https://postgr.es/m/20210421.200000.1462448394029407895.horikyota.ntt@gmail.com https://git.postgresql.org/pg/commitdiff/62aa2bb293148c13851484e63db4835e3c53147f
修复 fmgr.c 中的一些注释。2a0faed 中的疏忽。作者:Hou Zhijie 讨论:https://postgr.es/m/OS0PR01MB5716405E2464D85E6DB6DC0794469@OS0PR01MB5716.jpnprd01.prod.outlook.com https://git.postgresql.org/pg/commitdiff/45c0c5f70eb5e22d31be8bb9a8b4d9c66a3e9b37
在 xlogreader.c 中添加一些被遗忘的 LSN_FORMAT_ARGS()。6f6f284 引入了一个特定的宏,使 LSN 的 printf() 操作更容易。这处理了看起来没有获得调用的其余代码路径。作者:Michael Paquier 审阅人:Kyotaro Horiguchi、Tom Lane 讨论:https://postgr.es/m/YIJS9x6K8ruizN7j@paquier.xyz https://git.postgresql.org/pg/commitdiff/4aba61b87026b43fb37fc8e9ec5d9ae208e07b6b
文档:删除一些标签中多余的空格。作者:Justin Pryzby 讨论:https://postgr.es/m/20210423184338.GL7256@telsasoft.com https://git.postgresql.org/pg/commitdiff/0d0049c58b4970183a102fc1f7dc1e9bef2a7149
修复 execMain.c 中的注释。1375422 重构了执行器代码的这一区域,并且一些注释已过时。作者:Yukun Wang 审阅人:Amul Sul 讨论:https://postgr.es/m/OS0PR01MB60033394FCAEF79B98F078F5B4459@OS0PR01MB6003.jpnprd01.prod.outlook.com https://git.postgresql.org/pg/commitdiff/9b5558e7ad4706bbd53947e5b4d7c06e150390a5
Amit Kapila 推送了
Peter Eisentraut 推送了
使用正确的格式占位符表示 pid。应该是有符号的,而不是无符号的。https://git.postgresql.org/pg/commitdiff/640b91c3ed24002b34c7226fb51ef9176fb72713
不要在消息字符串中使用 INT64_FORMAT。请改用 %lld 并强制转换为 long long int。https://git.postgresql.org/pg/commitdiff/3286065651477c2060910dfb42b3cedbd79a7980
修复拼写错误。https://git.postgresql.org/pg/commitdiff/f0ec598b4323d8b29df5c67f2cd0000547a507ed
文档:提高连字符的一致性。https://git.postgresql.org/pg/commitdiff/544b28088f9d41750ccf193812da62bdfe4bd98a
使用正确的时间线 ID 格式占位符。应该使用 %u 而不是 %d。https://git.postgresql.org/pg/commitdiff/39d0928a0e88426ee64189898565c40d4af9ad96
将 DISTINCT 添加到信息模式使用视图中。由于 pg_depend 可以包含重复条目,我们需要在使用 pg_depend 构建的信息模式视图中消除这些条目,使用 DISTINCT。一些较旧的视图已经正确地执行了此操作,但一些最近添加的视图没有。(在某些视图中,可能无法重现此问题,因为实现会如何在记录依赖项时进行重复数据删除,但似乎最好在所有情况下都保持一致。)https://git.postgresql.org/pg/commitdiff/d84ffffe582b8e036a14c6bc2378df29167f3a00
更新 config.guess 和 config.sub。https://git.postgresql.org/pg/commitdiff/26ac261ee4033710cad44f7924d53753129b60c7
修复文档文件中一些尾随的空格。https://git.postgresql.org/pg/commitdiff/197d33ccbe888fc84ae4e49bb241e88ea3c81f15
修复不正确的格式占位符。https://git.postgresql.org/pg/commitdiff/7776a23a4bdeb7215e4f8ddea5989cb143becc12
文档:修复拼写错误。作者:Justin Pryzby pryzby@telsasoft.com https://git.postgresql.org/pg/commitdiff/9bd563aa9f0694994a6640946a7ee3dc0431d507
pg_amcheck:使用日志函数。这大部分已经完成,但一些错误消息是以冗长的方式打印的。https://git.postgresql.org/pg/commitdiff/add5fad78aac8da96aeeb730155d35b16ff9b55a
为 WSAGetLastError() 使用正确的格式占位符。一些代码认为这是无符号的,但它是有符号的 int。https://git.postgresql.org/pg/commitdiff/9486844f301e265a3ad11b612decaba2462c3c15
从错误消息中分解出系统调用名称。相反,通过格式占位符将它们放入。这减少了不同的可翻译消息的数量,也减少了翻译期间出现拼写错误的可能性。我们已经在许多情况下对系统调用参数进行了此操作,因此这只是将相同的事情更进一步。讨论:https://postgresql.ac.cn/message-id/flat/92d6f545-5102-65d8-3c87-489f71ea0a37%40enterprisedb.com https://git.postgresql.org/pg/commitdiff/82c3cd974131d7fa1cfcd07cebfb04fffe26ee35
Peter Geoghegan 推送了
记录 VACUUM 中 LP_DEAD 记账问题。记录 VACUUM 的软假设,即在修剪期间遇到的任何 LP_DEAD 项在 VACUUM 完成之前将变为 LP_UNUSED 项。这是 VACUUM 用于生成其关于表的最终报告给统计信息收集器的记账所必需的。它还影响 VACUUM 如何确定哪些堆页面是可截断的。在这两种情况下,VACUUM 都关注的是页面在不久的将来的可能内容,而不是页面的当前内容。这种情况造成了一种错误的印象,即 VACUUM 的死元组记账与 ANALYZE 期间使用的类似记账存在显着差异。至少在软假设完全奏效的情况下,过去和现在都没有实质性的差异。现在这一点更清楚了。同时记录了 VACUUM 的死元组记账未完全奏效的情况。VACUUM 可能会留下大量 LP_DEAD 项,并且不会在 VACUUM 的统计信息收集器报告中记录为剩余的死元组。此行为可以追溯到提交 a96c41fe,该提交使 VACUUM 能够在用户请求时不进行索引和堆清理。提交 1e55e7d1 最近添加到 VACUUM 的故障保护机制采用了相同的死元组记账方法。报告者:Masahiko Sawada sawada.mshk@gmail.com 讨论:https://postgr.es/m/CAH2-Wz=Jmtu18PrsYq3EvvZJGOmZqSO2u3bvKpx9xJa5uhNp=Q@mail.gmail.com https://git.postgresql.org/pg/commitdiff/7136bf34f28892362144ae2e350714836a5c0c0c
amcheck:MAXALIGN() nbtree 特殊区域偏移量。这并非绝对必要,但理论上如果未来 nbtree 特殊区域的宽度发生变化,它可能会很重要——即使有填充,它的总大小也可能不是 MAXALIGN() 量子的偶数。PageInit() 会对所有特殊区域偏移量进行 MAXALIGN() 操作,但 amcheck 使用该偏移量来执行行指针的初始基本验证,因此我们不依赖于页面头的偏移量。这样做的真正原因是为添加其他索引 AM 的 amcheck 覆盖率的新代码设置一个好的示例。报告者:Bharath Rupireddy bharath.rupireddyforpostgres@gmail.com 讨论:https://postgr.es/m/CALj2ACUMqTR9nErh99FbOBmzCXE9=gXNqhBiwYOhejJJS1LXqQ@mail.gmail.com https://git.postgresql.org/pg/commitdiff/bb3ecc8c961896ecb2ad3d5ba705c2877b933945
Magnus Hagander 推送了
修复注释中的拼写错误。作者:Julien Rouhaud 回溯:11 讨论:https://postgr.es/m/20210420121659.odjueyd4rpilorn5@nol https://git.postgresql.org/pg/commitdiff/8b4b5669cde2b17bd6b5d68f584d97078f3296ac
提到 toplevel 是 pg_stat_statements 键的一部分。同时,还记录了如果 pg_stat_statements.track 设置为 top,则 toplevel 始终为 true。作者:Julien Rouhaud 报告者:Fujii Masao 讨论:https://postgr.es/m/a878d5ea-64a7-485e-5d2f-177618ebc52d@oss.nttdata.com https://git.postgresql.org/pg/commitdiff/7531fcb1fcf5b3ea2f49959a3f095c083e3fc4c4
Andrew Dunstan 推送了
避免 PostgresNode 中不幸的 IPC::Run 路径缓存。提交 b34ca595ab 提供了 PostgresNode 的安装感知实例。但是,事实证明 IPC::Run 通过缓存二进制文件的路径而不再次查询该路径(即使它已更改)来解决此问题。我们通过使用已安装的路径而不是仅使用将在环境路径中查找的裸名称来调用 Postgres 二进制文件来解决此问题(如果存在已安装的路径)。对于没有已安装路径的常见情况,我们继续使用裸命令名称。Mark Dilger 的诊断和解决方案 讨论:https://postgr.es/m/E8F512F8-B4D6-4514-BA8D-2E671439DA92@enterprisedb.com https://git.postgresql.org/pg/commitdiff/95c3a1956ec9eac686c1b69b033dd79211b72343
仅在 Windows 上的 PostgresNode 中测试非 127.0.0.1 地址。已发现这会在强制使用 tcp 时导致挂起。Alexey Kodratov 讨论:https://postgr.es/m/82e271a9a11928337fcb5b5e57b423c0@postgrespro.ru 回溯到所有活动分支 https://git.postgresql.org/pg/commitdiff/d064afc7204b52cb78a83fea0e686693ce5ba00c
修复提交 d064afc720 中的愚蠢的 perl 错误。https://git.postgresql.org/pg/commitdiff/e014d25deade08df082d2b37de45adb0c984f563
使 PostgresNode 了解版本。创建了一个新的 PostgresVersion 对象类型,并在 PostgresNode 中使用 `pg_config --version` 的输出,并将结果存储在 PostgresNode 对象中。此对象可以与其他 PostgresVersion 对象或数字或字符串进行比较。目前认为 PostgresNode 与 12 及更低版本兼容,因此如果使用 12 之前的版本,PostgresNode 将发出警告。没有尝试处理旧版本中的不兼容性 - 这仍然是后续开发周期中要进行的工作。基于 Mark Dilger 和 Jehan-Guillaume de Rorthais 的代码。讨论:https://postgr.es/m/a80421c0-3d7e-def1-bcfe-24777f15e344@dunslane.net https://git.postgresql.org/pg/commitdiff/4c4eaf3d19201c5e2d9efebc590903dfaba0d3e5
使 PostgresVersion 代码更加健壮和简单。根据 Alvaro Herrera 的抱怨。https://git.postgresql.org/pg/commitdiff/502dc6df8f6eeba06812ce09488efc7e684f5ec9
教 PostgresVersion 所有标记非发布代码的方法。除了 'devel' 之外,version_stamp.pl 还提供了 'alphaN' 'betaN' 和 'rcN',因此教 PostgresVersion 了解这些。还存储版本字符串,而不是尝试在字符串化期间重建它。讨论:https://postgr.es/m/YIHlw5nSgAHs4dK1@paquier.xyz https://git.postgresql.org/pg/commitdiff/aa271209f6d995488fc5cba9731415f974823990
为 pg_amcheck 提供一个 --install-missing 选项。如果数据库中不存在 amcheck,这将会在数据库中安装它。扩展名的默认模式为 pg_catalog,但可以通过为该选项提供一个值来覆盖此设置。Mark Dilger,我稍微润色了一下。(相当不同)讨论:https://postgr.es/m/bdc0f7c2-09e3-ee57-8471-569dfb509234@dunslane.net https://git.postgresql.org/pg/commitdiff/b859d94c638968ccbb517ac7e151bdd94ed7c16a
Tom Lane 推送了
修复某些按聚合排序情况下的规划器故障。增量排序补丁引入的疏忽导致在某些情况下排序键涉及聚合或窗口函数时出现“找不到要排序的路径键项”错误。这里的基本问题是 find_em_expr_usable_for_sorting_rel 没有正确地模拟 prepare_sort_from_pathkeys 稍后会做什么。与其希望我们能够使这些函数保持同步,不如重构,以便它们实际上共享用于识别合适排序表达式的代码。通过这种重构,tlist.c 的 tlist_member_ignore_relabel 未使用。我在 HEAD 中删除了它,但在 v13 中保留了它,以防任何扩展程序正在使用它。根据 Luc Vlaming 的报告。回溯到出现问题的 v13。James Coleman 和 Tom Lane 讨论:https://postgr.es/m/91f3ec99-85a4-fa55-ea74-33f85a5c651f@swarm64.com https://git.postgresql.org/pg/commitdiff/375398244168add84a884347625d14581a421e71
重命名 find_em_expr_usable_for_sorting_rel。我不太喜欢这个函数名称,因为它没有表达正在发生的事情。此外,仅返回排序表达式并没有太大帮助——通常,调用者还需要 EquivalenceMember 的其他一些字段。但唯一的调用者实际上只需要一个 bool 结果,因此让我们将其设为“bool relation_can_be_sorted_early()”。讨论:https://postgr.es/m/91f3ec99-85a4-fa55-ea74-33f85a5c651f@swarm64.com https://git.postgresql.org/pg/commitdiff/7645376774c8532159f5f0f905e5e734d4ccbb18
修复未加括号的 XLogRecHasBlockRef() 宏。提交 f003d9f87 使此宏的括号不足(或者,可以说,过多)。这对诸如“if (!XLogRecHasBlockRef(record, 1)) ...”之类的调用的正确性是灾难性的。只有少数几个这样的调用,这也许解释了为什么我们没有立即注意到(我们 WAL 重放测试的普遍弱点是另一个因素)。我通过调试间歇性重放失败(如 2021-04-08 14:33:30.191 EDT [29463] PANIC: 无法找到 ID 为 1 的备份块 2021-04-08 14:33:30.191 EDT [29463] CONTEXT: WAL redo at 0/95D3438 for SPGist/ADD_NODE: off 1; blkref #0: rel 1663/16384/25998, blk 1)发现了它https://git.postgresql.org/pg/commitdiff/9e41148229192dccc4bcc40f53af588b73d8ffea
改进 SP-GiST 记录的 WAL 记录描述。在追踪前一次提交中修复的错误时,我对 spg_desc 的低质量输出感到非常恼火。添加缺少的字段,尝试使格式一致。https://git.postgresql.org/pg/commitdiff/783be78ca91166ac7f80c953f2bbc5af1f61c6cd
文档:记录 round() 函数的平局决胜行为。回溯到 v13;旧分支中的表布局不适合添加此类详细信息。Laurenz Albe 讨论:https://postgr.es/m/161881920775.685.12293798764864559341@wrigleys.postgresql.org https://git.postgresql.org/pg/commitdiff/82b13dbc4d4b46f71ca95ce1cc15c425deff5957
不要在引用不可用的系统列时崩溃。对当系统属性不可用时,特定于槽类型的 getsysattr 函数应该执行什么操作采用更一致的策略。也就是说,它们都应该抛出相同的面向用户的错误,而不是以各种方式崩溃或发出面向开发人员的消息。这解决了提交 a71cfc56b 和 3fb93103a(在 v13 和 v12 中)中可识别的问题,因此将它们回溯到这些分支中,以及一个测试用例,以尽量确保我们不会再次破坏它。目前尚不清楚 HEAD 中是否可以访问任何以前的崩溃情况,但在任何情况下,这似乎都是一个良好的安全改进。讨论:https://postgr.es/m/141051591267657@mail.yandex.ru https://git.postgresql.org/pg/commitdiff/d479d00285255d422a2b38f1cfaa35808968a08c
Bruce Momjian 推送了
调整查询 ID 功能以使用 pg_stat_activity.query_id。以前,它是 pg_stat_activity.queryid 以匹配 pg_stat_statements 的 queryid 列。这是对补丁 4f0b0966c8 的调整。这也调整了一些内部函数调用以匹配。Catversion 增加了。报告者:Álvaro Herrera,Julien Rouhaud 讨论:https://postgr.es/m/20210408032704.GA7498@alvherre.pgsql https://git.postgresql.org/pg/commitdiff/9660834dd8bf5b093f7b49eef846666201d45a35
修复 log_line_prefix 的 query_id 和 log_statement 的交互。log_statement 在计算 query_id 之前发出,因此正确清除该值,并记录交互。报告者:Fujii Masao,Michael Paquier 讨论:https://postgr.es/m/YHPkU8hFi4no4NSw@paquier.xyz 作者:Julien Rouhaud https://git.postgresql.org/pg/commitdiff/db01f797dd48f826c62e1b8eea70f11fe7ff3efc
文档:提及 <link> 可以在 <command> 内部,但不能在 <xref> 内部。这在提交 9081bddbd 中讨论过。报告者:Peter Eisentraut 讨论:https://postgr.es/m/flat/87o8pco34z.fsf@wibble.ilmari.org https://git.postgresql.org/pg/commitdiff/84f15ccd4c25c4ffc4de6ed82f7658a3a199a1d7
Álvaro Herrera 推送了
在分离分区时,不要添加冗余约束。在 ALTER TABLE .. DETACH CONCURRENTLY 时,我们会添加一个新的表约束,该约束与分区约束重复。但是,如果分区已经具有另一个暗示该约束的约束,则这是不必要的。如果存在完全“相等”的匹配,我们已经避免添加重复约束 - 这只是提高了检查的质量。作者:Justin Pryzby pryzby@telsasoft.com 审核者:Álvaro Herrera alvherre@alvh.no-ip.org 讨论:https://postgr.es/m/20210410184226.GY6592@telsasoft.com https://git.postgresql.org/pg/commitdiff/7b357cc6ae553c0ecacdc11b2e5278b7bf477dba
添加关于 extract_autovac_opts 不持有锁的注释。根据 Tom Lane 的观察。讨论:https://postgr.es/m/1901125.1617904665@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/7c298c6573a0f181963ddcb40c850fa9c7da0ada
修复分区分离中的 relcache 不一致风险。在来自 ri_triggers.c 的查询期间,我们需要省略标记为挂起分离的分区 - 否则,RI 查询会欺骗性地允许将行插入引用表中,该行的相应行位于分离的分区中。这是错误的:一旦分离操作完成,该行将成为孤立行。但是,代码在可重复读取事务中没有这样做,因为 relcache 保留了包含分区的分区描述符的副本,并在 RI 查询中使用它。此提交更改了 partdesc 缓存代码,使其仅保留不依赖于快照的描述符(即:那些不存在分离分区的描述符,以及那些包含分离分区的描述符)。当请求不带分离分区的 partdesc 时,我们每次都创建一个新的;此外,这些 partdesc 存储在 PortalContext 中,而不是 CacheMemoryContext 中。find_inheritance_children 获得一个新的输出 *detached_exist
布尔值,该值指示是否找到任何标记为挂起分离的分区。其“include_detached”输入标志已更改为“omit_detached”,因为该名称更自然地捕获了所需的语义。CreatePartitionDirectory() 和 RelationGetPartitionDesc() 参数的名称也相同地更改。这是因为运行 relcache 破坏的 buildfarm 成员(它不会保留不正确缓存的 partdesc)破坏了一个测试,这使我们意识到该测试的预期输出是错误的。此提交还更正了该预期输出。作者:Amit Langote amitlangote09@gmail.com 作者:Álvaro Herrera alvherre@alvh.no-ip.org 讨论:https://postgr.es/m/3269784.1617215412@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/8aba9322511f718f12b618470d8c07f0ee5f0700
修复未初始化内存错误。让 find_inheritance_children 的相关调用者在调用它之前将 detached_exist 值设置为 false,以便该例程只需要在必要的情况下将其设置为 true。否则不要触碰它。根据 buildfarm 成员 thorntail(它在这里报告了一个 UBSan 失败)。 https://git.postgresql.org/pg/commitdiff/43b55ec4bc3bc06596d966391f16defe016310ec
Etsuro Fujita 推送了
Fujii Masao 推送了
文档:修复关于 pg_basebackup 的过时描述。以前的文档说明,如果使用“-X none”选项,则无法保证在从备用服务器进行备份时,所有必需的 WAL 文件都将在 pg_basebackup 结束时归档。但是此限制已通过提交 52f8a59dd9 删除。现在,即使从备用服务器进行备份,pg_basebackup 也可以等待所有必需的 WAL 文件归档。因此,此提交从文档中删除了此类过时的描述。此外,此提交在文档中添加了关于从备用服务器进行备份时的限制的新描述。限制是 pg_basebackup 无法强制备用服务器在备份结束时切换到新的 WAL 文件,这可能会导致 pg_basebackup 等待很长时间才能切换和归档最后一个所需的 WAL 文件,尤其是在主服务器上的写入活动较低时。向引入此问题的 v10 进行反向移植。报告者:Kyotaro Horiguchi 作者:Kyotaro Horiguchi,Fujii Masao 审核者:Kyotaro Horiguchi,Fujii Masao 讨论:https://postgr.es/m/20210420.133235.1342729068750553399.horikyota.ntt@gmail.com https://git.postgresql.org/pg/commitdiff/eaec48b3c54eec222d64468b57af80ee4ddf76a9
在 gram.y 和 parsenodes.h 中将 COMPRESSION 选项重新排序为字母顺序。提交 bbe0a81db6 在 CREATE TABLE 命令中引入了“INCLUDING COMPRESSION”选项,但之前的 gram.y 和 parsenodes.h 中的 TableLikeOption 没有将其与其余选项按字母顺序分类。作者:Fujii Masao 审核者:Michael Paquier 讨论:https://postgr.es/m/YHerAixOhfR1ryXa@paquier.xyz https://git.postgresql.org/pg/commitdiff/3f20d5f37086e548c32ddb9d6ae09c2e1ce300ce
Alexander Korotkov 推送了
Noah Misch 推送了
Peter Smith 发送了一个补丁,以重新排列 CREATE SUBSCRIPTION 的选项列表。
Bharath Rupireddy 发送了另一个修订版的补丁,以添加用于多重和单次插入的新表 AM,并将相同的新表 AM 用于 CTAS、REFRESH MATERIALIZED VIEW 和 COPY。
Amul Sul 发送了另一个修订版的补丁,以从 transformCreateStmt 中删除冗余变量。
Pavel Stěhule 发送了另一个修订版的补丁,以使在 auto_explain 中记录 seqscan 成为可能。
David Rowley 发送了另一个修订版的补丁,以减少 Windows 上 contrib 构建的特殊情况的数量。
Amul Sul 发送了另一个修订版的补丁,以添加 RelationGetSmgr 内联函数。
Masahiko Sawada 发送了另一个修订版的补丁,以跳过冻结元组插入的 vmbuffer。
Dagfinn Ilmari Mannsåker 发送了一个补丁,以创建一个用于从表达式中删除 RelabelType 节点的函数,从而将相同模式的多个重复项合并为一个。
Masahiko Sawada 和 Amit Kapila 交换了使用 HTAB 进行复制槽统计信息的补丁。
Vigneshwaran C 和 Amit Kapila 交换了在复制槽释放期间更新解码统计信息的补丁。
Bharath Rupireddy 发送了一个补丁,以在 lazy_truncate_heap、do_pg_stop_backup 中使用 WaitLatches 进行锁等待,而不是 pg_usleep(),并用于身份验证前和身份验证后延迟。
Bharath Rupireddy 发送了一个补丁,将 parallel_leader_participation GUC 移动到资源消耗类别。
Peter Smith 发送了另一个修订版的补丁,以向内置逻辑复制添加对准备好的事务的支持,并为流式事务添加准备 API 支持。
Dan Carter 发送了一个补丁,以向 libpq 添加 GSSAPI ccache_name 选项。
Takamichi Osumi 和 Amit Kapila 交换了补丁,以修复 TRUNCATE 和同步逻辑复制之间的不一致性。
Amit Langote 发送了一个补丁,以修复 pgoutput 插件中的 tupdesc 泄漏。
Bharath Rupireddy 发送了一个补丁,以跳过重复关系的 VACUUM/ANALYZE。
Pavel Stěhule 发送了另一个修订版的补丁,以向 psql 添加 PSQL_WATCH_PAGER 设置。
Masahiro Ikeda 发送了另一个修订版的补丁,以在不引入新变量的情况下提高报告 WAL 统计信息的性能。
Fujii Masao 发送了另一个修订版的补丁,以记录 TRUNCATE 在外部表上的工作方式,并确保原始查询中的任何 ONLY 子句都不会传递给外部表。
Hou Zhijie 发送了一个补丁,以修复具有错误并行安全标志的测试用例。
Zeng Wenjing 发送了另一个修订版的补丁,以实现全局临时表。
Simon Riggs 发送了一个补丁,以记录将约束更改为 VALIDATE 它需要 SHARE UPDATE EXCLUSIVE 锁的事实。
Simon Riggs 发送了一个补丁,以降低 CHECK 约束在允许它们为 NOT VALID 时的锁级别。
Daniil Zakhlystov 发送了另一个修订版的补丁,以添加 zlib 和 zstd 流式压缩,并实现 libpq 压缩。
Tom Lane 发送了一个补丁,以更好地记录儒略日期。
Álvaro Herrera 发送了一个补丁,以向 psql 添加 ALTER TABLE .. DETACH PARTITION CONCURRENTLY 的制表符补全。
Tom Stellard 发送了一个补丁,使 jit 能够解决 s390x 上的潜在数据布局不匹配问题。
Justin Pryzby 发送了一个补丁,以在执行 CREATE TABLE ... LIKE 时添加 COMPRESSION 作为可能性。
Kyotaro HORIGUCHI 发送了一个补丁,以修复一些可疑的消息。
Tang 发送了一个补丁,以在 psql 中比较“pg_”的内容时使用 pg_strncasecmp 替换 strncmp。
Tang 发送了另一个修订版的补丁,以支持 psql 中大写字符输入的制表符补全。
Hou Zhijie 发送了另一个修订版的补丁,以使并行执行 INSERT SELECT 成为可能。
Mark Dilger 和 Robert Haas 交换了补丁,以向 pg_amcheck 添加 toast 指针损坏检查。
Bharath Rupireddy 发送了一个补丁,以在 PageGetItemIdCareful 中 MAXALIGN sizeof(BTPageOpaqueData)。
Ajin Cherian 发送了另一个修订版的补丁,以跳过逻辑复制的空事务。
Alexander Pyhalov 提交了补丁的另一个修订版本,将 restrictinfos 下推到 CTE,并尝试在此过程中修剪分区。
Thomas Munro 提交了一个补丁,在 src/test/recovery 下添加一个新的 TAP 测试,该测试使用 wal_consistency_checking=all 运行回归测试。
Joel Jacobson 提交了一个补丁,修复了事件触发器的 pg_identify_object_as_address。
Takamichi Osumi 提交了一个补丁,用一个具有相同效果的断言替换了 ReorderBufferProcessTXN 中对 RelationIsLogicallyLogged 的检查。
David Rowley 提交了另一个修订版本的补丁,通过允许使用哈希表来加速带有 Consts 集合的 NOT IN()。
David Rowley 和 Yura Sokolov 交换了补丁,在 SMgr 中使用 simplehash.h 而不是 dynahash。
Julien Rouhaud 提交了一个补丁,修复了 query_id 计算中的一些疏漏。
Tom Lane 提交了一个补丁,要求 pq_getmessage 的调用者提供一个长度上限,并安装与 libpq 在服务器中相同的短消息与长消息启发式方法。