pg_dumpbinary 2.5,一个用于以二进制格式转储 PostgreSQL 数据库的程序,已发布。
pgBadger v11.6,一个用 Perl 编写的 PostgreSQL 日志分析器和图形工具,已发布。
pgagroal 1.3.0,一个用于 PostgreSQL 的高性能协议原生连接池,已发布
https://archives.postgresql.org/pgsql-jobs/2021-09/
Planet PostgreSQL: https://planet.postgresql.org/
本周 PostgreSQL 每周新闻由 David Fetter 带给您
请在太平洋标准时间(PST8PDT)周日下午 3:00 前将新闻和公告提交至 david@fetter.org。
Michaël Paquier 推送了
移除 TAP 测试中一些未使用的变量。作者:Amul Sul 讨论:https://postgr.es/m/CAAJ_b96xuFh4JZE6p-zhLyDu7q=NbxJfb1z_yeAu6t-MqaBC+Q@mail.gmail.com https://git.postgresql.org/pg/commitdiff/5fcb23c18fe408bfc6669aa5bca2d21896f9fe90
将共享内存大小的计算移至其自身的函数。此更改将 CreateSharedMemoryAndSemaphores() 中的共享内存大小计算重构为其自身的函数。这是为了在未来更改中使用,与使用某些 GUC 的巨页和共享内存的设置相关,同时对扩展本身也很有用。作者:Nathan Bossart 讨论:https://postgr.es/m/F2772387-CE0F-46BF-B5F1-CC55516EB885@amazon.com https://git.postgresql.org/pg/commitdiff/0bd305ee1d427ef29f5fa4fa20567e3b3f5ff792
清理一些使用“(expr) ? true : false”的代码。此处简化的所有代码路径已经在使用布尔值或使用导致零或一的表达式,使得额外的位不必要。作者:Justin Pryzby 复审人:Tom Lane、Michael Paquier、Peter Smith 讨论:https://postgr.es/m/20210428182936.GE27406@telsasoft.com https://git.postgresql.org/pg/commitdiff/fd0625c7a9c679c0c1e896014b8f49a489c3a245
引入 GUC shared_memory_size。此运行时计算的 GUC 显示服务器主共享内存区域的大小,同时考虑扩展分配的共享内存量,因为这是在处理 shared_preload_libraries 之后计算的。作者:Nathan Bossart 讨论:https://postgr.es/m/F2772387-CE0F-46BF-B5F1-CC55516EB885@amazon.com https://git.postgresql.org/pg/commitdiff/bd1788051b02cfddcd9ef0e2fd094972f372b8fd
修复 ipci.c 中的编译警告。打印 Size 时最好使用 %zu。这是 bd17880 中的疏忽,根据 buildfarm 成员 lapwing 的反馈。https://git.postgresql.org/pg/commitdiff/aa37a439db6bd328d68ce815ab9e12467f42493b
使 shared_memory_size 成为预设选项。bd17880 将其设置为内存参数,但文档却说了不同的情况。此处采用了一个预设参数,因为此选项是在启动时编译的。报告人:Fujii Masao 讨论:https://postgr.es/m/4cc5b434-b174-9aae-197b-737db6cac4e3@oss.nttdata.com https://git.postgresql.org/pg/commitdiff/3b231596ccfc6bb6564c63a574e429765c0f775e
Peter Eisentraut 推送了
改进静态链接的 pkg-config 文件修复。修改 4c2eab3a0dec2eae40892fb525830a5947a398c7,以便链接不带 "_shlib"
后缀的库,因为这是为静态链接设计的。https://git.postgresql.org/pg/commitdiff/55392bc5b0e0c1a8045627bbc41b4ec7143c4cc7
修复不正确的格式占位符。https://git.postgresql.org/pg/commitdiff/bb1412baa5b57652ef69f7e995657d085fd308e4
禁用匿名记录哈希支持,除非在特殊情况下。提交 01e658fa74 为行类型添加了哈希支持。这还添加了对哈希匿名记录类型的支持,使用了类型缓存用于记录类型比较支持的相同方法:它只是报告它可以工作,但如果组件类型实际上不支持该操作,则它可能在运行时失败。我们对于比较可以这样做,因为大多数类型都支持比较。但是某些类型不支持哈希,因此当前状态可能会导致运行时失败,其中规划器选择哈希而不是排序,而如果只有排序是一个选项,则之前可以正常工作。但是,我们希望递归联合中的路径跟踪以及基于此构建的 SEARCH 和 CYCLE 子句能够支持记录哈希。在这种情况下,哈希是唯一的计划选项。因此,启用它,此提交实现了以下方法:类型缓存不报告哈希可用于记录类型。这撤消了 01e658fa74 的那部分。相反,无论如何都需要哈希的调用者可以自己覆盖该结果。此补丁仅触及调用者,以使上述递归查询用例起作用,即联合的解析分析以及 hash_array() 函数。报告人:Sait Talha Nisanci sait.nisanci@microsoft.com 错误:#17158 讨论:https://postgresql.ac.cn/message-id/flat/17158-8a2ba823982537a4%40postgresql.org https://git.postgresql.org/pg/commitdiff/a3d2b1bbe904b0ca8d9fdde20f25295ff3e21f79
修复拼写错误。https://git.postgresql.org/pg/commitdiff/7390b6421a98b70554b6b5edea5d6e012dfdbbba
删除无用的强制类型转换。将 strVal() 的参数强制转换为 (Value *
) 是无用的,因为 strVal() 已经这样做了。大多数代码无论如何都没有这样做;这显然只是渗入某些文件的一种风格。复审人:Dagfinn Ilmari Mannsåker ilmari@ilmari.org 复审人:Kyotaro Horiguchi horikyota.ntt@gmail.com 讨论:https://postgresql.ac.cn/message-id/flat/5ba6bc5b-3f95-04f2-2419-f8ddb4c046fb@enterprisedb.com https://git.postgresql.org/pg/commitdiff/cbdf75bf8053f88bbae6b307f34ab057424a370f
删除 Value 节点结构。Value 节点结构是一个奇怪的构造。它是自己的节点类型,但在大多数情况下,它实际上具有 Integer、Float、String 或 BitString 的节点类型。因此,结构名称和节点类型在大多数情况下不匹配,因此必须对其进行特殊处理。特殊构造似乎没有任何价值。很少有代码想要接受所有 Value 变体但没有其他变体(即使它这样做了,这也没有提供任何方便的方式来检查它),并且大多数代码要么只想要一个特定的节点类型(通常是 String),要么它接受除了 Value 之外的更广泛的节点类型。此更改删除了 Value 结构和节点类型,并将其替换为单独的 Integer、Float、String 和 BitString 节点类型,它们是自身的正确节点类型和结构,并且行为大多像普通节点类型。此外,这删除了 T_Null 节点标记,该标记以前也是 Value 的可能变体,但实际上未在 A_Const 中包含的 Value 之外使用。用 A_Const 中的 isnull 字段替换它。复审人:Dagfinn Ilmari Mannsåker ilmari@ilmari.org 复审人:Kyotaro Horiguchi horikyota.ntt@gmail.com 讨论:https://postgresql.ac.cn/message-id/flat/5ba6bc5b-3f95-04f2-2419-f8ddb4c046fb@enterprisedb.com https://git.postgresql.org/pg/commitdiff/639a86e36aaecb84faaf941dcd0b183ba0aba9e9
修复 _equalA_Const
。639a86e36aaecb84faaf941dcd0b183ba0aba9e9 忽略了对 _equalA_Const
进行必要的调整。仅通过 COPY_PARSE_PLAN_TREES
找到。https://git.postgresql.org/pg/commitdiff/0ffbe900ce599d204536b9623291e05e965da23e
Fujii Masao 推送了
修复注释中的拼写错误。作者:Hou Zhijie 讨论:https://postgr.es/m/OS0PR01MB5716E6A6535FDFDC5A1B004194CE9@OS0PR01MB5716.jpnprd01.prod.outlook.com https://git.postgresql.org/pg/commitdiff/78aa616be74a13156f4fc8db3a131f1fdc2cce47
postgres_fdw:允许通过 GUC 设置远程连接的 application_name。此提交添加了 postgres_fdw.application_name GUC,该 GUC 指定 postgres_fdw 建立到外部服务器的连接时使用的 application_name 配置参数的值。此 GUC 设置始终覆盖外部服务器对象的 application_name 选项。当我们想要为每个远程连接指定我们自己的 application_name 时,此 GUC 非常有用。之前,远程连接的 application_name 基本上只能通过服务器对象的选项来设置。但这表示连接到同一外部服务器的每个会话基本上都应使用相同的 application_name。此外,如果我们想要更改设置,我们必须执行“ALTER SERVER ... OPTIONS ...”命令。这很不方便。作者:Hayato Kuroda 复审人:Masahiro Ikeda、Fujii Masao 讨论:https://postgr.es/m/TYCPR01MB5870D1E8B949DAF6D3B84E02F5F29@TYCPR01MB5870.jpnprd01.prod.outlook.com https://git.postgresql.org/pg/commitdiff/449ab6350526e99d33363706b759951ebad7928e
postgres_fdw:恢复 postgres_fdw.application_name 的不稳定测试。提交 449ab63505 添加了检查 postgres_fdw.application_name GUC 是否按预期工作的测试。但是,它们不稳定,并导致一些 buildfarm 成员报告失败。此提交恢复了那些不稳定的测试。报告人:Tom Lane,根据 buildfarm 的反馈 讨论:https://postgr.es/m/3220909.1631054766@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/98dbef90eb29b13079ba3bd260b3c5818904ee86
修复备用服务器中 WAL 归档的问题。以前,walreceiver 在完成当前段的写入并接收到任何应写入下一个段的 WAL 数据后,总是关闭当前打开的 WAL 段并创建其归档通知文件。如果 walreceiver 在下一个段中的任何 WAL 数据到达备用服务器之前退出,它不会创建当前段的归档通知文件,即使该段已知已完成。此行为可能会导致段的 WAL 归档延迟到后续的重启点或检查点创建其通知文件。为了解决此问题,此提交更改了 walreceiver,以便在接收到下一个 WAL 数据之前,如果已知当前 WAL 段已完成,它会立即创建其归档通知文件。向所有受支持的分支进行反向移植。报告人:Kyotaro Horiguchi 作者:Fujii Masao 复审人:Kyotaro Horiguchi 讨论:https://postgr.es/m/20200630.165503.1465894182551545886.horikyota.ntt@gmail.com https://git.postgresql.org/pg/commitdiff/596ba75cb11173a528c6b6ec0142a282e42b69ec
pgbench: 一旦超出计时器,立即停止计数跳过的事务。当使用节流时,延迟超出限制的事务将被计数并报告为跳过。 之前,存在这样一种情况,即使超过了 -T 选项中指定的计时器,pgbench 也会计算所有跳过的事务。 这可能需要很长时间才能完成,特别是当 -R 选项中不切实际的高速率设置导致大量事务滞后时。 这可能会阻止 pgbench 立即结束,因此用户可能会觉得 pgbench 卡住了。 为了解决这个问题,此提交更改了 pgbench,使其一旦超过计时器就停止计算跳过的事务。 即使有很多尚未计数的跳过事务,计时器也可以使 pgbench 很快结束。 请注意,在 -T 下不能保证所有跳过的事务都被计数,但在 -t 下可以保证。 这在实践中是没问题的,因为在实际设置中这种情况不太可能发生。 而且这也不是此提交新引入的问题。 以前也存在 pgbench 在未计算所有跳过的事务就结束的情况。 回溯到 v14。 经过讨论,我们决定不费心回溯到稳定分支,因为很难想象这个问题会在实践中发生(使用实际设置)。 作者:Yugo Nagata,Fabien COELHO 审核人:Greg Sabino Mullane,Fujii Masao 讨论:https://postgr.es/m/20210613040151.265ff59d832f835bbcf8b3ba@sraoss.co.jp https://git.postgresql.org/pg/commitdiff/9bcbd7c581a5de3b915ef8fe0262e4abd9cb6e59
Tom Lane 推送
使 timetz_zone() 稳定,并更正 DYNTZ 缩写的错误。 历史上,timetz_zone() 一直使用 time(NULL) 作为决定 DST 是否激活的参考点。 这意味着它的结果可以在语句内更改,因此需要将其标记为 VOLATILE(参见 35979e6c3)。 但是,该定义与我们在其他地方处理时间戳的方式非常不一致。 让我们改为使用事务开始时间 ("now()") 作为参考点。 这使其可以标记为 STABLE,并且还节省了每次调用的内核调用。 与此同时,删除该函数对 pg_time_t 和 pg_localtime 的使用。 这些与该区域中的其他代码不一致,这实际上导致了一个错误:如果区域由动态 TZ 缩写指定,timetz_zone() 会提供完全错误的答案。 (我们需要在后面的分支中对此进行处理,但修复方式会与此不同。) Aleksander Alekseev 和 Tom Lane 讨论:https://postgr.es/m/CAJ7c6TOMG8zSNEZtCn5SPe+cCk3Lfxb71ZaQwT2F4T7PJ_t=KA@mail.gmail.com https://git.postgresql.org/pg/commitdiff/388e71af880d579212c2489686903c2cfdea9032
修复关于 struct pg_tm 内容的具有误导性的注释。 pgtime.h 文档记录了 tm_mon 的 PG 解释以及 tm_year 的 POSIX 解释,但没有提示这两个注释在我们的代码中都不正确。 也许有一天我们应该切换到使用两个单独的结构定义,以便更清楚地表明在何处使用哪种语义。 但我担心乏味与安全性的权衡不会很好。 讨论:https://postgr.es/m/CAJ7c6TOMG8zSNEZtCn5SPe+cCk3Lfxb71ZaQwT2F4T7PJ_t=KA@mail.gmail.com https://git.postgresql.org/pg/commitdiff/89dba59590fdd03799a47daf8019890d4324fbcf
进一步修复 psql 查询取消测试。 等待 pg_sleep 运行的查询没有执行任何操作,因为它使用的正则表达式模式可以匹配自身。 报告:https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=conchuela&dt=2021-09-06%2018%3A00%3A20 https://git.postgresql.org/pg/commitdiff/bd5846e4a9c1338ded5efcef53511f0d71f53f0e
修复重写器以在重写查询时正确设置 hasModifyingCTE。 如果我们从原始查询复制数据修改 CTE 到替换查询(来自 DO INSTEAD 规则),则必须在替换查询中正确设置 hasModifyingCTE。 如果不这样做,可能会导致各种不愉快的情况,例如并行计划的不安全使用。 该代码还忽略了传播 hasRecursive,但这目前只是表面上的。 如果规则操作是 INSERT...SELECT,则会出现困难。 我们将原始查询的 RTE 和 CTE 附加到子 SELECT 查询,但只允许数据修改 CTE 出现在最顶层的查询中。 目前,在这种情况下会抛出错误。 通过将 CTE 附加到顶部的 INSERT 查询,可能可以避免此错误;但这需要大量新代码来调整 ctelevelsup 引用。 考虑到用例的狭窄性以及回溯此修复的需要,目前似乎不值得为此麻烦。 如果我们收到领域投诉,可以重新考虑这个问题。 根据 Greg Nancarrow 的报告。 回溯到所有受支持的分支。(此处添加的测试用例在 v10 之前不会失败,但是在 9.6 中有很多地方检查顶级 hasModifyingCTE,因此我毫不怀疑此代码更改也是必要的。)Greg Nancarrow 和 Tom Lane 讨论:https://postgr.es/m/CAJcOf-f68DT=26YAMz_i0+Au3TcLO5oiHY5=fL6Sfuits6r+_w@mail.gmail.com
讨论:https://postgr.es/m/CAJcOf-fAdj=nDKMsRhQzndm-O13NY4dL6xGcEvdX5Xvbbi0V7g@mail.gmail.com https://git.postgresql.org/pg/commitdiff/362e2dcc46195faadd3fa0ba011dd9a8e3829e7a
在 psql 的制表符补全中,提供拼写的命令而不是缩写。 各种 psql 反斜杠命令都有单字母形式和长形式,例如 \e 和 \edit。 以前,制表符补全通常提供单字母形式,但不提供长形式。 提供长形式似乎更明智,因为 (a) 当您已经键入单字母时,不会发生有用的补全,并且 (b) 如果您对命令集不太熟悉,以至于不知道这一点,那么长形式可能会更不容易混淆。 Haiying Tang,由 Dagfinn Ilmari Mannsåker 和我审核 讨论:https://postgr.es/m/OS0PR01MB61136018064660F095CB57A8FB129@OS0PR01MB6113.jpnprd01.prod.outlook.com https://git.postgresql.org/pg/commitdiff/7cffa2ed0c9f7f4d96bac7af5284c47e82af5ffa
修复关于 TOAST 访问宏的具有误导性的注释。 似乎是我的错误在提交 aeb1631ed 中。 Christoph Berg 指出。 讨论:https://postgr.es/m/YTeLipdnSOg4NNcI@msg.df7cb.de https://git.postgresql.org/pg/commitdiff/490798451a3adc32b71b30e285bd99875d67fa2b
避免围绕 getFormattedTypeName() 的无用的 malloc/free 流量。 Coverity 抱怨说 getFormattedTypeName() 的一个调用者未能释放返回的字符串。 这是事实,但与其修复这一个,不如消除这个繁琐且容易出错的要求。 现在 getFormattedTypeName() 缓存其结果,strdup 该结果并期望调用者释放它几乎没有什么作用,除了浪费周期。 在 getTypes 没有为类型创建 TypeInfo 的情况下,我们确实会创建一个泄漏,但这基本上永远不会发生。 回溯,如提交 6c450a861 那样。 这不是一个特别有趣的错误修复,但 API 更改似乎对未来的回溯活动构成风险,如果我们不回溯它。 https://git.postgresql.org/pg/commitdiff/072e2f8a62002cb01ed6c4e161442e133509349e
尽早检查关系长度溢出。 我们不允许关系超过 2^32-1 个块,因为块号是 32 位的,并且最后一个可能的块号保留用于表示 InvalidBlockNumber。 mdextend 中对此进行了检查,但这真的太晚了,因为 smgr API 要求我们为要添加的块创建一个缓冲区,并且我们不希望有任何具有块号 InvalidBlockNumber 的缓冲区。 (这种情况可能会触发 bufmgr.c 中的断言,而且我认为它可能会混淆 ReadBuffer 稍后用于数据超出 EOF 的逻辑。)因此,将检查放入 ReadBuffer 中。 根据 Christoph Berg 的报告。 它一直都是这样,因此回溯到所有受支持的分支。 讨论:https://postgr.es/m/YTn1iTkUYBZfcODk@msg.credativ.de https://git.postgresql.org/pg/commitdiff/8481f99896a192e9fd57f5e1a99e255e27680a10
避免从已终止的计划中获取。 某些计划节点类型在返回 NULL 后再次被调用时反应不佳。 PortalRunSelect() 长期以来通过在看到我们已经将门户运行到结尾时使用 NoMovementScanDirection 调用执行器来处理这种情况。 然而,提交 ba2c6d6ce 忽略了这一点,因此如果已完全获取的游标具有这样的计划,则持久化该游标将失败。 根据 Tomas Barton 的报告。 回溯到 v11,因为有问题的提交是。 (我省略了一个测试用例,因为导致问题的计划类型并不是那么稳定。)讨论:https://postgr.es/m/CAPV2KRjd=ErgVGbvO2Ty20tKTEZZr6cYsYLxgN_W3eAo9pf5sw@mail.gmail.com https://git.postgresql.org/pg/commitdiff/cba79a163267a44205e391137deb543f4f89bc8b
修复 NO SCROLL 游标的一些异常。 我们长期以来禁止从 NO SCROLL 游标向后获取,但该禁令并未扩展到我们完全重绕查询然后重新向前获取的情况。 我认为原因是此逻辑主要用于保护无法反向运行的计划节点。 但是,如果查询是易变的(包括 SELECT FOR UPDATE,不仅仅是具有易变函数的查询),则重新读取查询输出是有问题的:重新读取可能会产生不同的结果,这会完全混淆游标导航逻辑。 不喜欢这种方法的另一个原因是,某些代码路径会根据到目标行的距离向后获取或重绕并向前获取; 因此,看似相同的用例可能会或可能不会出现“游标只能向前扫描”错误。 因此,让我们通过禁止 NO SCROLL 游标中的重绕和向后获取来清理事情。 通常,我们只会 HEAD 中进行这样的定义更改,但现在考虑此更改的第三个原因。 提交 ba2c6d6ce 为不可滚动的 WITH HOLD 游标创建了一些新的用户可见的异常,如果游标在提交之前被部分读取,则游标结果中的导航会感到困惑。 解决这些异常的唯一好方法是禁止重绕此类游标,这允许删除 ba2c6d6ce 添加到 PersistHoldablePortal 中的不正确的游标状态操作。 为了尽量减少后向分支(包括 v14)中的行为更改,仅当 NO SCROLL 游标具有 holdStore 时才拒绝重绕它,即由于 WITH HOLD 而从先前的事务中保持下来。 这应该避免破坏大多数对是否将游标声明为可滚动不严谨的应用程序。 我们将从 v15 开始在整个范围内强制执行该禁令。 回溯到 v11,因为 ba2c6d6ce 是。 讨论:https://postgr.es/m/3712911.1631207435@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/c1b7a6c2731241cf5af4c08de54a64fc8999d727
使 pg_regexec() 对于超出范围的 search_start 具有鲁棒性。 如果 search_start 大于字符串的长度,我们应该立即返回 REG_NOMATCH。 (请注意,不应拒绝相等的情况,因为模式可能能够匹配零个字符。)这可以保护各种内部假设,即字符串位置范围的最小值不大于最大值。 违反这些假设可能会导致尝试获取 string[search_start-1],从而可能导致崩溃。 Jaime Casanova 指出,这种情况可以通过接受用户指定的起始位置的新 regexp_xxx 函数访问。 我不相信它可以通过 v14 及以下版本中的任何内核调用站点访问。 但是,扩展程序可能会使用超出范围的 search_start 调用 pg_regexec,因此我们仍然回溯修复。 讨论:https://postgr.es/m/20210911180357.GA6870@ahch-to https://git.postgresql.org/pg/commitdiff/e757080e041214cf6983e3e77ef01e83f1371d72
Álvaro Herrera 推送
https://postgr.es/m/CAH2L28vddB_NFdRVpuyRBJEBWjz4BSyTB=_ektNRH8NJ1jf95g@mail.gmail.com
https://git.postgresql.org/pg/commitdiff/0c6828fa987b791744b9c8685aadf1baa21f8977Noah Misch 推送
AIX:通过遵守 SHLIB_EXPORTS 修复缺失的 libpq 符号。我们使每个 AIX 共享库导出该库中 .o 文件中找到的所有全局符号。这不包括通过 -lpgcommon_shlib 获取的符号。这在平均情况下是好的,但当提交 e6afa8918c461c1dd80c5063a950518fa4e950cd 将五个官方 libpq API 符号移动到 src/common 时,它成为了 libpq 的一个问题。通过为 AIX 实现 SHLIB_EXPORTS 机制来修复此问题,以便受影响的库导出与在 Linux 上导出的相同的符号。这重新引入了符号 pg_encoding_to_char、pg_utf_mblen、pg_char_to_encoding、pg_valid_server_encoding 和 pg_valid_server_encoding_id。回溯到 v13,这是上述提交首次出现的地方。虽然在 libpq 或 libecpg 中添加或删除符号导出通常不是次要版本发布的时机,但我们应该预期用户希望每个文档化的符号都存在。Tony Reix 的讨论:https://postgr.es/m/PR3PR02MB6396742E2FC3E77D37A920BC86C79@PR3PR02MB6396.eurprd02.prod.outlook.com https://git.postgresql.org/pg/commitdiff/8670b9b999adb66e2e063225496962763c4c28de
撤销 public schema 的 PUBLIC CREATE 权限,现在归 pg_database_owner 所有。这会将默认 ACL 切换为自 CVE-2018-1058 以来文档中推荐的 ACL。升级将保留任何旧的所有权和 ACL。拒绝 2018 年建议的站点应重新审视此问题。从头开始配置新数据库集群的步骤可能需要创建 schema,授予更多权限等等。树外的测试套件可能需要此类更新。由 Peter Eisentraut 审核。讨论:https://postgr.es/m/20201031163518.GB4039133@rfd.leadboat.com https://git.postgresql.org/pg/commitdiff/b073c3ccd06e4cb845e121387a43faa8c68a7b62
更新 src/test/kerberos 以适应之前的提交。https://git.postgresql.org/pg/commitdiff/2d689f2ee4615629867c4319a35533696cd16589
Amit Kapila 推送了此项。
在 LogicalIncreaseXminForSlot() 中记录新的目录 xmin 候选项。类似于 LogicalIncreaseRestartDecodingForSlot(),向 LogicalIncreaseXminForSlot() 添加一条调试消息,报告新的 catalog_xmin 候选项。这只是在逻辑解码期间添加了额外的诊断信息,可以帮助调试。作者:Ashutosh Bapat 审核人:Masahiko Sawada,Amit Kapila 讨论:https://postgr.es/m/CAExHW5usQWbiUz0hHOCu5twS1O9DvpcPojf6sor=8q--VUuMbA@mail.gmail.com https://git.postgresql.org/pg/commitdiff/4c3478859b7359912d7e99fea702c56b1f53000c
使为所有表定义的发布无效化。在为所有表定义发布后,即使没有副本标识,也允许对关系进行更新/删除。这之后会导致订阅者出错。原因是对于此类发布,我们没有使 relcache 无效化,并且关系发布信息没有被重建。同样,我们也没有在删除此类发布后使 relcache 无效化,这将禁止即使没有任何发布也无法进行无副本标识的更新/删除。作者:Vignesh C 和 Hou Zhijie 审核人:Hou Zhijie、Kyotaro Horiguchi、Amit Kapila 回溯:10,这是它引入的版本。讨论:https://postgr.es/m/CALDaNm0pF6zeWqCA8TCe2sDuwFAy8fCqba=nHampCKag-qLixg@mail.gmail.com https://git.postgresql.org/pg/commitdiff/8bd534274099aabf721ca4baef2e8a3a379d7b02
Heikki Linnakangas 推送了此项。
Andres Freund 推送了此项。
Magnus Hagander 推送了此项。
Daniel Gustafsson 推送了此项。