PostgreSQL 每周新闻 - 2021 年 12 月 19 日

由 PWN 发布于 2021-12-20
PWN

PostgreSQL 每周新闻 - 2021 年 12 月 19 日

FOSDEM PGDay 2022 将于 2022 年 2 月 5-6 日在线举行。 https://fosdem.org/2022/

PostgreSQL 过渡指南,包含许多来之不易的智慧,并提供法语和英语版本,已发布

pgDay Paris 2022 将于 2022 年 3 月 24 日在法国巴黎举行。征稿于巴黎时间 2021 年 12 月 31 日午夜截止。

Citus Con,一个虚拟的全球开发者活动,将于 2022 年 4 月 12-13 日举行。征稿现已开放。

PostgreSQL 产品新闻

Pgpool-II 4.3.0,一个 PostgreSQL 的连接池和语句复制系统,已发布

Access-to-PostgreSQL v2.3 已发布

check_pgbackrest 2.2,一个与 Nagios 兼容的 pgBackRest 监控器,已发布。https://github.com/dalibo/check_pgbackrest/releases

PostgreSQL 的 DB Comparer 5.0 已发布

Database .NET v33.6,一个多数据库管理工具,现在支持 PostgreSQL,已发布

pgAdmin4 6.3,一个用于 PostgreSQL 的 Web 和原生 GUI 控制中心,已发布

pgFormatter 5.2,一个用于 SQL 代码的格式化器/美化器,已发布。https://github.com/darold/pgFormatter/blob/master/ChangeLog

MySQL-to-PostgreSQL v5.5 已发布

12 月的 PostgreSQL 工作

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

PostgreSQL 本地活动

北欧 PGDay 2022 将于 2022 年 3 月 22 日在芬兰赫尔辛基的希尔顿赫尔辛基海滩酒店举行。征稿截止日期为 2021 年 12 月 31 日,点击此处

PostgreSQL 新闻

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

本周 PostgreSQL 每周新闻由 David Fetter 带给您

请在太平洋标准时间下午 3:00 前(PST8PDT)将新闻和公告发送至 david@fetter.org。

应用的补丁

Michaël Paquier 推送了

  • 改进 psql 对视图、FDW、序列和转换的制表符补全。完成了以下改进:- 为 ALTER SEQUENCE AS 添加类型补全。- 忽略转换的 ALTER,因为不支持该命令。- 为 ALTER FOREIGN DATA WRAPPER 添加更多补全。- 在 ALTER VIEW 中添加与列相关的选项。这是 0cd6d3b 中完成的工作的延续。作者:Ken Kato 讨论:https://postgr.es/m/9497ae9ca1b31eb9b1e97aded1c2ab07@oss.nttdata.com https://git.postgresql.org/pg/commitdiff/f44ceb46ec2d8da48f6e145bf462d5620c25e079

  • 集中控制文件在更新时的时戳计算。此提交将控制文件的时戳计算移动到 src/common/ 中负责更新后端控制文件的例程中,该例程由多个前端工具(pg_rewind、pg_checksums 和 pg_resetwal)和后端本身共享。此更改的直接影响是在 pg_rewind 和 pg_checksums 中写入控制文件时更新控制文件的时戳,这有助于跟踪这些操作的控制文件更新,后端也会在其日志中的启动时跟踪这些更新。这部分可以说是错误,因为 ControlFileData->time 应该在写入新版本的控制文件时更新,但这是一个行为更改,因此没有进行回溯。作者:Amul Sul 复审人:Nathan Bossart、Michael Paquier、Bharath Rupireddy 讨论:https://postgr.es/m/CAAJ_b97nd_ghRpyFV9Djf9RLXkoTbOUqnocq11WGq9TisX09Fw@mail.gmail.com https://git.postgresql.org/pg/commitdiff/6fb7c5d67cdd55454fe6317f939a191f85e96473

  • 修复 win32stat.c 中标准流上 fstat() 的兼容性错误。GetFinalPathNameByHandleA() 不能在 _WIN32_WINNT < 0x0600 的编译环境中使用,这意味着 Postgres 仍然需要支持 MinGW 下的一些构建场成员使用的至少 Windows XP。构建场将此报告为编译警告,但实际上比报告更糟糕,因为代码将无法工作。相反,这将切换到 GetFileInformationByHandle(),它能够对标准流失败,对重定向的流成功,这正是我们在代码中模拟 fstat() 时所寻找的。我们还知道它能够在所有仍然支持的环境中工作,这要归功于 win32stat.c 的现有逻辑。问题由 10260c7 引入,因此回溯到 14。报告人:Justin Pryzby,通过构建场成员 jacana 作者:Michael Paquier 复审人:Juan José Santamaría Flecha 讨论:https://postgr.es/m/20211129050122.GK17618@telsasoft.com 回溯到:14 https://git.postgresql.org/pg/commitdiff/58651d8dd6a56af306a361e2c386db798164c0f1

  • 修复拼写错误。作者:Lingjie Qiang 讨论:https://postgr.es/m/OSAPR01MB71654E773F62AC88DC1FC8CC80669@OSAPR01MB7165.jpnprd01.prod.outlook.com https://git.postgresql.org/pg/commitdiff/98105e53e0ab472b7721a3e8d7b9f1750a635120

  • 修复一些 GUC 的标志并改进一些描述。此提交修复了一些 GUC 的问题:- enable_incremental_sort 未标记为 GUC_EXPLAIN,导致在使用与默认值不同的值时,它不会像其他规划器级别的 GUC 一样列在 EXPLAIN (SETTINGS) 的输出中。- trace_recovery_messages 缺少 GUC_NOT_IN_SAMPLE,就像其他开发人员选项一样。- ssl_renegotiation_limit 应标记为 COMPAT_OPTIONS_PREVIOUS。同时,这修复了一个与 autovacuum_freeze_max_age 相关的错误注释,并改进了一些其他最近引入的 GUC 的描述。从同一作者的更大的补丁集中提取。作者:Justin Pryzby 描述:https://postgr.es/m/20211129030833.GJ17618@telsasoft.com https://git.postgresql.org/pg/commitdiff/be5455124b0f073ba3924ae2ba302a27b1686230

  • 改进 psql 对各种 DROP 命令的制表符补全。完成了以下改进:- 处理 DROP OWNED、matviews 和策略的 RESTRICT/CASCADE。- 处理 DROP TRANSFORM 这是 0cd6d3b 和 f44ceb4 中完成的工作的延续。作者:Ken Kato 复审人:Asif Rehman 讨论:https://postgr.es/m/0fafb73f3a0c6bcec817a25ca9d5a853@oss.nttdata.com https://git.postgresql.org/pg/commitdiff/9270778f467dad0d78d3b9e435a89a6039322b2f

  • 修复 slotfuncs.c 中的注释语法。作者:Bharath Rupireddy 讨论:https://postgr.es/m/CALj2ACUkrNR2xTak+QaqxoTjPKGn8zXWripv7SR27t+Q5qF1Wg@mail.gmail.com https://git.postgresql.org/pg/commitdiff/7799d4e3bdd14c90989d829a9b24e73d4ff4d4ad

  • 将 pg_upgrade 测试中使用的所有 SQL 查询移动到单独的文件中。现有的 pg_upgrade/test.sh 和构建场代码在执行跨版本升级测试时,都保存着同一组 SQL 查询,以调整升级前由回归测试创建的对象(主要是,需要从源中删除不兼容或不存在的对象,可能需要重新创建)。这会将所有这些 SQL 查询移动到一个新的单独文件中,并使用一组 \if 子句来处理版本检查,具体取决于要升级的旧集群的版本。长期计划是使构建场代码重新使用这个新的 SQL 文件,以便提交者能够通过刷新核心代码来修复 pg_upgrade 测试中的任何兼容性问题,而无需在构建场客户端中进行修改。请注意,这只能处理主要的回归测试套件,并且尚未对 contrib 模块执行任何操作(这些模块有更多问题,例如其数据库名称)。回溯到 10,并调整版本检查,因为此脚本只需要向后兼容,以便尽可能多地清理构建场客户端中的代码。作者:Justin Pryzby、Michael Paquier 讨论:https://postgr.es/m/20201206180248.GI24052@telsasoft.com 回溯到:10 https://git.postgresql.org/pg/commitdiff/0df9641d39057f431655b92b8a490b89c508a0b3

  • pg_waldump:当被 SIGINT 中断时,发出统计摘要。以前,如果 pg_waldump 被 SIGINT(或比如简单的 Ctrl+C)中断,则不会显示其统计摘要。通过此提交,它获得了一个 SIGINT 信号处理程序,捕获该信号以便在方便的时候尽早退出,从而允许在退出之前显示统计摘要。这使得报告更具交互性,类似于 strace -c。这种新行为使 --stats 和 --follow 选项的组合更加有用,以便用户在任何情况下都会获得 pg_waldump 的调用报告。有关计算的统计信息的 LSN 范围的信息将作为标题添加到显示的报告中。此实现来自 Álvaro Herrera 和我本人的建议,这是由于此补丁的作者抱怨 --stats 和 --follow 最初不能一起使用。如文档所述,Windows 不支持此功能,但可以通过捕获与 Ctrl+C 相关的终端事件来实现支持(例如,这可能需要更集中的实现,因为其他工具可以从通用 API 中受益)。作者:Bharath Rupireddy 讨论:https://postgr.es/m/CALj2ACUUx3PcK2z9h0_m7vehreZAUbcmOky9WSEpe8TofhV=PQ@mail.gmail.com https://git.postgresql.org/pg/commitdiff/f2c52eeba919a1b191f60445001371bd7c53aaa9

  • 改进各种 GUC 的描述。此提交修复了一些 GUC 描述中的一些不一致之处,同时使其措辞在它们所依赖的单位方面更加通用。对于大多数 GUC,这将删除诸如“N 秒”或“N 字节”之类的术语,这些术语可能不容易应用于这些字符串翻译成的所有语言(根据我自己的经验,这在法语和英语中有效,但在日语中则不然)。根据下面列出的作者之间的讨论。作者:Justin Pryzby、Michael Paquier 讨论:https://postgr.es/m/20211129030833.GJ17618@telsasoft.com https://git.postgresql.org/pg/commitdiff/03774f9bb304d49fae3379806115aaa5d1fafea2

  • 修复使用 REINDEX CONCURRENTLY 时 TOAST 索引的损坏问题。在 TOAST 索引或 TOAST 关系上运行 REINDEX CONCURRENTLY 可能会损坏重建的目标索引,因为并行运行的、操作 TOAST 值的后端会在其本地操作完成后直接释放 TOAST 关系上的锁,而不是在操作 TOAST 值的事务提交后才释放锁。 此处所做的修复很简单:我们现在在保存或删除 TOAST 值时,会在 TOAST 关系上持有 ROW EXCLUSIVE 锁,直到处理它们的事务提交,这样并行发生的并发 reindex 就能等待任何活动并看到任何新插入(或删除)的行。 添加了一个隔离测试来检查此处修复的情况,该测试的设计有点特别,因为它依赖于 allow_system_table_mods 来将 TOAST 表及其索引重命名为固定名称。这样,就可以直接重新索引它们,而无需依赖底层关系的 OID。请注意,这也不能使用 DO 块,因为 REINDEX CONCURRENTLY 不能在事务块中运行。该测试已向下移植到 13,在那里,由于 c4a7a39,可以在测试套件中使用 allow_system_table_mods。报告者:Alexey Ermakov 分析者:Andres Freund,Noah Misch 作者:Michael Paquier 审核者:Nathan Bossart 讨论:https://postgr.es/m/17268-d2fb426e0895abd4@postgresql.org 向下移植:12 https://git.postgresql.org/pg/commitdiff/f99870dd867331f576a84e37438da86a866559c4

  • 改进 CREATE/ALTER SUBSCRIPTION 的选项解析。这简化了代码,因此 parse_subscription_options() 的调用者不再需要将 SubOpts 清零,它持有所提供选项的位图以及默认/已解析的选项值。这还简化了一些与命令支持的选项相关的检查,以检查不兼容性。在此过程中,重新排列了为“slot_name = NONE”不支持的组合生成的错误。与之前的重大版本相比,这可能会生成不同的错误,但是用户必须经历所有这些错误才能在这种情况下使用“enabled”和“create\slot”选项的错误值获得正确的命令,因此最终生成的命令将保持不变。作者:Peter Smith 审核者:Nathan Bossart 讨论:https://postgr.es/m/CAHut+PtXHfLgLHDDJ8ZN5f5Be_37mJoxpEsRg8LNmm4XCr06Rw@mail.gmail.com https://git.postgresql.org/pg/commitdiff/00029deaf65aad47044d9290fe80f2f68601f7ac

  • 修复一些关于 {a,an} 的拼写错误。其中一个更改会影响文档,因此需要向后移植。作者:Peter Smith 讨论:https://postgr.es/m/CAHut+Pu6+c+r3mY24VT7u+H+E_s6vMr5OdRiZ8NT3EOa-E5Lmw@mail.gmail.com 向下移植:14 https://git.postgresql.org/pg/commitdiff/5d08137076fd39694188ec4625013756aab889e1

  • 改进某些事务命令的 WAL 记录的描述。此提交改进了事务 RMGR 的一些 WAL 记录的描述: - 跟踪事务提交的 remote_apply。此 GUC 是用户可设置的,因此此信息对于调试可能很有用。 - 添加 PREPARE TRANSACTION 的复制源信息,包括源 ID、LSN 和时间戳 - 与上述相同,用于 ROLLBACK PREPARED。 这会影响 pg_waldump 的格式或任何使用这些描述例程的格式,因此不进行向后移植。作者:Masahiko Sawada,Michael Paquier 讨论:https://postgr.es/m/CAD21AoD2dJfgsdxk4_KciAZMZQoUiCvmV9sDpp8ZuKLtKCNXaA@mail.gmail.com https://git.postgresql.org/pg/commitdiff/c8b733c4c4b0c5b7aa93553aa5b7f2c1d0bf00bf

  • 删除 PREPARE TRANSACTION 中复制源的断言。当使用复制源时,pg_replication_origin_xact_setup() 是一个可选的选择,可以设置 LSN 和时间戳来标记源,这将额外添加到事务提交或中止(包括 2PC 事务)的 WAL 中。 PREPARE TRANSACTION 的代码路径中的一个断言假定此数据应始终设置,因此当在不设置源 LSN 的情况下使用复制源时会触发该断言。添加了一些测试来更多地覆盖这种情况。 1eb6d65 提交中的疏忽。根据与 Amit Kapila 和 Masahiko Sawada 的讨论。讨论:https://postgr.es/m/YbbBfNSvMm5nIINV@paquier.xyz 向下移植:11 https://git.postgresql.org/pg/commitdiff/ece8c76192fee0b78509688325631ceabca44ff5

  • 调整 MSVC 的 TAP 测试的一些环境设置的行为。 edc2332 在 vcregress.pl 中引入了对环境变量 LZ4、TAR 和 GZIP_PROGRAM 的一些控制,以允许任何 TAP 测试能够使用这些命令。这使得设置与 src/Makefile.global.in 更加一致,因为 Make 和 MSVC 构建使用相同的默认值。可以在 buildenv.pl 中更改每个参数,但是由于默认值在加载 buldenv.pl 之后分配,因此无法取消设置任何这些参数,并且使用空值也无法使用“||=”。由于某些环境的 PATH 中可能没有兼容的命令(例如,来自 MinGW 的 tar 是一个问题),这可能会在没有退出路径来绕过任何失败的测试的情况下破坏测试。此提交更改了默认值,以便在加载 buildenv.pl 之前分配 LZ4、TAR 和 GZIP_PROGRAM 的默认值,而不是之后分配。这样,我们保持了与具有相同默认值的 GNU 构建相同的兼容性,并且可以取消设置任何这些值。在此过程中,在专门针对 MSVC 的 TAP 测试的部分中添加了关于这三个变量的一些文档。根据与 Andrew Dunstan 的讨论。讨论:https://postgr.es/m/YbGYe483803il3X7@paquier.xyz 向下移植:10 https://git.postgresql.org/pg/commitdiff/7acd01015c4a5edb253ea9468ccb71ef99cabd1a

  • 为 pg_upgrade 添加选项 -N/--no-sync。这是一个与 src/bin/ 的其他工具(pg_checksums、pg_dump、pg_rewind 和 pg_basebackup)提供的选项一致的选项,对于在测试事物时利用 I/O 非常有用。这不应用于生产环境。更新了 pg_upgrade 的所有回归测试以使用这个新选项。通过避免刷新升级的新集群的数据文件夹,这恰好可以在 I/O 受限的环境中最多减少几秒钟。作者:Michael Paquier 审核者:Peter Eisentraut 讨论:https://postgr.es/m/YbrhzuBmBxS/DkfX@paquier.xyz https://git.postgresql.org/pg/commitdiff/3d5ffccb6df323f528cf870c26d0d0517ffe3eaa

  • 修复 pg_receivewal 的 TAP 测试中的拼写错误。在 d62bcc8 中引入,在 hacking 该区域时注意到。https://git.postgresql.org/pg/commitdiff/22592e10b41a95f841642fa16127521989177bbc

Tom Lane 推送

Peter Geoghegan 推送

  • vacuumlazy.c: 将 dead_tuples 重命名为 dead_items。提交 8523492d 简化了 VACUUM 中将一个项视为“死亡”的含义:内存中收集的 TID(为索引清理做准备)必须始终来自堆页面中的 LP_DEAD 存根行指针,这是在修剪后发现的。这正式确定了索引清理(和堆清理)是可选过程的概念。与修剪不同,它们可以无限期地延迟,而不会有任何违反基本不变量的风险。例如,留下 LP_DEAD 项显然不会增加事务 ID 回绕的风险。没有事务 ID 就不会发生事务 ID 回绕。重命名任何引用 DEAD 元组(具有存储的元组)的内容会加强所有这些。vacuumlazy.c 之外的代码继续混淆死亡/已删除元组和 LP_DEAD 项之间的区别。这是必要的,因为自动清理的调度仍然主要由“死亡项/元组”统计数据驱动。未来,我们可能会发现用更复杂的东西替换此模型很有用,这是朝着教导自动清理执行更频繁的清理迈出的一步,目标是那些恰好更容易因版本变动而变得臃肿的单个索引。顺便说一句,简化一些处理 VACUUM 的 dead_items 数组的函数签名。作者:Peter Geoghegan pg@bowt.ie 审阅人:Masahiko Sawada sawada.mshk@gmail.com 讨论:https://postgr.es/m/CAH2-WzktGBg4si6DEdmq3q6SoXSDqNi6MtmB8CmmTmvhsxDTLA@mail.gmail.com https://git.postgresql.org/pg/commitdiff/4f8d9d1217956798e761491d236af576b27f5e12

  • vacuumlazy.c: 修复剩余的“死亡元组”引用。提交 4f8d9d12 中的疏忽。报告人:Masahiko Sawada sawada.mshk@gmail.com 讨论:https://postgr.es/m/CAD21AoDm38Em0bvRqeQKr4HPvOj65Y8cUgCP4idMk39iaLrxyw@mail.gmail.com https://git.postgresql.org/pg/commitdiff/4bdfe6855901a4104dbdac2be53d465b626e244d

  • 标准化清理锁术语。“超互斥锁”是“缓冲区清理锁”的同义词,它在多年前首次出现在 nbtree 中。通过一致使用术语清理锁来标准化事物。这完成了提交 276db875 开始的工作。没有充分的理由使用两个术语。但只有一个原因充分:避免混淆为什么 VACUUM 在索引 AM 中的 ambulkdelete 调用期间获取完整的清理锁(而不仅仅是普通的互斥锁)。这与保护物理索引数据结构本身无关。它需要实现一个锁定协议,以确保指向堆/表结构的 TID 在安全之前不会被 VACUUM 标记为回收(这有点类似于 VACUUM 在其第一个堆传递期间如何使用清理锁)。请注意,索引 AM 严格来说没有必要实现此锁定协议——一些索引 AM 使用 MVCC 快照作为其唯一的互锁,以防止不安全的 TID 回收。顺便说一句,更新 nbtree README。将上述索引清理锁定协议的讨论与提交 2ed5b87f 添加的“删除叶页引脚”优化的讨论干净地分开。我们现在通过描述单个索引扫描如何安全地选择不应用标准锁定协议(从而避免阻止 VACUUM 的进度)来构建后者的讨论。还记录了为什么在 nbtree 仅索引扫描期间应用优化是不安全的。作者:Peter Geoghegan pg@bowt.ie 讨论:https://postgr.es/m/CAH2-WzngHgQa92tz6NQihf4nxJwRzCV36yMJO_i8dS+2mgEVKw@mail.gmail.com 讨论:https://postgr.es/m/CAH2-WzkHPgsBBvGWjz=8PjNhDefy7XRkDKiT5NxMs-n5ZCf2dA@mail.gmail.com https://git.postgresql.org/pg/commitdiff/bcf60585e6e0e95f0b9e5d64c7a6edca99ec6e86

Amit Kapila 推送了

Daniel Gustafsson 推送了

Álvaro Herrera 推送了

Tomáš Vondra 推送了

Peter Eisentraut 推送了

Robert Haas 推送了

  • 记录 tar 归档现在已正确终止。提交 5a1007a5088cd6ddf892f7422ea8dbaef362372f 更改了服务器行为,但我没有注意到现有行为已记录,因此没有更新文档。此提交完成了此操作。我选择提及行为已更改,而不是仅仅删除与标准的偏差的引用。这对工具作者来说似乎很有用。讨论:http://postgr.es/m/CA+TgmoaYZbz0=Yk797aOJwkGJC-LK3iXn+wzzMx7KdwNpZhS5g@mail.gmail.com https://git.postgresql.org/pg/commitdiff/81fca310b38e7808dff9c01a26564e8f2db10893

  • 默认 log_checkpoints=on, log_autovacuum_min_duration=10m。这里的想法是,当已知在某个时间点发生性能问题时,如果日志中提供一些信息来帮助弄清楚当时可能发生了什么,那将是一件好事。此更改引起了高于平均水平的异议,因为它意味着即使没有发生任何错误,具有默认设置的服务器也会产生一些日志输出。但是,据我统计,邮件列表讨论中赞成该更改的人数大约是反对人数的两倍。相信额外的日志输出在实践中不是问题的理由是:(1)此设置生成消息的速率限制为在配置正确的系统上每隔几分钟一次,以及(2)生产系统往往会由于连接尝试失败、应用程序活动生成的错误消息等而在日志中有更多垃圾。Bharath Rupireddy,由 Fujii Masao 和我审查。许多其他人对该主题发表了评论,但据我所见,那是对更改的优点进行讨论,而不是对补丁进行审查。讨论:https://postgr.es/m/CALj2ACX-rW_OeDcp4gqrFUAkf1f50Fnh138dmkd0JkvCNQRKGA@mail.gmail.com https://git.postgresql.org/pg/commitdiff/64da07c41a8c0a680460cdafc79093736332b6cf

  • 删除 InitXLOGAccess()。RecoveryInProgress() 调用 InitXLOGAccess() 并不好,因为状态查询函数通常不应该具有执行初始化的副作用。我们可以通过从其他地方调用 InitXLOGAccess() 来解决这个问题,但是相反,让我们完全删除它。InitXLogAccess() 所做的一件事是初始化 wal_segment_size,但它不需要这样做。在 postmaster 中,PostmasterMain() 调用 LocalProcessControlFile(),并且所有子进程都将继承该值——除了在 EXEC_BACKEND 构建中,但随后每个后端都会运行 SubPostmasterMain(),它也会调用 LocalProcessControlFile()。InitXLOGAccess() 所做的另一件事是更新 RedoRecPtr 和 doPageWrites,但这并不重要,因为所有使用它们的代码如果发现它们已更改,将只会重试。唯一的区别是,现在大多数代码将看到一个绝对无效的初始值,而不是一个可能只是过时的值,但这只会发生在每个后端生命周期中一次,因此应该没什么大不了的。由我提交的补丁,由 Nathan Bossart、Michael Paquier、Andres Freund、Heikki Linnakangas 和 Álvaro Herrera 审查。讨论:http://postgr.es/m/CA+TgmoY7b65qRjzHN_tWUk8B4sJqk1vj1d31uepVzmgPnZKeLg@mail.gmail.com https://git.postgresql.org/pg/commitdiff/fa0e03c15a9f67671f0a6e0ec66d5e2ac7119c8a

Fujii Masao 推送了

  • postgres_fdw:修复了意外报告空消息的问题。postgres_fdw 中的 pgfdw_report_error() 从 PGresult 或 PGconn 获取消息,以报告从远程服务器收到的错误。以前,如果它无法从它们中的任何一个获取消息,它会意外地报告空消息。此问题的原因是 pgfdw_report_error() 没有正确处理无法获取消息并且其局部变量 message_primary 设置为 '\0' 的情况。此提交改进了 pgfdw_report_error(),以便在没有收到消息且 message_primary 设置为 '\0' 时,它会报告消息“无法获取...” 。这与 message_primary 为 NULL 时的行为相同。dblink 中的 dblink_res_error() 也存在同样的问题,因此此提交也以相同的方式对其进行了改进。向所有受支持的分支进行反向移植。作者:Fujii Masao 审核人:Bharath Rupireddy 讨论:https://postgr.es/m/477c16c8-7ea4-20fc-38d5-ed3a77ed616c@oss.nttdata.com https://git.postgresql.org/pg/commitdiff/557c39bba925d553c6bb12b5e80d1964d355583b

  • postgres_fdw:在获取查询结果时超时过期时报告警告。在中止远程事务或向远程服务器发送取消请求时,postgres_fdw 调用 pgfdw_get_cleanup_result() 来等待事务中止查询或取消请求的结果到达。如果超时过期或发生连接问题,则它无法获取结果。以前,即使在 pgfdw_get_cleanup_result() 中超时过期或发生连接问题,postgres_fdw 也不会报告任何警告消息。当发生此类事件时,这可能会使故障排除更加困难。此提交使 pgfdw_get_cleanup_result() 告诉其调用者失败时发生了什么问题(超时或连接错误),并使其调用者根据该信息报告正确的警告消息。作者:Fujii Masao 审核人:Bharath Rupireddy 讨论:https://postgr.es/m/15aa988c-722e-ad3e-c936-4420c5b2bfea@oss.nttdata.com https://git.postgresql.org/pg/commitdiff/815d61fcd485e8c60dba22988bf5a90fc12df32d

  • doc:添加有关 postgres_fdw.application_name 的说明。postgres_fdw.application_name 可以是任何长度的任何字符串,甚至可以包含非 ASCII 字符。但是,当它传递给外国服务器并在其中用作 application_name 时,它将被截断为小于 NAMEDATALEN 个字符,并且其中的任何非可打印 ASCII 字符都将被替换为问号。此提交将这些注释添加到文档中。作者:Hayato Kuroda 审核人:Kyotaro Horiguchi, Fujii Masao 讨论:https://postgr.es/m/TYCPR01MB5870D1E8B949DAF6D3B84E02F5F29@TYCPR01MB5870.jpnprd01.prod.outlook.com https://git.postgresql.org/pg/commitdiff/58e2e6eb67fec14c793c74207407e172d7e0291d

Andrew Dunstan 推送了

Thomas Munro 推送了

Alexander Korotkov 推送了

Andres Freund 推送了更改