本周人物: 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/
PostgreSQL 星球: http://planet.postgresql.org/
本周 PostgreSQL 每周新闻由 David Fetter 为您带来
请在太平洋标准时间(PST8PDT)周日下午 3:00 前将新闻和公告提交至 david@fetter.org。
== 应用的补丁 ==
Tom Lane 推送了
修复了 psql 的 \connect 命令中最近引入的故障。由于我误读了现有代码的实际作用,提交 85c54287a 等破坏了 psql 在“\c connstring”在连接字符串中提供密码的情况下的行为。在这种情况下,我们应该使用该密码,但从 85c54287a 开始,我们忽略了它(而是提示输入密码)。提交 94929f1cf 在 HEAD 中修复了该问题,但由于我以为它是在清理一个长期存在的错误行为,而不是我刚刚创建的错误行为,因此我没有对其进行反向移植。因此,反向移植了 94929f1cf 中与密码管理相关的部分。除了修复引入的错误之外,这意味着如果连接字符串不更改用户/主机/端口,“\c -reuse-previous=on 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
修复了连接关系的 direct_lateral_relids 的错误计算。如果 PlaceHolderVar 要在连接关系处计算,但其值仅在那里需要,而在更高级别不需要,我们忽略了更新连接关系的 direct_lateral_relids 以包含 PHV 的源关系。这会导致问题,因为 join_is_legal() 然后将不允许将连接关系完全连接到 PHV 的源关系,从而导致“无法构建任何 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 *”,因此他们不在乎,但将来的某些调用者可能会在乎。)Zhijie Hou 提供的 outfuncs.c 修复程序,其余由我提供。讨论:https://postgr.es/m/324c4d81d8134117972a5b1f6cdf9560@G08CNEXMBPEKD05.g08.fujitsu.local https://git.postgresql.org/pg/commitdiff/8286223f3d820c39f2d5f14222f7ccde53bdf502
确保 expandTableLikeClause() 重新检查同一张表。就像以前一样,expandTableLikeClause() 重新执行了 transformTableLikeClause() 完成的相同的 relation_openrv 调用。但是,在某些情况下,这不会找到预期的同一张表。我们持有 LIKE 源表上的锁,因此它不能被重命名或删除,但是另一张表可能会在搜索路径中出现在它之前。这解释了在将表克隆为同名的临时表时,错误 #16758 中报告的奇怪行为。在提交 502898192 引入需要两次打开源表之前,这种情况按预期工作,因此我们应该修复它。为了真正确保我们得到同一张表,让我们通过 OID 而不是名称重新打开它。这需要在 TableLikeClause 结构中添加一个 OID 字段,从 ABI 的角度来看这有点令人不安,但是只要它在末尾,我认为没有任何严重的风险。根据 Marc Boeren 的错误 #16758。与之前的补丁一样,反向移植到所有受支持的分支。讨论:https://postgr.es/m/16758-840e84a6cfab276d@postgresql.org https://git.postgresql.org/pg/commitdiff/f7f83a55bf6051818a0e4387d718867ecfa8561b
修复了计划器中删除无用 RESULT RTE 时遗漏的步骤。提交 4be058fe9 忘记了在删除无用的结果 RTE 时,append_rel_list 已经被填充,并且它可能包含需要像主解析树中的那些一样调整的 PlaceHolderVar。这可能会导致以后出现“关系 ID N 没有关系条目”失败,当计划器尝试对未调整的 PHV 执行某些操作时。根据 Tom Ellis 的报告。反向移植到 v12,该错误在此引入。讨论:https://postgr.es/m/20201205173056.GF30712@cloudinit-builder https://git.postgresql.org/pg/commitdiff/e98c900993e89ad9278cdfbf0ba5495381a1faac
Fujii Masao 推送了
改进了关于终止后台工作进程的日志消息。以前,使用 die() 作为 SIGTERM 信号处理程序的后台工作进程的关闭会产生日志消息“由于管理员命令终止连接”。此日志消息令人困惑,因为后台工作进程不是连接。此提交将该日志消息改进为“由于管理员命令终止后台工作进程 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,藤井雅雄 讨论:https://postgr.es/m/2317771549527294@sas2-985f744271ca.qloud-c.yandex.net https://git.postgresql.org/pg/commitdiff/942305a36365433eff3c1937945758f2dbf1662b
跟踪集群中生成的 WAL 记录、FPI 和字节的总数。提交 6b466bf5f2 允许 pg_stat_statements 跟踪每个语句生成的 WAL 记录、完整页面映像和字节数。类似地,此提交允许我们跟踪集群范围的 WAL 统计计数器。新的列 wal_records、wal_fpi 和 wal_bytes 被添加到 pg_stat_wal 视图中,并分别报告集群中生成的 WAL 记录、完整页面映像和字节的总数。作者:Masahiro Ikeda 审核人:Amit Kapila、Movead Li、Kyotaro Horiguchi、藤井雅雄 讨论: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:新的时间线 2 在当前恢复点 0/30000A0 之前从当前数据库系统时间线 1 分叉出来。这是你需要使用 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 的 cryptohash 实现以使用 EVP(用于 FIPS,并且还因为上游不建议使用低级 cryptohash 函数 20 年)。请注意,OpenSSL 从 1.1.0 开始隐藏了 cryptohash 上下文的内部结构,因此有必要将分配留给 OpenSSL 本身,这解释了为什么需要这两个新例程。这部分将需要更多的工作来正确跟踪具有资源所有者的哈希上下文,但这不在此处引入。不过,此重构使移动成为可能。通过将哈希类型直接合并到哈希上下文数据中,这减少了所有 SHA2 实现的例程数量,从十二个(SHA{224,256,386,512},带有 init、update 和 final 调用)到五个(create、free、init、update 和 final 调用)。新的 cryptohash 例程被移动到一个名为 cryptohash.c 的新文件中,用于后备实现,而 SHA2 特定的部分成为 src/common/ 的内部组成部分。OpenSSL 特定的部分是 cryptohash_openssl.c 的一部分。此基础结构可用于更多哈希类型,如 MD5 或 HMAC。任何使用内部 SHA2 例程的代码路径都会进行调整以正确报告错误,这是此提交的大部分更改。受影响最大的区域是校验和清单、libpq 和 SCRAM。请注意,e21cbb4 是尝试将 SHA2 切换到 EVP 的第一次尝试,但它缺少 libpq 所需的重构,如此处所做的那样。此补丁已在 Linux 和 Windows 上进行了测试,无论是否使用 OpenSSL,并且可追溯到 1.0.1,这是 HEAD 上支持的最旧版本。作者:Michael Paquier 审核人:Daniel Gustafsson 讨论:https://postgr.es/m/20200924025314.GE7405@paquier.xyz https://git.postgresql.org/pg/commitdiff/87ae9691d25379785f8c0f81b06a14818cfd8c56
修复 cryptohash_openssl.c 中的编译警告。这些警告使用 -O2 出现。在 87ae969 中被忽略。作者:藤井雅雄 讨论: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 摘要例程。自 2000 年以来,上游 OpenSSL 不建议使用低级哈希例程,并且 pgcrypto 从 5ff4a67 开始已切换到 EVP。这利用了 87ae969 中完成的重构,该重构引入了加密哈希的分配和释放例程。自 1.1.0 起,OpenSSL 不再发布 cryptohash 上下文的内容,迫使任何使用者都依赖 OpenSSL 进行所有分配。因此,资源所有者回调机制获得了一组新的例程,用于在使用 OpenSSL 时跟踪和释放 cryptohash 上下文,从而防止后端出现任何泄漏风险。由于 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 命令是独立的,并且没有逻辑数据依赖性,因此并不明显,一个表上并发索引构建所持有的事务会阻塞不相关表上的并发索引创建的第二阶段,因此请记录此注意事项。将此回溯到所有版本。在主分支中,提及仅涉及某些索引。作者: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
避免使用 NULL 源指针和 count == 0 调用 memcpy()。当对指针调用 memcpy() 时,编译器有权假设该指针不为空,这可能导致以潜在的不希望的方式优化附近的代碼。我们仍然希望在它们有效的情况下进行此类优化(gcc 的 -fdelete-null-pointer-checks)。相关:提交 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 推送了更改
在提交时释放已删除关系的磁盘空间。当提交删除关系的事务时,我们之前仅截断第一个段文件以释放磁盘空间(该文件要到下一个检查点才会取消链接)。也要截断编号较高的段,即使我们在提交时取消链接它们。即使其他后端具有打开的文件描述符,并且可能需要很长时间才能处理共享失效事件并将其关闭,这也可以立即释放磁盘空间。此外,在恢复时将相同的行为扩展到第一个段。回溯到所有支持的版本。错误:#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
docs:在命令行摘要中首先列出单字母选项。在一些地方,长版本选项在几个命令的命令摘要中列在单字母选项之前。这与其他命令不匹配,并且与同一参考页后面的选项顺序不匹配。回溯到:9.5 https://git.postgresql.org/pg/commitdiff/a659e789b743f1a4b977a1ffc7402ab618a9f68c
doc:删除命令选项文本前不必要的空格。回溯到: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 发送了另一个补丁修订版,以将 \dX (扩展统计信息) 添加到 psql。
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 发送了补丁的另一个修订版本,以修复一个错误,该错误表现为如果 pg_database 元组包含 TOAST 属性,则 vac_update_datfrozenxid
会引发“错误的元组长度”错误。
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 发送了补丁的另一个修订版本,如果收集合并路径没有充分排序,则会报错。
James Coleman 发送了补丁的另一个修订版本,以确保 generate_useful_gather_paths
不会跳过未排序的子路径,强制执行 generate_useful_gather_paths
中路径键的并行安全性,禁止在主动排序中使用 SRF,删除易失性 expr 目标搜索,并在 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 发送了一个补丁,用 lappend 和 list_delete_last
替换 plan_union_children()
中的 lcons 和 list_delete_first
。
Laurenz Albe 发送了一个补丁,如果在 psql 的 \e 中退出编辑器,则丢弃查询缓冲区。
Andres Freund 发送了一个补丁,以修复 LLVM 12 中出现的 JIT 问题。
Fujii Masao 发送了补丁的另一个修订版本,以向 pg_stat_wal view
添加基本统计信息。