本周人物:https://postgresql.life/post/stephane_schildknecht/
check_pgactivity 2.5 发布,这是一个用于监控 PostgreSQL 的 Nagios 远程代理。https://github.com/OPMDG/check_pgactivity/releases/latest
WAL-G 0.2.19 发布,这是一个用 Go 编写的 PostgreSQL 备份管理系统。https://github.com/wal-g/wal-g/releases
http://archives.postgresql.org/pgsql-jobs/2020-12/
Planet PostgreSQL: http://planet.postgresql.org/
本周 PostgreSQL 周报由 David Fetter 提供。
请在太平洋标准时间(PST8PDT)周日晚上3:00之前将新闻和公告发送至 david@fetter.org。
== 已应用补丁 ==
Tom Lane 提交
修复最近引入的 psql 的 \connect 命令的错误。由于我误读了现有代码的作用,提交 85c54287a 等错误地处理了 "\c connstring" 在 connstring 中提供密码的情况。在这种情况下,我们应该使用该密码,但在 85c54287a 中,我们忽略了它(而是提示输入密码)。提交 94929f1cf 在 HEAD 中修复了这个问题,但由于我认为它只是清理了一个长期存在的错误行为,而不是我刚刚造成的,所以我没有回溯补丁。因此,回溯 94929f1cf 中与密码管理相关的部分。除了修复引入的错误外,这意味着 "\c -reuse-previous=on connstring" 将允许重用现有连接的密码,如果 connstring 中的用户/主机/端口未更改。这之前没有发生,但看起来像是一个错误修复,而且我也不想在不同版本之间存在此代码的显著差异。还修复了一个具有相同根本原因的错误,该错误与是否覆盖 connstring 中的 client_encoding 设置有关。在 85c54287a 中,我们总是这样做的;恢复之前的行为,只在 stdin/stdout 是终端且没有 PGCLIENTENCODING 环境变量设置时覆盖。 (我发现这个定义有点令人惊讶,但现在似乎不是重新审视它的时机。)根据 Krzysztof Gradek 的 bug #16746。与之前的补丁一样,回溯到所有支持的分支。讨论:https://postgr.es/m/16746-44b30e2edf4335d4@postgresql.org https://git.postgresql.org/pg/commitdiff/7e5e1bba034ee02245e8a3833aa1f6ea7253b584
修复 join relations 的 direct_lateral_relids 的错误计算。如果一个 PlaceHolderVar 需要在 join relation 中进行评估,但其值只在那里需要,而不是在更高级别需要,我们就忽略了更新 joinrel 的 direct_lateral_relids 以包含 PHV 的源 rel。这会导致问题,因为 join_is_legal() 将不允许 joinrel 与 PHV 的源 rel 连接,导致“无法构建任何 N 路连接”的规划器失败。根据 Andreas Seltenreich 的报告。回溯到问题起源的 9.5 版本。讨论:https://postgr.es/m/87blfgqa4t.fsf@aurora.ydns.eu https://git.postgresql.org/pg/commitdiff/b1738ff6ab73203cbbc02d7fb82941dbc061d301
防止独立后端进行并行索引构建。如果没有 postmaster,这行不通,并且代码确实会因尝试而失败断言。应该有一个 IsUnderPostmaster 检查来限制并行性的使用,就像规划器对普通并行查询所做的那样。提交 40d964ec9 正确地做到了这一点,所以遵循其模型,在检查 max_parallel_maintenance_workers == 0 的地方进行 IsUnderPostmaster 检查。总的来说,实现并行实用程序操作的新代码也应该这样做。Yulin Pei 报告并提供了补丁,我进行了化妆调整。回溯到此代码引入的 v11 版本。讨论:https://postgr.es/m/HK0PR01MB22747D839F77142D7E76A45DF4F50@HK0PR01MB2274.apcprd01.prod.exchangelabs.com https://git.postgresql.org/pg/commitdiff/275b3411d9189b3974687766db06727d64d22979
删除 DocBook DTD 的配置时间探测。在 OpenSP 文档工具链上时,检查 DocBook 是否已安装很有价值,因为该工具链很难完全安装。如今,只要安装了 xmllint 和 xsltproc,您就万事俱备了,因为这些程序会在需要时从网络获取 DocBook 文件。此外,在配置时进行此测试意味着即使您以后不感兴趣构建文档,也可能会发生网络访问。这可能很慢(通常为 2 到 3 秒,尽管有报道称延迟更高),而且在未发出警告的情况下进行非机器访问似乎也不是很好。因此,删除 PGAC_CHECK_DOCBOOK 探测,并调整相关文档。没有那个宏,config/docbook.m4 就没什么内容了,所以我直接删除了它。回溯到 v11,我们开始在该宏的 PGAC_CHECK_DOCBOOK 探测中使用 xmllint。讨论:https://postgr.es/m/E2EE6B76-2D96-408A-B961-CAE47D1A86F0@yesql.se 讨论:https://postgr.es/m/A55A7FC9-FA60-47FE-98B5-139CDC57CE6E@gmail.com https://git.postgresql.org/pg/commitdiff/4823c4f6ac770ebd49b63b0ce64ecfe82987af57
修复 IncrementalSortPath 所需的 outfuncs.c 支持的缺失。出于调试目的,Path 节点应该有 outfuncs 支持,但这在原始增量排序补丁中被忽略了。同时,清理了其他几个小的疏忽,以及 create_incremental_sort_path() 的返回类型选择非常奇怪。(所有现有的调用者都立即将其转换为 "Path *",所以他们不关心,但未来的调用者可能会关心。) outfuncs.c 的修复由 Zhijie Hou 完成,其余部分由我完成。讨论:https://postgr.es/m/324c4d81d8134117972a5b1f6cdf9560@G08CNEXMBPEKD05.g08.fujitsu.local https://git.postgresql.org/pg/commitdiff/8286223f3d820c39f2d5f14222f7ccde53bdf502
确保 expandTableLikeClause() 重新检查相同的表。在现有的实现中,expandTableLikeClause() 会重新执行 transformTableLikeClause() 已经执行过的 relation_openrv 调用。然而,在某些情况下,这可能找不到预期的相同表。我们持有 LIKE 源表的锁,因此它不能被重命名或删除,但搜索路径中可能会出现另一个表排在它前面。这解释了在 bug #16758 中将表克隆为同名临时表时出现的奇怪行为。该情况在 commit 502898192 引入需要两次打开源表的需求之前一直按预期工作,所以我们应该修复它。为了确保我们获得相同的表,让我们通过 OID 而不是名称来重新打开它。这需要在 TableLikeClause 结构体中添加一个 OID 字段,这从 ABI 的角度来看有点令人担忧,但只要它在最后,我认为就没有严重的风险。根据 Marc Boeren 的 bug #16758。与之前的补丁一样,回溯到所有支持的分支。讨论:https://postgr.es/m/16758-840e84a6cfab276d@postgresql.org https://git.postgresql.org/pg/commitdiff/f7f83a55bf6051818a0e4387d718867ecfa8561b
修复规划器中删除无用的 RESULT RTE 时遗漏的步骤。Commit 4be058fe9 忘记了 append_rel_list 在我们删除无用的结果 RTE 时已经填充,它可能包含需要调整的 PlaceHolderVars,就像主解析树中的那些一样。这可能导致以后规划器尝试处理未调整的 PHV 时出现“relid N 的关系条目不存在”的失败。根据 Tom Ellis 的报告。回溯到 bug 引入的 v12 版本。讨论:https://postgr.es/m/20201205173056.GF30712@cloudinit-builder https://git.postgresql.org/pg/commitdiff/e98c900993e89ad9278cdfbf0ba5495381a1faac
Fujii Masao 提交
改进后台工作进程终止的日志消息。以前,使用 die() 作为 SIGTERM 信号处理程序的后台工作进程的关闭会产生日志消息“terminating connection due to administrator command”(因管理员命令终止连接)。此日志消息令人困惑,因为后台工作进程不是连接。此提交改进了该日志消息,将其改为“terminating background worker XXX due to administrator command”(因管理员命令终止后台工作进程 XXX)(XXX 将被替换为后台工作进程的名称)。这与另一个 SIGTERM 信号处理程序 bgworker_die() 为后台工作进程报告的日志消息相同。作者:Bharath Rupireddy 审阅者:Fujii Masao 讨论:https://postgr.es/m/3f292fbb-f155-9a01-7cb2-7ccc9007ab3f@oss.nttdata.com https://git.postgresql.org/pg/commitdiff/98e2d58d66c81d9f1e49813c1acd4d7312089f4a
修复注释中的拼写错误。作者:Haiying Tang tanghy.fnst@cn.fujitsu.com 讨论:https://postgr.es/m/48a0928ac94b497d9c40acf1de394c15@G08CNEXMBPEKD05.g08.fujitsu.local https://git.postgresql.org/pg/commitdiff/6742e14959a3033d946ab3d67f5ce4c99367d332
文档:为进度报告视图添加其他索引条目。在文档中,进度报告视图的索引条目链接到“查看统计信息”部分,但以前它们没有链接到每个视图的专用部分(例如,“ANALYZE 进度报告”)。这在从索引中查找描述每个视图详细信息的章节时很不方便。此提交添加了链接到这些专用章节的其他索引条目。作者:Fujii Masao 审阅者:Shinya Kato 讨论:https://postgr.es/m/e49c2768-65d2-188a-5424-270fa29ccc84@oss.nttdata.com https://git.postgresql.org/pg/commitdiff/0a4db67b5ed05c4013ea968930af36853f088404
允许通过 reload 更改 restore_command 参数。此提交将 restore_command 从 PGC_POSTMASTER 更改为 PGC_SIGHUP。作为此提交的副作用,restore_command 可以在归档恢复期间重置为空。在此设置下,归档恢复将仅尝试重放 pg_wal 目录中可用的 WAL 文件。这与在 restore_command 中指定一个始终失败的命令时的行为相同。请注意,即使在应用此提交后,启动归档恢复时 restore_command 仍然必须指定(非空)。这是为了防止用户忘记指定 restore_command 并启动归档恢复而必需的。感谢 Peter Eisentraut、Michael Paquier、Andres Freund、Robert Haas 和 Anastasia Lubennikova 的讨论。作者:Sergei Kornilov 审阅者:Kyotaro Horiguchi、Fujii Masao 讨论:https://postgr.es/m/2317771549527294@sas2-985f744271ca.qloud-c.yandex.net https://git.postgresql.org/pg/commitdiff/942305a36365433eff3c1937945758f2dbf1662b
跟踪集群中生成的 WAL 记录、FPI 和字节的总数。Commit 6b466bf5f2 允许 pg_stat_statements 跟踪每个语句生成的 WAL 记录、全页映像和字节数。类似地,此提交允许我们跟踪集群范围内的 WAL 统计信息计数器。新的列 wal_records、wal_fpi 和 wal_bytes 被添加到 pg_stat_wal 视图中,并分别报告集群中生成的 WAL 记录、全页映像和字节的总数。作者:Masahiro Ikeda 审阅者:Amit Kapila、Movead Li、Kyotaro Horiguchi、Fujii Masao 讨论:https://postgr.es/m/35ef960128b90bfae3b3fdf60a3a860f@oss.nttdata.com https://git.postgresql.org/pg/commitdiff/01469241b2ff6f17fc0b3f20f01559145ffab29e
Heikki Linnakangas 提交
删除因删除 WITH OIDS 而留下的注释。作者:Amit Langote 讨论:https://postgresql.ac.cn/message-id/CA%2BHiwqGaRoF3XrhPW-Y7P%2BG7bKo84Z_h%3DkQHvMh-80%3Dav3wmOw%40mail.gmail.com https://git.postgresql.org/pg/commitdiff/2bc588798bdd0cdaa8f6cb6713ba8c8cc039fcb1
文档:链接所有对 RFC 的引用。确保 RFC 的首次提及链接到其 ietf.org 条目,后续提及标记为缩写。这使得文档中对 RFC 的引用保持一致。作者:Daniel Gustafsson 讨论:https://postgresql.ac.cn/message-id/2C697878-4D01-4F06-8312-2FEDE931E973%40yesql.se https://git.postgresql.org/pg/commitdiff/415dc2009683904f337a1837b6b4eb7f31c4dc55
修复 pg_rewind 在重置备用服务器时的错误。如果目标是备用服务器,其 WAL 不会以最后一个检查点记录结束,而是以 minRecoveryPoint 结束。我们必须扫描从最后一个共同检查点到 minRecoveryPoint 的所有 WAL 以查找已修改的页面,并在确定服务器是否需要重置时也考虑这部分。回溯到所有支持的版本。作者:Ian Barwick 和我 讨论:https://postgresql.ac.cn/message-id/CABvVfJU-LDWvoz4-Yow3Ay5LZYTuPD7eSjjE4kGyNZpXC6FrVQ%40mail.gmail.com https://git.postgresql.org/pg/commitdiff/2b4f3130382fe2f8705863e4d38589d4d69cd695
修复新添加的测试中的竞态条件。Buildfarm 偶尔在此新测试上失败。我通过在 walreceiver 连接到主节点之前添加一个随机的 0-10 秒延迟来重现此问题。存在一个竞态条件,即 node_3 在完全赶上 node_1 之前被提升,导致时间线分叉。当 node_1 稍后重新配置为 node_3 的备用服务器时,它无法赶上:LOG:主服务器在请求的时间线 1 上没有更多 WAL LOG:在当前恢复点 0/30000A0 之前,为当前数据库系统时间线 1 分叉了时间线 2。这种情况就需要使用 pg_rewind,但在本例中,在我们设置要测试的实际 pg_rewind 场景时已经发生了,所以将测试更改为在 node_3 被提升之前等待它连接并完全赶上,这样就可以得到一个干净、可控的故障转移。还重写了一些注释,以增加清晰度。现有注释详细说明了测试的每个步骤的作用,但没有很好地概述这些步骤试图创建的场景。出于我无法理解的原因,9.6 和 9.5 中的测试设置需要与更高版本略有不同。9.5/9.6 版本需要从备份重新初始化 node 1,而在更高版本中,它可以关闭并重新配置为备用服务器。但即使是 9.5 也应该支持“干净切换”,即主服务器确保在关闭时将待处理的 WAL 复制到备用服务器。了解那里发生了什么会很好,但这与 pg_rewind 和此测试场景无关。讨论:https://postgresql.ac.cn/message-id/b0a3b95b-82d2-6089-6892-40570f8c5e60%40iki.fi https://git.postgresql.org/pg/commitdiff/36a4ac20fcf31361bd42b63b1b3390b28827a69e
Michaël Paquier 提交
重构 EXPLAIN、VACUUM 和 ANALYZE 的选项列表的解析规则。这三个命令一直使用相同的语法规则来处理一组括号内的选项。这重构了代码,使它们使用相同的解析规则,从而减少了一些代码。未来的提交将利用这些选项解析规则为更多的实用程序命令,如 REINDEX 和 CLUSTER。作者:Alexey Kondratov、Justin Pryzby 讨论:https://postgr.es/m/8a8f5f73-00d3-55f8-7583-1375ca8f6a91@postgrespro.ru https://git.postgresql.org/pg/commitdiff/873ea9ee692e7829614f913685db540b17998ba6
文档:删除更多关于与旧版本兼容性的说明。这是 fa42c2e 中工作的后续,该工作没有包含所有之前商定的修复。此处删除的内容可能会使读者感到困惑,因为它们指的是相当旧的服务器版本。作者:Stephen Frost、Tom Lane、Heikki Linnakangas、Yaroslav Schekin 讨论:https://postgr.es/m/CAB8KJ=jYHgnxLLZSNJz7gBTck4TxomngCmGkw3nEMSNF0yL6wA@mail.gmail.com 讨论:https://postgr.es/m/1599765595731-0.post@n3.nabble.com https://git.postgresql.org/pg/commitdiff/8a17f44c1e7a9f3d2a9da97dc3eba4184a2a453c
将 SHA2 例程移至新的通用 API 层用于加密哈希。创建了两个新例程来分配哈希上下文并释放它,因为这对于重构的目标是必要的:将所有 OpenSSL 的加密哈希实现切换为使用 EVP(用于 FIPS,也因为上游不推荐使用低级加密哈希函数已有 20 年)。请注意,自 1.1.0 起,OpenSSL 会隐藏加密哈希上下文的内部细节,因此有必要将分配留给 OpenSSL 本身,这解释了这两个新例程的必要性。这部分工作需要更多工作来正确跟踪具有资源所有者的哈希上下文,但此处并未引入。尽管如此,这次重构使得迁移成为可能。通过将哈希类型直接集成到哈希上下文数据中,将所有 SHA2 实现的例程数量从十二个(SHA{224,256,386,512} 带有 init、update 和 final 调用)减少到五个(create、free、init、update 和 final 调用)。新的加密哈希例程已移至一个名为 cryptohash.c 的新文件中,用于回退实现,SHA2 的特定部分成为 src/common/ 的内部部分。OpenSSL 的特定部分是 cryptohash_openssl.c 的一部分。此基础设施可用于更多哈希类型,如 MD5 或 HMAC。使用内部 SHA2 例程的任何代码路径都已适应正确报告错误,这是此提交的大部分更改。受影响的区域主要是 checksum manifest、libpq 和 SCRAM。请注意,e21cbb4 是首次尝试将 SHA2 切换到 EVP,但它缺乏 libpq 所需的重构,正如此处完成的。此补丁已在 Linux 和 Windows 上进行测试,带或不带 OpenSSL,并且向下支持到 HEAD 支持的最旧版本 1.0.1。作者:Michael Paquier 审阅者:Daniel Gustafsson 讨论:https://postgr.es/m/20200924025314.GE7405@paquier.xyz https://git.postgresql.org/pg/commitdiff/87ae9691d25379785f8c0f81b06a14818cfd8c56
修复 cryptohash_openssl.c 中的编译警告。这些警告是在使用 -O2 编译时出现的。87ae969 中的疏忽。作者:Fujii Masao 讨论:https://postgr.es/m/cee3df00-566a-400c-1252-67c3701f918a@oss.nttdata.com https://git.postgresql.org/pg/commitdiff/91624c2ff8809145880383b0fa84be0ee98f55b5
重构 CLUSTER 和 REINDEX 语法以使用 DefElem 作为选项列表。这改变了 CLUSTER 和 REINDEX,使其成为可能使用括号内的语法来处理选项,同时将选项列表的语法解析规则与现有规则统一起来。这是 873ea9e 对 VACUUM、ANALYZE 和 EXPLAIN 所做工作的一个后续。这有利于 REINDEX,以便对可排序索引和 TABLESPACE 进行潜在的后端过滤,而 CLUSTER 则受益于后者。作者:Alexey Kondratov、Justin Pryzby 讨论:https://postgr.es/m/8a8f5f73-00d3-55f8-7583-1375ca8f6a91@postgrespro.ru https://git.postgresql.org/pg/commitdiff/b5913f6120792465f4394b93c15c2e2ac0c08376
将基于 OpenSSL 的 SHA2 实现更改为使用 EVP digest 例程。上游 OpenSSL 自 2000 年以来就不推荐使用低级哈希例程,并且 pgcrypto 自 5ff4a67 起已切换到 EVP。这利用了 87ae969 中进行的重构,该重构引入了用于加密哈希的分配和释放例程。自 1.1.0 起,OpenSSL 不再发布加密哈希上下文的内容,迫使任何消费者依赖 OpenSSL 进行所有分配。因此,资源所有者回调机制获得了一组新的例程,用于在 OpenSSL 中跟踪和释放加密哈希上下文,防止后端出现任何泄漏风险。由于 87ae969 的重构,前端不需要任何东西,并且 resowner 知识被隔离到 cryptohash_openssl.c 中。请注意,这也修复了在使用 OpenSSL 中 FIPS 进行 SCRAM 身份验证时发生的错误,但由于对此问题的抱怨很少,并且这会导致 ABI 破坏,因此没有进行回溯补丁。作者:Michael Paquier 审阅者:Daniel Gustafsson、Heikki Linnakangas 讨论:https://postgr.es/m/20200924025314.GE7405@paquier.xyz 讨论:https://postgr.es/m/20180911030250.GA27115@paquier.xyz https://git.postgresql.org/pg/commitdiff/4f48a6fbe2b28d8281dbbfa2d334fa2ed8472734
将 cryptohashes.c 重命名为 cryptohashfuncs.c。87ae969 在 src/common/ 中创建了两个名为 cryptohash{_openssl}.c 的新文件,其名称与现有的后端文件 cryptohashes.c 重叠,该文件专用于 SHA2 和 MD5 的 SQL 包装器。此文件被重命名为 cryptohashfuncs.c,以便与 src/common/ 的新 cryptohash 接口更具一致性并减少混淆。作者:Michael Paquier 审阅者:Daniel Gustafsson 讨论:https://postgr.es/m/X8hHhaQgbMbW+aGU@paquier.xyz https://git.postgresql.org/pg/commitdiff/bd94a9c04e04bb3b626e88981a50fcca2bd99d60
Álvaro Herrera 提交
记录并发索引相互等待的情况。由于常规的 CREATE INDEX 命令是独立的,并且没有逻辑数据依赖性,因此并不明显一个表上的并发索引构建事务会阻塞不相关表上并发索引创建的第二阶段,因此记录此注意事项。将其回溯到所有版本。在 master 分支中,提到只有某些索引涉及。作者:James Coleman jtc331@gmail.com 审阅者:David Johnston david.g.johnston@gmail.com 讨论:https://postgr.es/m/CAAaqYe994=PUrn8CJZ4UEo_S-FfRr_3ogERyhtdgHAb2WG_Ufg@mail.gmail.com https://git.postgresql.org/pg/commitdiff/58ebe967f8a1e34a824d6a0a35728027272041c6
避免使用 count == 0 的 memcpy() 的 NULL 源指针。当使用 count == 0 调用 memcpy() 时,编译器可以假定指针不是 NULL,这可能导致优化附近的代码以意想不到的方式。在有效的情况下,我们仍然希望进行此类优化(gcc 的 -fdelete-null-pointer-checks)。相关:commit 13bba02271dc。回溯到 pg11,此特定实例出现在此处。报告者:Ranier Vilela ranier.vf@gmail.com 报告者:Zhihong Yu zyu@yugabyte.com 讨论:https://postgr.es/m/CAEudQApUndmQkr5fLrCKXQ7+ib44i7S+Kk93pyVThS85PnG3bQ@mail.gmail.com 讨论:https://postgr.es/m/CALNJ-vSdhwSM5f4tnNn1cdLHvXMVe_S+V3nR5GwNrmCPNB2VtQ@mail.gmail.com https://git.postgresql.org/pg/commitdiff/677f74e5bb8360122ebf2f473d7169ed65ce4dba
Thomas Munro 推送
提交时释放已删除关系所占用的磁盘空间。在提交一个删除关系的事务时,我们之前只截断了第一个分段文件以释放磁盘空间(该文件将在下一次检查点之前才会被取消链接)。也截断编号更高的分段文件,即使我们在提交时会取消链接它们。这会立即释放磁盘空间,即使其他后端有打开的文件描述符,并且可能需要很长时间才能处理共享失效事件并关闭它们。在恢复时也将相同的行为扩展到第一个分段。回溯到所有支持的版本。Bug: #16663 报告者:Denis Patron denis.patron@previnet.it 审阅者:Pavel Borisov pashkin.elfe@gmail.com 审阅者:Neil Chen carpenter.nail.cz@gmail.com 审阅者:David Zhang david.zhang@highgo.ca 讨论:https://postgr.es/m/16663-fe97ccf9932fc800%40postgresql.org https://git.postgresql.org/pg/commitdiff/9f35f943732eaf9121a107f54ea043925e9a5d7b
在适当时使用 truncate(2)。在按名称截断文件时,使用 truncate(2)。Windows 没有它,所以我们保留了基于 ftruncate(2) 的先前代码作为回退。讨论:https://postgr.es/m/16663-fe97ccf9932fc800%40postgresql.org https://git.postgresql.org/pg/commitdiff/57faaf376e1961fa48866c6e5d6926463c6671b1
Bruce Momjian 已推送
pg_checksums:data_checksum_version 是无符号的,所以使用 %u 而不是 %d。虽然之前的行为没有产生警告,但我们不妨使用一个准确的 *printf 规范。回溯:12 https://git.postgresql.org/pg/commitdiff/888671a8cda5896d36d3ec523e201ab6a11e1855
文档:在命令行摘要中首先列出单字母选项。在某些地方,长版本选项在某些命令的命令行摘要中被列在单字母选项之前。这与其他命令不符,也与其他参考页面中稍后的选项顺序不符。回溯:9.5 https://git.postgresql.org/pg/commitdiff/a659e789b743f1a4b977a1ffc7402ab618a9f68c
文档:删除命令选项文本前不必要的空白。回溯:11 https://git.postgresql.org/pg/commitdiff/3f8971d92e767acf6e3d6e27c4cab7bfd88b71f4
Stephen Frost 已推送
Dean Rasheed 已推送
Peter Eisentraut 提交
代码简化。在一些地方可以使用 strVal() 而不是手动编写相同的代码。 https://git.postgresql.org/pg/commitdiff/6114040711affa2b0bcf47fa2791187daf8455fb
删除不必要的语法符号。使用 name_list 替代 publication_name_list。我们在其他地方都使用 'name' 或 'name_list' 符号来引用发布,所以这只提高了代码的一致性。审阅者:https://postgresql.ac.cn/message-id/flat/3e3ccddb-41bd-ecd8-29fe-195e34d9886f%40enterprisedb.com 讨论:Tom Lane tgl@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/a6964bc1bb0793e20636ccb573cd2a5ad3ef7667
在适当时将 elog(LOG) 调用转换为 ereport()。用户可见的日志消息应该通过 ereport(),以便它们可以被翻译。许多剩余的 elog(LOG) 调用实际上是调试调用。审阅者:Alvaro Herrera alvherre@alvh.no-ip.org 审阅者:Michael Paquier michael@paquier.xyz 审阅者:Noah Misch noah@leadboat.com 讨论:https://postgresql.ac.cn/message-id/flat/92d6f545-5102-65d8-3c87-489f71ea0a37%40enterprisedb.com https://git.postgresql.org/pg/commitdiff/eb93f3a0b633ad6afb0f37391b87f460c4b0663b
Amit Kapila 提交
== 待定补丁 ==
Tatsuro Yamada 发送了另一个版本的补丁,用于向 psql 添加 \dX(扩展统计信息)。
Andrey V. Lepikhov 发送了另一个版本的补丁,用于删除不必要的自连接。
David G. Johnston 发送了另一个版本的补丁,用于对 plpgsql 文档进行一些小的清理和改写。
Seino Yuki 发送了另一个版本的补丁,用于向 pg_stat_statements_info 添加一个新列 reset-time。
Justin Pryzby 发送了一个补丁,用于使 \dt+ pg_toast.* 在 psql 中工作。
Justin Pryzby 发送了另一个版本的补丁,用于使 EXPLAIN 在非文本格式下显示 JIT 详细信息,即使数量为零。
Peter Eisentraut 发送了另一个版本的补丁,用于暂停因参数设置不足而导致的恢复。
Michaël Paquier 发送了另一个版本的补丁,用于修复一个错误,该错误表现为 vac_update_datfrozenxid 在 pg_database 元组包含 toast 属性时会引发“错误的元组长度”。
Michaël Paquier 发送了另一个版本的补丁,用于删除一些关于已废弃行为的引用。
Peter Geoghegan 发送了另一个版本的补丁,用于使 heapam 支持自底向上的索引删除,传递“逻辑上未更改的索引”提示,并使 nbtree 支持自底向上的索引删除。
Bertrand Drouvot 发送了两个版本的补丁,用于防止函数因删除其所在的模式而变成孤立状态。
Andrey V. Lepikhov 发送了一个补丁,用于修复对外部连接成本的严重高估。
Konstantin Knizhnik 发送了另一个版本的补丁,用于为 libpq 实现自定义压缩。
Álvaro Herrera 发送了一个补丁,用于改进类似 INDEX CONCURRENTLY 的操作。
Peter Eisentraut 发送了另一个版本的补丁,用于将 pageinspect 中的块号参数更改为 bigint,因为这实际上适合 uint32。
Aleksey Kondratov、Michaël Paquier 和 Justin Pryzby 交换了补丁,允许 CLUSTER 和 VACUUM FULL 动态更改表空间。
Bertrand Drouvot 和 Fujii Masao 交换了补丁,用于记录备用恢复冲突等待。
Justin Pryzby 发送了另外两个版本的补丁,使 INSERT SELECT 能够使用 BulkInsertState。
Bharath Rupireddy 发送了另外两个版本的补丁,使 CREATE TABLE AS 中的并行插入成为可能。
James Coleman 发送了另一个版本的补丁,用于在 gather merge 路径未充分排序时报错。
James Coleman 发送了另一个版本的补丁,用于确保 generate_useful_gather_paths 不会跳过未排序的子路径,在 generate_useful_gather_paths 中强制执行路径键的并行安全性,禁止在主动排序中使用 SRF,移除易失性表达式目标搜索,并在 prepare_sort_from_pathkeys 中记录 find_em_expr_usable_for_sorting_rel。
Craig Ringer 发送了一个补丁,用于实现一个 TAP 测试实用程序模块 PG_LSN.pm 来测试涉及逻辑序列号的内容。
Greg Nancarrow 发送了另一个版本的补丁,用于向 in_hot_standby 添加一个可报告的 GUC 并使 transaction_read_only GUC 可报告,并增强连接参数 target_session_attrs 以支持新值:read-only/primary/standby/prefer-standby。
Jürgen Purtz 发送了另一个版本的补丁,在教程中加入更明确的 JOIN。
Zhihong Yu 发送了另一个版本的补丁,用于在定义索引时检查 nparts。
Hou Zhejie 发送了一个补丁,用于在 plan_union_children() 中用 lappend 和 list_delete_last 替换 lcons 和 list_delete_first。
Laurenz Albe 发送了一个补丁,用于在 psql 的 \e 中退出编辑器时丢弃查询缓冲区。
Andres Freund 发送了一个补丁,用于修复 LLVM 12 时出现的一个 JIT 问题。
Fujii Masao 发送了另一个版本的补丁,用于向 pg_stat_wal 视图添加基本统计信息。