2025年9月25日: PostgreSQL 18 发布!

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

发布于 2021-12-20,作者:PWN
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

DB Comparer 5.0 for PostgreSQL 已发布

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 本地活动

2022 Nordic PGDay 将于2022年3月22日在芬兰赫尔辛基的希尔顿赫尔辛基斯特兰德酒店举行。论文征集(CfP)将于2021年12月31日截止,请 在此 提交。

PostgreSQL 相关新闻

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

本周 PostgreSQL 周报由 David Fetter 提供。

请在太平洋标准时间(PST8PDT)周日晚上3:00之前将新闻和公告发送至 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() 的兼容性问题。在 _WIN32_WINNT < 0x0600 的编译环境中,无法使用 GetFinalPathNameByHandleA(),这意味着 Postgres 仍需支持的 MinGW 下的某些 buildfarm 成员使用的 Windows XP。这被 buildfarm 报告为编译警告,但实际上比报告更糟糕,因为代码根本无法工作。取而代之的是,此更改切换到 GetFileInformationByHandle(),该函数可以对标准流失败并对重定向的流成功,这正是我们在模拟 fstat() 的代码中所寻找的。由于 win32stat.c 的现有逻辑,我们也知道它可以在所有仍受支持的环境中工作。由 10260c7 引入的问题,因此向后移植到 14。报告者:Justin Pryzby,通过 buildfarm 成员 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,导致在使用非默认值时,它不会出现在 EXPLAIN (SETTINGS) 的输出中,这与其他规划器级别的 GUC 相反。- 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 和 policies 的 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 和 buildfarm 代码在进行跨版本升级测试时会包含相同的一组 SQL 查询,以调整升级前回归测试创建的对象(主要是,不兼容或不存在的对象需要从源中删除,可能需要重新创建)。这会将所有这些 SQL 查询移到一个新的、单独的文件中,并包含一组 \if 子句,用于根据待升级集群的旧版本处理版本检查。长期计划是让 buildfarm 代码重用这个新的 SQL 文件,以便提交者能够通过刷新核心代码来修复 pg_upgrade 测试中的任何兼容性问题,而无需干预 buildfarm 客户端。请注意,这只能处理主要的回归测试套件,目前尚未对 contrib 模块进行任何处理(这些模块存在更多问题,例如数据库名称)。已进行向下到 10 的向后移植,并调整了版本检查,因为此脚本只需要向后兼容,以便能够清理 buildfarm 客户端中的最大代码量。作者: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

  • 修复 CONCURRENTLY REINDEX 时的 toast 索引损坏。对 toast 索引或 toast 关系运行的 REINDEX CONCURRENTLY 可能会损坏重建的目标索引,因为并行运行的修改 toast 值的后端会在完成局部操作后立即释放对 toast 关系的锁,而不是在修改 toast 值的事务提交后释放。这里的修复很简单:现在,在保存或删除 toast 值时,我们会一直持有对 toast 关系的 ROW EXCLUSIVE 锁,直到处理 toast 值的事务提交为止,这样并发进行的 reindex 操作就可以等待任何活动并看到新插入(或删除)的行。添加了一个隔离测试来检查修复此问题的场景,该测试设计得有些巧妙,因为它依赖于 allow_system_table_mods 来重命名 toast 表及其索引为固定的名称。这样,就可以直接对它们进行 reindex,而无需依赖底层关系的 OID。请注意,这也无法使用 DO 块,因为 REINDEX CONCURRENTLY 不能在事务块中运行。由于 c4a7a39,可以允许在测试套件中使用 allow_system_table_mods,因此该测试已向后移植到 13。报告者: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() 的调用者不再需要将其归零,而是持有提供的选项以及默认/已解析选项值的位图。这还简化了在检查不兼容性时与命令支持的选项相关的一些检查。同时,重新排序了为不支持的“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 和时间戳设置为标记源,该源将额外添加到 WAL 中用于事务提交或中止(包括 2PC 事务)。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 是一个问题),这可能会导致测试失败,而没有退出路径可以绕过任何失败的测试。此提交的更改使得 LZ4、TAR 和 GZIP_PROGRAM 的默认值在加载 buildenv.pl 之前分配,而不是之后。这样,我们就能与 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,在修改该区域时发现。https://git.postgresql.org/pg/commitdiff/22592e10b41a95f841642fa16127521989177bbc

Tom Lane 提交

Peter Geoghegan 提交

  • vacuumlazy.c:将 dead_tuples 重命名为 dead_items。提交 8523492d 简化了“dead”的含义,以便 VACUUM:内存中收集的 TIDs(为索引 vacuuming 做准备)必须始终来自堆页上的 LP_DEAD 存根行指针,这些指针是在修剪后找到的。这正式化了索引 vacuuming(和堆 vacuuming)是可选过程的想法。与修剪不同,它们可以无限期延迟,而不会有违反基本不变量的风险。例如,留下 LP_DEAD 项显然不会增加事务 ID 回绕的风险。没有事务 ID 就无法实现事务 ID 回绕。重命名任何引用 DEAD 元组(带有存储的元组)的内容都加强了这一点。vacuumlazy.c 之外的代码继续模糊了死元组/已删除元组和 LP_DEAD 项之间的区别。这是必需的,因为自动 vacuum 调度仍然主要由“死项目/元组”统计信息驱动。将来,我们可能会发现用更复杂的模型替换此模型很有用,作为教会自动 vacuum 执行更频繁的 vacuuming 的一步,而不是针对碰巧因版本更新而容易膨胀的单个索引。顺便,简化了处理 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:修复剩余的“dead tuple”引用。提交 4f8d9d12 中的疏忽。报告者:Masahiko Sawada sawada.mshk@gmail.com 讨论:https://postgr.es/m/CAD21AoDm38Em0bvRqeQKr4HPvOj65Y8cUgCP4idMk39iaLrxyw@mail.gmail.com https://git.postgresql.org/pg/commitdiff/4bdfe6855901a4104dbdac2be53d465b626e244d

  • 标准化 cleanup lock 术语。术语“super-exclusive lock”是“buffer cleanup lock”的同义词,该术语多年前首次出现在 nbtree 中。通过一致地使用“cleanup lock”一词来标准化。这完成了提交 276db875 中开始的工作。没有理由有两个术语。但只有一个术语是有充分理由的:避免混淆 VACUUM 在索引 AM 中调用 ambulkdelete 时为何会获取完整的 cleanup lock(而不仅仅是普通的 exclusive lock)。这与保护物理索引数据结构本身无关。它对于实现一种锁定协议是必需的,该协议确保指向堆/表结构的 TID 在 VACUUM 之前不会被标记为可回收(这与 VACUUM 在其第一个堆传递期间如何使用 cleanup lock 有些相似)。请注意,索引 AM 不一定需要实现此锁定协议——一些索引 AM 使用 MVCC 快照作为其唯一的内部锁定,以防止不安全的 TID 回收。顺便,更新 nbtree README。将上述索引 vacuuming 锁定协议的讨论与提交 2ed5b87f 添加的“drop leaf page pin”优化分开。我们现在通过描述单个索引扫描如何安全地选择退出应用标准锁定协议(因此可以避免阻塞 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)生产系统倾向于在日志中包含更多由于连接尝试失败、应用程序活动产生的 ERROR 消息等引起的垃圾信息。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 并执行 pageWrites,但这并不关键,因为所有使用它们的代码如果发现它们已更改,将只是重试。唯一的区别是,大多数代码现在将看到一个绝对无效的初始值,而不是一个可能刚刚过时的值,但这每个后端生命周期只会发生一次,所以不应该是一个大问题。由我提交补丁,由 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 获取一条消息,以报告从远程服务器收到的错误。以前,如果它既不能从 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 提交