本周人物: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 提供。
请在太平洋标准时间(PST8PDT)周日晚上3:00之前将新闻和公告发送至 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
在 psql 的 GRANT 的标签补全角色列表中添加 CURRENT_ROLE。此兼容性已在 45b9805 中添加,但 psql 忘记了调用。作者:Wei Wang 审阅者:Aleksander Alekseev 讨论:https://postgr.es/m/OS3PR01MB6275935F62E161BCD393D6559E489@OS3PR01MB6275.jpnprd01.prod.outlook.com https://git.postgresql.org/pg/commitdiff/22b2dec31b2ef4dfee299290b16375e9fa6e6932
文档:将 compute_query_id 列为 pg_stat_statements 的必需配置。不启用 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
文档:将 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 引入了一个特殊的宏,可以更轻松地使用 printf() 打印 LSN。这处理了看起来是剩余未被调用的代码路径。作者:Michael Paquier 审阅者:Kyotaro Horiguchi, Tom Lane 讨论:https://postgr.es/m/YIJS9x6K8ruizN7j@paquier.xyz https://git.postgresql.org/pg/commitdiff/4aba61b87026b43fb37fc8e9ec5d9ae208e07b6b
文档:移除文档中一些标签的多余空格。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 上为非 127.0.0.1 地址测试 PostgresNode。这已被发现会导致强制使用 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 知道所有标记非发布代码的方式。除了 version_stamp.pl 为 'alphaN' 'betaN' 和 'rcN' 提供的 'devel' 外,还让 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 提交
修复某些按聚合排序时的规划器故障。增量排序补丁引入的疏忽导致在涉及聚合或窗口函数的排序键的一些情况下出现“无法找到要排序的 pathkey 项”错误。基本问题是 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 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: failed to locate backup block with 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 记录描述。在追踪上一个提交修复的 bug 时,我非常恼火 spg_desc 的输出质量不高。添加缺失的字段,尝试使格式一致。https://git.postgresql.org/pg/commitdiff/783be78ca91166ac7f80c953f2bbc5af1f61c6cd
文档:记录 round() 函数的 tie-breaking 行为。回填至 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-without- detached-partitions 时,我们每次都重新创建一个;此外,这些 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
修复未初始化内存 bug。让 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”选项,当从 standby 备份时,不能保证所有必需的 WAL 文件在 pg_basebackup 结束时都被存档。但此限制已由提交 52f8a59dd9 移除。现在,即使从 standby 备份,pg_basebackup 也可以等待所有必需的 WAL 文件被存档。因此,此提交从文档中删除了这种过时的描述。此提交还向文档添加了关于从 standby 备份时限制的新描述。限制是 pg_basebackup 不能强制 standby 在备份结束时切换到新的 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”选项,但之前 TableLikeOption 在 gram.y 和 parsenodes.h 中没有将其与其余选项按字母顺序分类。作者: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,并将其用于 CTAS、REFRESH MATERIALIZED VIEW 和 COPY。
Amul Sul 发送了另外两个修订版的补丁,用于从 transformCreateStmt 中删除一个冗余变量。
Pavel Stěhule 发送了另一个修订版的补丁,使 auto_explain 能够记录 seqscans。
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 发送了另外两个修订版的补丁,为内置逻辑复制添加了对预备事务的支持,并为流式事务添加了 prepare 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 发送了一个补丁,以记录验证约束需要 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 发送了一个补丁,用 pg_strncasecmp 替换 strncmp 来比较 psql 中的“pg_”字符串。
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 发送了另一个修订版的补丁,通过允许使用哈希表来加速具有一组常量的 NOT IN()。
David Rowley 和 Yura Sokolov 交换了补丁,在 SMgr 中使用 simplehash.h 而不是 dynahash。
Julien Rouhaud 发送了一个补丁,用于修复查询 ID 计算中的一些疏忽。
Tom Lane 发送了一个补丁,要求 pq_getmessage 的调用者提供一个上限长度,并在服务器中安装与 libpq 相同的短消息/长消息启发式方法。