PostgreSQL 14 Beta 2 发布。 测试!
第 12 届 PostgreSQL 大会古巴站 (PostgresqlCUBA, @PgCuba) 将于 2021 年 11 月 18-19 日在哈瓦那自由酒店举行。本次会议是 TECNOGET 大会的一部分,我们将设立一个专门用于 PostgreSQL 相关主题演讲的会场。更多详情,请联系 cu AT postgresql DOT org。
JDBC 42.2.22 发布
PgpoolAdmin 4.2.0,Pgpool-II 的管理工具,发布。
pgCenter 0.9.0,用于观察和故障排除 PostgreSQL 的命令行管理工具,发布
https://archives.postgresql.org/pgsql-jobs/2021-06/
Planet PostgreSQL:https://planet.postgresql.org/
本周 PostgreSQL 周报由 David Fetter 提供。
请在太平洋标准时间(PST8PDT)周日晚上3:00之前将新闻和公告发送至 david@fetter.org。
Tom Lane 提交
修复 mktime() 新版本中的可移植性问题。最近的 glibc 版本使得 mktime() 在 tm_isdst 与当前时区不一致时失败;尤其是在 tm_isdst = 1 且时区为 UTC 时会失败。(在我看来,这似乎与 POSIX 规定的对 struct tm 其他字段“不正确”值的处理方式大相径庭,所以我认为这是一个 bug,但他们可能会说是故意的。)这已被观察到会导致在不同时区创建的归档进行 pg_restore 时出现一些表面的问题。为了解决这个问题,使用归档中的字段值执行 mktime(),如果失败则再次尝试使用 tm_isdst = -1。这将产生一个比原始区域偏移 UTC 偏移量大的结果,但以前也是如此。这并不算非常关键,因为除了可能打印结果之外,我们不使用其结果。(将来有一天我们应该废弃整个逻辑,而是将标准格式的时间戳记录在归档中。但对于向后移植的 bug 修复来说,这还不行。)另外,通过让 initdb 的 build_time_t() 将 tm_isdst 设置为 -1 而不是 0,来保护我们唯一对 mktime() 的其他使用。这种情况只会在全年都处于 DST 的时区中出现问题;但我认为有些时区确实存在这种情况,或者将来可能会存在。根据 Wells Oliver 的报告。向所有支持的版本回溯,因为它们都可能需要与较新版本的 glibc 配合使用。讨论:https://postgr.es/m/CAOC+FBWDhDHO7G-i1_n_hjRzCnUeFO+H-Czi1y10mFhRWpBrew@mail.gmail.com https://git.postgresql.org/pg/commitdiff/f807e3410fdfc29ced6590c7c2afa76637e001ad
删除孤立的预期结果文件。这应该在 43e084197 中删除,该提交删除了相应的 spec 文件。在玩弄 isolationtester 时发现的。 https://git.postgresql.org/pg/commitdiff/ffbe9dec13599fa786ea6567df1c6a3f3ee3c673
更新变体预期结果文件。这应该在 d248a229b 中更新,但被忽略了。根据添加它的 31a877f18,此文件旨在显示在 default_transaction_isolation = serializable 下得到的结果。我们在其他隔离测试中在很大程度上已经失去了这个目标,但只要我们还有这个文件,它就应该正确。在玩弄 isolationtester 时发现的。 https://git.postgresql.org/pg/commitdiff/0a1e80c5c4f094087257fc4284a87e0bc7bca591
删除另一个孤立的预期结果文件。 aborted-keyrevoke_2.out 在添加时(在提交 0ac5ad513 中)似乎是需要的,以处理 serializable 事务模式的情况。然而,在 serializable 模式下的输出实际上与常规的 aborted-keyrevoke.out 文件匹配,而且据我所知,长期以来都是这样。没有必要继续维护这个变体。 https://git.postgresql.org/pg/commitdiff/f6352a0d4e437ac8bc266f77df22d064592056c9
更新另一个变体预期结果文件。这应该在 533e9c6b0 中更新,但被忽略了。鉴于没有抱怨,我将不向后移植。 https://git.postgresql.org/pg/commitdiff/d3c878499c9d639ff06e0664d06b8c731e30c2fc
改进一些与复制相关的代码中的 SQLSTATE 报告。我最初的目标是在 walrcv_connect() 失败时报告 ERRCODE_CONNECTION_FAILURE,但当我查看代码时,我意识到编写这段代码的人认为 errcodes 纯粹是可选的。这不符合我们项目的政策。因此,确保在每个 ereport(a)级别为 ERROR 或更高,并且(b)不是可疑的内部逻辑错误的情况下都提供 errcode。还修复了一些非常可疑的现有 errcode 分配。虽然这不符合政策,但很大程度上是表面的,因为其中很少有情况可以报告给应用程序。所以我认为没有必要向后移植。讨论:https://postgr.es/m/2189704.1623512522@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/6b787d9e32005867ee3660d1ea20f447810a403d
修复 ExecuteQuery 中错误后的 plancache 引用计数泄漏。当将计划从 plancache 放入 Portal 时,不应该在 GetCachedPlan 和 PortalDefineQuery 之间有任何出错的可能性;如果发生这种情况,GetCachedPlan 增加的计划引用计数将泄漏。我在重构 9dbf2b7d7 中的代码时打破了这个规则。除了某些内存泄漏外,没有可见的后果,而且由于没有人很可能连续触发相关的错误条件,因此我们没有注意到也就不足为奇了。尽管如此,这是一个 bug,因此通过更改操作顺序来消除危险。在查找 bug #17053 的更好修复方法的过程中发现的。这个错误已经存在很久了,所以向所有支持的版本回溯。 https://git.postgresql.org/pg/commitdiff/131ea3e908d3c97a2fe1ab25cce5046dd5cb905f
集中处理实用语句的保护性复制逻辑。在“简单查询”代码路径中,在解析分析或执行实用语句时修改语句的节点树是可以的,因为之后它将被丢弃。然而,如果节点树在计划缓存中,那么在后续执行中它可能会被损坏。到目前为止,我们通过让各个实用语句函数在修改树之前调用 copyObject() 来处理这个问题。但这容易遗漏。Charles Samborski 的 bug #17053 表明 CREATE/ALTER DOMAIN 没有收到这个提示,如果从计划缓存中反复执行,可能会崩溃。在向后移植的版本中,我们只会应用一个狭窄的解决方案,但在 HEAD 版本中,似乎有必要采取一种更原则性的修复方法,以消除未来发生类似错误的可能性。因此,让我们将 copyObject 的责任从子项提升到 ProcessUtility,从而确保所有实用语句类型都能得到处理。此外,修改 ProcessUtility 的 API,使其调用者可以告知它是否需要进行复制步骤。事实证明,在所有情况下,直接调用者都知道节点树是否是暂时的,因此这不会涉及大量的代码改动。通过这种方式,虽然在从缓存执行的代码路径中由于有时会复制实际上不会被修改的节点树而损失了一点性能,但我们在简单查询代码路径中通过不复制一次性使用的节点树而获得了收益。(请注意,整个问题仅适用于实用语句。可优化语句没有这个问题,因为我们很久以前就让执行器将 Plan 树视为只读的。也许有一天我们也会让实用语句的执行也这样做,但我对此并不抱太大希望。)讨论:https://postgr.es/m/931771.1623893989@sss.pgh.pa.us 讨论:https://postgr.es/m/17053-3ca3f501bbc212b4@postgresql.org https://git.postgresql.org/pg/commitdiff/7c337b6b527b7052e6a751f966d5734c56f668b5
改进 pgbench 中的版本报告。提交 547f04e73 导致 pgbench 开始打印其版本号,这似乎是个好主意,但它还需要一些额外工作:* 打印服务器版本号,当它们不同时。* 打印 PG_VERSION 字符串,而不是某个重建的近似值。此补丁复制了 psql 用于此目的的经过充分测试的代码。讨论:https://postgr.es/m/1226654.1624036821@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/84bee9610965331d5110971d8de390a5bbe2effc
修复 DROP OWNED BY 对重复的 polroles 条目行为不当。通常情况下,pg_policy.polroles 数组不会列出同一个角色两次;但是 CREATE POLICY 不阻止这种情况。如果我们对一个重复列出的角色执行 DROP OWNED BY,RemoveRoleFromObjectPolicy 要么会遇到断言失败,要么会遇到 tuple-updated-by-self 错误。重写它以正确处理重复条目,并添加一个 CommandCounterIncrement 调用来防止其他问题。根据讨论,这里还需要进行其他清理工作,但这似乎是最低限度的必要修复。根据 Alexander Lakhin 的 bug #17062。它一直存在问题,所以向所有支持的版本回溯。讨论:https://postgr.es/m/17062-11f471ae3199ca23@postgresql.org https://git.postgresql.org/pg/commitdiff/d21fca084356946664bfce19d66d2df2bb873cbd
为 v14 中添加的 libpq 功能提供功能测试宏。我们收到一个请求,要求提供一种在编译时测试新流水线功能可用性的方法。更广泛地说,为所有新的 libpq API 功能通过 #ifdef 进行测试似乎是个好主意。人们一直在使用 pg_config.h 中的版本来进行此操作;但在越来越多的情况下,服务器版本与 libpq 版本不同,该版本更可能代表服务器版本。如果 libpq-fe.h 本身就是其功能来源的真相,那就更安全了。因此,我们建立一个政策,从 v14 开始,当我们向 libpq-fe.h 添加新的 API 时,将添加一个合适的功能存在宏。(似乎没有太大的意义去追溯应用此政策,但对于 v14 来说还不算太晚。)Tom Lane 和 Alvaro Herrera,根据 Boris Kolpackov 的建议。讨论:https://postgr.es/m/boris.20210617102439@codesynthesis.com https://git.postgresql.org/pg/commitdiff/6991e774e0304f5ef488cf1ae4fa79578b6ae3d5
稳定由提交 f61db909d 添加的测试用例。Buildfarm 成员 ayu 和 tern 有时会显示与预期不同的计划。我之前一直无法重现这种情况,但今天我终于明白了。如果存在并发的开放事务(可能是 buildfarm 中的 autovacuum 运行,但这也可以手动安排),那么在几行之前的 DELETE 语句删除的行的索引条目不会立即被杀死,导致规划器对 ft2.c1 的极值估计发生变化,这足以改变“c1 > 1100”的行数估计,从而将连接计划从 nestloop 更改为 hash。为了解决这个问题,将查询条件更改为“c1 > 1000”,无论是否存在并发开放事务,都会使 hash 计划被优先选择。由于此 UPDATE 是幂等的,因此其他方面没有变化。报告:https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=ayu&dt=2021-06-09%2022%3A45%3A48 报告:https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=ayu&dt=2021-06-13%2022%3A38%3A18 报告:https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=tern&dt=2021-06-20%2004%3A55%3A36 https://git.postgresql.org/pg/commitdiff/5843659d091bfb6f2c60e010ea1fd00e55ee6ada
也为简单表达式恢复 Portal 级别的快照。提交 84f5c2908 等未能覆盖 plpgsql 的“简单表达式”代码路径。如果在 COMMIT/ROLLBACK 之后执行的第一个命令是这些命令之一,而不是完整的 SPI 命令,我们必须显式调用 EnsurePortalSnapshotExists() 来确保我们有一个外部快照。请注意,仅在表达式执行期间推送快照是不够的:返回的内容可能是被 toast 过的,所以最好有一个快照来保护它。演示此事实的测试用例通过将 SQL 函数标记为 immutable 来作弊,即使它从表中获取数据。但这也不是用户从未做过的事情。根据 Jim Nasby 的报告。向 v11 回溯,与之前的修复相同。讨论:https://postgr.es/m/378885e4-f85f-fc28-6c91-c4d1c080bf26@amazon.com https://git.postgresql.org/pg/commitdiff/d102aafb6259a6a412803d4b1d8c4f00aa17f67e
使用注解来减少隔离测试结果的不稳定性。我们长期以来一直在应对不稳定隔离测试结果的问题。一些测试脚本插入了长时间的延迟来试图强制稳定的结果,这并不是很理想;但其他一些不可预测的失败模式仍然存在,导致 buildfarm 出现不可重现的失败。我已经花费了大量时间试图通过改进服务器端支持代码来解决这个问题,但效果不佳:这种方法根本无法应对源于不同服务器进程消息到达顺序的差异。然而,我们可以通过注解测试脚本本身来改进客户端方面,以显示可能以不同顺序发生的事件的期望报告顺序。此补丁添加了三种类型的注解来处理(a)可能完成其等待或不完成其等待,然后 isolationtester 才能看到它们等待的测试步骤;(b)不同会话中可以按任何顺序合法完成的测试步骤;以及(c)可能在另一会话的步骤完成之前或之后到达的 NOTIFY 消息。我们以后可能需要更多类型的注解,但这似乎足以应对我们在 buildfarm 中看到的不稳定性。它还让我们能够摆脱之前使用的所有长时间延迟,从而将隔离测试的运行时间缩短一分钟以上。向所有支持的分支回溯,因为 buildfarm 的不稳定性影响了所有分支,而且保持所有分支的 isolationtester 功能相同以简化未来可能的测试回溯是有益的。讨论:https://postgr.es/m/327948.1623725828@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/741d7f1047fe52da7ced6fa9cea661ce9320c8d4
改进隔离测试中查询结果的显示。以前,isolationtester 使用一些临时代码显示 SQL 查询结果,这些代码显然没有花费太多精力。字段值超过 14 个字符时不会与其他字段分隔,通常还会导致列不对齐。此外,查询结果与后续 isolationtester 输出之间没有视觉分隔。这使得测试结果文件混乱且难以阅读。为了改善这种情况,让我们使用 libpq 的 PQprint() 函数。虽然 psql 早已不再使用它,但在这里的目的来说它仍然足够好。与 741d7f104 类似,向所有支持的分支回溯,因此这不会成为回溯隔离测试更改的障碍。讨论:https://postgr.es/m/582362.1623798221@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/4a054069a36032a59afceb07f3b837f09ab1a2e9
不要假定 GSSAPI 结果字符串以 null 结尾。我们对 gss_display_status() 和 gss_display_name() 的使用假定这些函数返回的 gss_buffer_desc 字符串是以 null 结尾的。到目前为止,由于没有收到抱怨,它们似乎通常是这样。然而,可用的文档并没有保证这一点,并且一些 gss_display_status() 的 man 页显示了依赖于 gss_buffer_desc.length 字段而不是期望 null 终止的示例。此外,我们现在收到报告称,在某些实现中,clang 的地址消毒器认为指定长度之后的字节是未定义的。因此,将代码更改为依赖于 length 字段。这可能更多是表面上的修复,而不是修复任何实际的 bug,但很难确定,所以向所有支持的分支回溯。顺便说一下,还将 v12 的更改回溯到,这些更改使得 pg_GSS_error 能够诚实地处理从 gss_display_status 获取的多个消息。根据 Sudheer H R 的报告。讨论:https://postgr.es/m/5372B6D4-8276-42C0-B8FB-BD0918826FC3@tekenlight.com https://git.postgresql.org/pg/commitdiff/126cdaf47af275f76b2f2ddb023bfdc6f018ae30
文档:修复 CREATE FUNCTION 等命令语法摘要中 LEAKPROOF 的混淆。CREATE FUNCTION 及相关命令的语法摘要显示 LEAKPROOF 似乎是 IMMUTABLE/STABLE/VOLATILE 的替代项,而实际上它是一个独立的选择项。对此进行改进。根据 aazamrafeeque0 的抱怨。感谢 David Johnston 的建议。讨论:https://postgr.es/m/162444349581.694.5818572718530259025@wrigleys.postgresql.org https://git.postgresql.org/pg/commitdiff/2031e1668e5577e64cfed29da69a34903d5a5227
允许将非引号标识符用作隔离测试的会话/步骤名称。出于不明原因,isolationtester 一直坚持要求会话和步骤名称必须用双引号括起来。这相当繁琐,而且对测试的可读性帮助不大,尤其因为人们实际选择的名称几乎总是看起来像普通标识符。因此,让我们调整词法分析器,允许使用类似于 SQL 的标识符,而不仅仅是双引号字符串。(它们是类 SQL 的,而不是完全的 SQL,因为我没有添加任何大小写折叠逻辑。也没有提供 U&"..." 名称的规定,尽管没有人会关心。)此更改引入了一个不兼容性:如果您写 "foo""bar" 而没有空格,以前会被视为两个标识符,但现在它只是一个包含嵌入式引号的标识符。我已经将 src/test/isolation/ 中的所有 specfile 转换为了删除不必要的双引号,但仅此而已,因为我的眼睛已经开始发花。与 741d7f104 类似,向所有支持的分支回溯,因此这不会成为回溯隔离测试更改的障碍。讨论:https://postgr.es/m/759113.1623861959@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/a443c1b2d6a646cf90a8afc193c07ed12a2bf045
进一步稳定 postgres_fdw 测试。涉及 ft1_nopw 的查询不再稳定地返回相同的行。我推测,在 f61db909d/5843659d0 引入的更新之后, autovacuum 命中了“S 1”。“T 1”,释放了一些空间,改变了后续插入的存储位置。然而,直到现在这些结果才稳定,这仅仅是运气好,因为没有 ORDER BY 的 LIMIT 没有明确定义,而且我们在这个测试脚本中从未将该表视为仅追加表。由于我们只关心这些命令是否成功,所以只需将 `SELECT *` 替换为 "SELECT 1"。报告:https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=crake&dt=2021-06-23%2019%3A52%3A08 https://git.postgresql.org/pg/commitdiff/802177090992511c610804da54a4603d4f50c594
文档:从 v14 版本说明中删除提交 f560209c6。现在它已经被向后移植,它不再是 v14 的新功能。 https://git.postgresql.org/pg/commitdiff/8a80562d732c0da1ddcc9fb88dfb976f4b846577
删除 RemoveRoleFromObjectPolicy() 中不必要的失败情况。该函数实际上不需要打开或锁定其正在修改的 pg_policy 条目关联的 relation。它对 rel 进行的错误检查反而适得其反(例如,如果我们不想允许在系统目录上安装策略,这里不是阻止它的地方)。特别是,坚持所有权检查似乎是错误的。这实际上迫使用户为 DROP OWNED BY 使用超级用户,这肯定不是我们想要的效果。此外,重建策略表达式的依赖项也没有意义,因为它们没有被更改。最后,锁定表也似乎适得其反;它无助于防止竞争条件,因为我们在获取锁后未能重新读取 pg_policy 行。这意味着并发 DDL 可能会导致“tuple concurrently updated/deleted”错误;这与该代码将产生的行为相同,但开销更小。根据对 bug #17062 的讨论。向所有支持的版本回溯,因为此处移除的失败情况在 9.6 版本和 HEAD 版本中似乎同样不受欢迎。讨论:https://postgr.es/m/1573181.1624220108@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/5a0f1c8c0193f0dd7fba50c22d96781fa2414007
删除 libpq 对 stringinfo.c 中不必要的依赖。提交 c0cb87fbb 不明智地在 fe-connect.c 中引入了对 StringInfo 机制的依赖。我们不能在 libpq 中使用它,因为它会在 OOM 时触发 summary exit(1),而这对于通用库来说是不合适的行为。允许服务文件中任意行长度的目标似乎不值得付出太多努力,因此我们恢复到以前的方法,即使用堆栈分配的缓冲区并在缓冲区溢出时失败。但这并不是一个完全的恢复。我保留了该补丁的重构,使其只有一个退出路径,这似乎比每个错误路径都知道如何清理更清晰。此外,我将固定大小的缓冲区设置为 1024 字节而不是 256 字节,只是为了推迟需要可扩展缓冲区的时间。这里还有很多工作要做;特别是,目前缺乏对这种错误的任何机械检查似乎相当危险。但这个修复使我们恢复到 v13 的健壮性水平。讨论:https://postgr.es/m/daeb22ec6ca8ef61e94d766a9b35fb03cabed38e.camel@vmware.com https://git.postgresql.org/pg/commitdiff/8ec00dc5cd70e0e579e9fbf8661bc46f5ccd8078
文档:更新 v14 版本说明以恢复提交 c0cb87fbb。 https://git.postgresql.org/pg/commitdiff/dcffc9ba8a1e0ab1b0a57e9b9d38e3dc9960f83f
清除 isolationtester 中的内存泄漏。specscanner.l 每次扫描 spec 文件中的 token 会泄漏一千字节内存。显然有人认为开头的代码块只会执行一次;但它是在每次调用 yylex() 时都执行的。isolationtester.c 中的几个函数由于没有释放一次性分配而泄漏了少量内存。最好改进这些,以便 valgrind 能够给该程序一个干净的健康证明。还删除了一个丑陋的静态变量。Coverity 抱怨了一次性泄漏之一,这促使我尝试用 valgrind 对 isolationtester 进行检查,从而发现了更大的泄漏。 https://git.postgresql.org/pg/commitdiff/642c0697c96b9c6ba5d194653a329f7820565f01
Michaël Paquier 提交
移除 VACUUM FULL/CLUSTER 中的强制 toast 重新压缩。提交 bbe0a81 中引入的用于重新压缩 toast 数据的额外检查,即使没有进行重新压缩,也会对 VACUUM 或 CLUSTER 产生性能影响。当 toastable 列包含非 NULL 值时,这种影响更为明显。可以进行改进以降低这些额外检查的成本,但在这个阶段对于 14 版本来说并不重要,而且我们也不确定 VACUUM FULL/CLUSTER 的代码路径是否适合此任务。根据与包括 Andres Freund、Robert Haas、Álvaro Herrera、Tom Lane 和我本人在内的几位人士的讨论。讨论:https://postgr.es/m/20210527003144.xxqppojoiwurc2iz@alap3.anarazel.de https://git.postgresql.org/pg/commitdiff/dbab0c07e5ba1f19a991da2d72972a8fe9a41bda
改进 pg_event_trigger_ddl_commands() 中已删除对象的处理。当挖掘 pg_event_trigger_ddl_commands() 返回的对象列表时发现的已删除对象可能会导致缓存查找错误,因为获取对象地址和类型名称的调用会在对象丢失时失败。通过结合涉及身份列的 ALTER TABLE 子命令,可以看到这些查找错误。在此代码路径中,查找逻辑被更改为通过利用 2a10fdc 来忽略未找到的对象,从而获得类似于任何其他 SQL 可调用函数的行为。向后移植版本未作更改,因为它们需要这次过于侵入性的提交,不适合稳定版本。在此期间,还添加了测试用例来测试带有身份列的事件触发器,并为 relations 的事件 ddl_command_end 场景进行了更多压力测试。作者:Sven Klemm, Aleksander Alekseev, Michael Paquier 讨论:https://postgr.es/m/CAMCrgp2R1cEXU53iYKtW6yVEp2_yKUz+z=3-CTrYpPP+xryRtg@mail.gmail.com https://git.postgresql.org/pg/commitdiff/2d689babe3cb50dcb29f6ed595a61d56e518c0d8
文档:更一致地为 OpenSSL 应用
修复 pgbench 的 TAP 测试中日志的模式匹配逻辑。检查每个线程日志格式的逻辑使用了 grep() 和直接的 "$re",这将导致测试认为所有日志都匹配,而不管其格式如何。使用 "/$re/" 使 grep() 执行正则表达式测试,这正是我们想要的。顺便说一下,改进了一些测试,使其对预期的模式更加挑剔,并添加了更多注释来描述测试。在挖掘另一个补丁时发现的问题。作者:Fabien Coelho, Michael Paquier 讨论:https://postgr.es/m/YNPsPAUoVDCpPOGk@paquier.xyz 回溯到:11 https://git.postgresql.org/pg/commitdiff/c13585fe9e55813cf9feac67fe7b65d3a78fff92
文档:将 remove_temp_files_after_crash 移动到开发者选项部分。此选项的主要目的是允许出于调试目的检查临时文件,因此将其移到那里是自然的。cd91de0 中的疏忽。报告者:Justin Pryzby 作者:Euler Taveira 讨论:https://postgr.es/m/20210612004347.GP16435@telsasoft.com https://git.postgresql.org/pg/commitdiff/797b0fc0b078c7b4c46ef9f2d9e47aa2d98c6c63
通过 pgbench 的 TAP 测试中的日志检查添加更多调试信息。fairywren 对 c13585f 引入的模式检查不满意。我不确定这是否是 pgbench 的 bug,或者测试中使用的正则表达式模式对该 buildfarm 成员的环境来说过于严格。这增加了更多的调试信息,以显示不匹配预期模式的日志条目,以帮助找出发生的情况。这似乎是长远来看的一个好补充,因为这可能不是该领域的唯一问题。讨论:https://postgr.es/m/YNUad2HvgW+6eXyo@paquier.xyz https://git.postgresql.org/pg/commitdiff/87b2124dfa0782a697ea7b90aff15a6f6117a720
文档:为 MITM 和 SNI 添加缩略语。这为 MITM 和 SNI 添加了缩略语,因为文档已经使用 标记了它们。顺便说一下,请确保连字符一致地拼写 man-in-the-middle,并在适当的地方为这些新术语添加缩略语。作者:Daniel Gustafsson 审阅者:Michael Paquier 讨论:https://postgr.es/m/CE12DD5C-4BB3-4166-BC9A-39779568734C@yesql.se https://git.postgresql.org/pg/commitdiff/15ff5401d1719aaf6c9a47e5abea517cc2bcbaf1
清理 pgbench 日志检查 TAP 测试中的一些代码。这修复了此提交主题代码中的几个问题:- 将 open() 的用法替换为 slurp_file(),修复了 buildfarm 成员 fairywren 报告的一个问题,该成员的 perl 安装保留了 CRLF 字符,导致日志的匹配模式失败。- 移除 eval 块,它实际上是不必要的。这组问题是在修复 c13585fe 的另一个问题后出现的,这是错误的,因为这段代码自引入以来就存在问题。报告者:Andrew Dunstan 和 buildfarm 成员 fairywren 作者:Michael Paquier 审阅者:Andrew Dunstan 讨论:https://postgr.es/m/0f49303e-7784-b3ee-200b-cbf67be2eb9e@dunslane.net 回溯到:11 https://git.postgresql.org/pg/commitdiff/38ff135d9466c35b506b1049fedef73047907be0
移除 pgbench TAP 测试中一些无用的日志。002_pgbench_no_server 打印了数组指针而不是待测命令的 stdout 和 stderr 预期输出的实际内容。这并没有提供任何新的调试信息,因为测试名称可以追踪失败的位置。此提交只是移除了这些日志,因为其余打印的信息与 command_checks_all() 是冗余的。根据与 Andrew Dunstan 和 Álvaro Herrera 的讨论。讨论:https://postgr.es/m/YNXNFaG7IgkzZanD@paquier.xyz 回溯到:11 https://git.postgresql.org/pg/commitdiff/704e1dbd9aa29a0b46c356f1803ad55cbdef2c20
修复 MSVC 的 Solution.pm 中不存在的变量引用。自 8f4fb4c6 以来,MSVC 构建一直从 pg_config.h 中获取版本字符串,但一个错误消息引用了一个在该版本之前存在的变量。这没有造成任何后果,除非有人在版本号上出错。作者:Anton Voloshin 讨论:https://postgr.es/m/af79ee1b-9962-b299-98e1-f90a289e19e6@postgrespro.ru 回溯到:13 https://git.postgresql.org/pg/commitdiff/d5a2c413fcdd187dc16c4fab16610af7d4849cc1
Bruce Momjian 已推送
文档:添加关于数组函数引用的 PG 14 版本说明项。引用某些内置数组函数的用户定义对象在 PG 14 中需要重新创建。报告者:Justin Pryzby 讨论:https://postgr.es/m/20210608225618.GR16435@telsasoft.com https://git.postgresql.org/pg/commitdiff/25dfb5a831a1b8a83a8a68453b4bbe38a5ef737e
文档:PG 14 版本说明更新。报告者:Justin Pryzby 讨论:https://postgr.es/m/20210612034551.GU16435@telsasoft.com https://git.postgresql.org/pg/commitdiff/a2559d4093725592a3fd5da8a4c7ac7c883115a0
文档:PG 14 版本说明修复。与逻辑复制归因和 BRIN 索引相关的项目。报告者:Tomas Vondra, John Naylor 讨论:https://postgr.es/m/0db66294-a668-2caa-2b5e-a8db60b30662@enterprisedb.com, CAFBsxsH21KnteYdk33F1oZu2O726NSD6_XBq51Tn0jytsA1AnA@mail.gmail.com https://git.postgresql.org/pg/commitdiff/86b222b09071d3918c5c55b164d22b2236d3f872
文档:PG14 版本说明中提及 +4GB Windows 文件处理。报告者:Masahiko Sawada 讨论:https://postgr.es/m/CAD21AoCTHyouoGv-xt1qNjjvPbGMErLi0AJncByTvr66Nq7j8g@mail.gmail.com https://git.postgresql.org/pg/commitdiff/90855908b751d40f67352fa0252e0fcdaa7e317b
文档:调整 PG 14 版本说明以保持最新。 https://git.postgresql.org/pg/commitdiff/69a58bfe4ab05567a8fab8bdce7f3095ed06b99c
Álvaro Herrera 提交
修复 1632ea43682f 中的逻辑 bug。我忽略了一个条件在逻辑上是反转的。修复比简单地否定条件要复杂一些,以使代码更易于阅读。同时,修复了同一提交留下的一些过时的注释。作者:Masahiko Sawada sawada.mshk@gmail.com 作者:Álvaro Herrera alvherre@alvh.no-ip.org 审阅者:Amit Kapila amit.kapila16@gmail.com 讨论:https://postgr.es/m/YMRlmB3/lZw8YBH+@paquier.xyz https://git.postgresql.org/pg/commitdiff/33c509956704e1d918077b51ccd954f2e201a8f5
为活动的 walsender 使插槽失效添加测试用例。在本次提交之前,用于在保留的 WAL 大小过大时向正在运行的 walsender 发送信号的代码是完全没有覆盖的;这增加了对该情况的覆盖。此测试涉及向 walsender 和 walreceiver 发送 SIGSTOP 信号,然后执行检查点同时推进 WAL,然后发送 SIGCONT。Perl 测试中没有这种编码先例,并且我阅读了相关 man 页,发现它很可能在 Windows 上失败。因此,此测试在该平台上始终被跳过。作者:Álvaro Herrera alvherre@alvh.no-ip.org 讨论:https://postgr.es/m/202106102202.mjw4huiix7lo@alvherre.pgsql https://git.postgresql.org/pg/commitdiff/09126984a2631db8dd6299f23954e0dede69735f
撤销“为活动的 walsender 使插槽失效添加测试用例”。这撤销了提交 09126984a263;其中添加的测试用例曾经失败一次,原因仍然不明。删除该测试似乎更好,这样 14beta2 就不会有随机失败。 https://git.postgresql.org/pg/commitdiff/96795176810b979a2bf1f4563bdcb161679d5b95
为活动的 walsender 使插槽失效添加测试用例,第二版。在本次提交之前,用于在保留的 WAL 大小过大时向正在运行的 walsender 发送信号的代码是完全没有覆盖的;这增加了对该情况的覆盖。此测试涉及向 walsender 和 walreceiver 发送 SIGSTOP 信号,然后推进足够的 WAL 以触发检查点,然后发送 SIGCONT。Perl 测试中没有 STOP 信号的先例,并且我阅读了相关 man 页,发现它很可能在 Windows 上失败。因此,此测试在该平台上始终被跳过。此版本修复了上一个尝试 09126984a263 中偶尔出现的几个竞争条件;最值得注意的是,两个 LOG 字符串搜索都是循环,而不仅仅是第二个;我们在 STOP 信号之前获取日志开始位置;并在测试描述中引用正确的进程名。所有这些都根据 Tom Lane 的建议。作者:Álvaro Herrera alvherre@alvh.no-ip.org 讨论:https://postgr.es/m/202106102202.mjw4huiix7lo@alvherre.pgsql https://git.postgresql.org/pg/commitdiff/24043c27b46f873211177e3460ab09dc011802a5
Noah Misch 推送
移除 pg_wait_for_backend_termination()。它无法等待已经离开 procarray 的后端。容忍该限制的用户可以轮询 pg_stat_activity。其他用户可以使用 pg_terminate_backend() 的“timeout”参数。审阅者:Bharath Rupireddy。讨论:https://postgr.es/m/20210605013236.GA208701@rfd.leadboat.com https://git.postgresql.org/pg/commitdiff/5f1df62a459b51ab3bb625a0ee5e655429254257
复制 pg_terminate_backend() 的“timeout”参数的文本说明。将 pg_description 条目恢复到 v13 的形式,因为这些消息通常更短,并且不讨论单个参数。没有 catversion 增加,因为 pg_description 的内容不影响后端兼容性或应用程序兼容性。Justin Pryzby 讨论:https://postgr.es/m/20210612182743.GY16435@telsasoft.com https://git.postgresql.org/pg/commitdiff/0aac73e6a2602696d23aa7a9686204965f9093dc
完成 PQtraceSetFlags() 到 PQsetTraceFlags() 的重命名。Jie Zhang 讨论:https://postgr.es/m/TYWPR01MB767844835390EDD8DB276D75F90A9@TYWPR01MB7678.jpnprd01.prod.outlook.com https://git.postgresql.org/pg/commitdiff/047a259e35b9dde2dad5fd0e5d5d784bb327b848
Amit Kapila 提交
修复 speculative aborts 的解码。在为 speculative inserts 进行解码期间,我们依赖确认记录或下一个更改记录来清理 toast hash。但这可能导致多个问题(a)如果事务中既没有确认记录,也没有其他记录在 toast 插入之后,则会出现内存泄漏;(b)如果下一个操作不是对同一表的插入/更新,则会出现错误和断言失败。修复方法是开始排队 spec abort 更改,并在处理 spec abort 时清理 toast hash 和更改记录。目前,我们排队了 toast 和主表的 spec aborts,尽管我们在处理主表的 spec abort 记录时进行了清理。将来,如果我们有办法区分 toast 表和主表的 spec abort 记录,我们可以避免为 toast 表的 spec aborts 排队更改。报告者:Ashutosh Bapat 作者:Dilip Kumar 审阅者:Amit Kapila 回溯到:9.6,引入该功能的地方 讨论:https://postgr.es/m/CAExHW5sPKF-Oovx_qZe4p5oM6Dvof7_P+XgsNAViug15Fm99jA@mail.gmail.com https://git.postgresql.org/pg/commitdiff/4daa140a2f50e9a160bc180c3997ee13c7aabf9e
记录同步逻辑复制中的一些注意事项。在同步逻辑设置中,锁定 [user] 目录表可能导致死锁。这是因为事务的逻辑解码可以锁定目录表来访问它们,因此对这些表进行排他锁定可能会导致死锁。为避免此问题,用户必须避免对目录表进行排他锁定。作者:Takamichi Osumi 审阅者:Vignesh C, Amit Kapila 回溯到:9.6 讨论:https://postgresql.ac.cn/message-id/20210222222847.tpnb6eg3yiykzpky%40alap3.anarazel.de https://git.postgresql.org/pg/commitdiff/3cb828dbe26087e7754f49f3cfe3ed036d5af439
在 RelationGetIdentityKeyBitmap 中处理无 replica identity 索引的情况。提交 e7eea52b2d 引入了一个新函数 RelationGetIdentityKeyBitmap,但它没有处理 relation 上没有 replica identity 索引的情况。作者:Mark Dilger 审阅者:Takamichi Osumi, Amit Kapila 讨论:https://postgresql.ac.cn/message-id/4C99A862-69C8-431F-960A-81B1151F1B89@enterprisedb.com https://git.postgresql.org/pg/commitdiff/2731ce1bd550d08f3fdd7bcb1497af4b95170976
文档:更新同步逻辑复制中的注意事项。报告者:Simon Riggs 作者:Takamichi Osumi 审阅者:Amit Kapila 回溯到:9.6 讨论:https://postgresql.ac.cn/message-id/20210222222847.tpnb6eg3yiykzpky@alap3.anarazel.de https://git.postgresql.org/pg/commitdiff/c66fb78ebb4f473bb4fd8773de3cda9339e14f81
文档:更新逻辑复制消息格式。提交 9de77b5453 和 ac4645c015 未能更新文档中的逻辑复制消息格式部分。作者:Brar Piening 审阅者:Amit Kapila 讨论:https://postgresql.ac.cn/message-id/cc70956c-e578-e54f-49e6-b5d68c89576f@gmx.de https://git.postgresql.org/pg/commitdiff/f08722cf83ab1fabee948a4e5754bf6236ad700b
文档:修复 logicaldecoding.sgml 中的小格式问题。作者:Guillaume Lelarge 讨论:https://postgresql.ac.cn/message-id/CAECtzeXf3_oZoU6mgFCOy5+pDZ5n4XtH0Da4a5n_KacraVWiHQ@mail.gmail.com https://git.postgresql.org/pg/commitdiff/847c62ee76cbc237b3a204ca94b1b12811d698e3
Alexander Korotkov 提交了
支持 unnest(multirange) 和将 multirange 转换为 range 数组。已发现 multiranges 无法分解为单个 range。订阅和正确的展开对象表示需要大量工作,并且对于 v14 来说太晚了。此提交提供了 unnest(multirange) 的实现,并将 multirange 转换为 range 数组,这非常简单。unnest(multirange) 被定义为一个多态过程。由于我们没有多态的 rangearray 类型可以使用,因此 cast 底层过程的目录描述为每个 multirange 类型重复。Catversion 已更新。报告者:Jonathan S. Katz 讨论:https://postgr.es/m/flat/60258efe-bd7e-4886-82e1-196e0cac5433%40postgresql.org 作者:Alexander Korotkov 审阅者:Justin Pryzby, Jonathan S. Katz, Zhihong Yu https://git.postgresql.org/pg/commitdiff/29854ee8d1ca4a46adb7e84deb17e6fb18e531cc
在文档章节标题中添加缺失的类型名称“multirange”。讨论:https://postgr.es/m/CAFj8pRDioOxiJgmgw9TqQqZ3CxnJC4P5B2Oospf2eMgAjJuewA%40mail.gmail.com 作者:Pavel Stehule, Alexander Korotkov 审阅者:Justin Pryzby, Tom Lane https://git.postgresql.org/pg/commitdiff/ad2da246c69dd5ec55764d4b6066f3b0c0d24ca2
由于 buildfarm 失败,撤销 29854ee8d1。报告者:Tom Lane 讨论:https://postgr.es/m/CAPpHfdvcnw3x7jdV3r52p4%3D5S4WUxBCzcQKB3JukQHoicv1LSQ%40mail.gmail.com https://git.postgresql.org/pg/commitdiff/817bb0a7d1e02df4643d37304aed8574cf43f629
Peter Geoghegan 提交
移除 VACUUM 状态中不必要的字段。bug 修复提交 5fc89376 有效地将 vacuumlazy.c 的全局状态结构中的 lock_waiter_detected 字段变成了 lazy_truncate_heap() 私有的状态。通过将结构字段替换为局部变量来完成此操作。 https://git.postgresql.org/pg/commitdiff/958cfbcf2dd338e3179c2d8a35f48bde020eba60
支持通过 VACUUM 禁用索引绕过。将 INDEX_CLEANUP VACUUM 参数(及相应的 reloption)通用化:将其变为三元布尔参数。它现在暴露第三个选项“auto”。“auto”选项(现在是默认值)启用了提交 1e55e7d1 添加的“绕过索引真空”优化。“VACUUM (INDEX_CLEANUP TRUE)”被重新定义为再次让 VACUUM 执行任何必需的索引真空,而不管在目标堆关系的第一扫描中遇到的死元组数量有多少(除非为零)。这为用户提供了一种选择退出“绕过索引真空”优化的方法,以防出于任何原因证明有必要。它也预计会被 PostgreSQL 开发人员不时用作测试选项。“VACUUM (INDEX_CLEANUP FALSE)”的作用与以前一样:它强制禁用索引真空和索引清理。预计它在 PostgreSQL 中不会被大量使用。
提交 1e55e7d1 添加的故障保护机制以更简单的方式解决了相同的问题。现在可以将 INDEX_CLEANUP 视为测试和兼容性选项。作者:Peter Geoghegan pg@bowt.ie 审阅者:Masahiko Sawada sawada.mshk@gmail.com 审阅者:Justin Pryzby pryzby@telsasoft.com 讨论:https://postgr.es/m/CAH2-WznrBoCST4_Gxh_G9hA8NzGUbeBGnOUC8FcXcrhqsv6OHQ@mail.gmail.com https://git.postgresql.org/pg/commitdiff/3499df0dee8c4ea51d264a674df5b5e31991319a
移除过于激进的 VACUUM 故障保护断言。故障保护可能在索引处理已被禁用时触发。当 VACUUM 的 INDEX_CLEANUP 参数为“off”且故障保护恰好触发时,可能会发生这种情况。移除假设索引处理直接与故障保护相关的断言。提交 c242baa4 中的疏忽,它使得故障保护可能在尚未调用 lazy_vacuum_all_indexes() 的两阶段策略 VACUUM 中触发。 https://git.postgresql.org/pg/commitdiff/e8f201ab82be234b2f103234cf9f262f9afeaeba
为“git blame”添加可忽略的 pgindent 提交列表。添加一个 .git-blame-ignore-revs 文件,其中包含 pgindent、pgperlyidy 和 reformat-dat-files 提交哈希列表。配置 git 使用忽略文件的 Postgres黑客将获得 git-blame 输出,这些输出将避免将行更改归因于被忽略的 indent 提交。这使得 git-blame 输出在实践中更易于使用。作者:Peter Geoghegan pg@bowt.ie 审阅者:Tom Lane tgl@sss.pgh.pa.us 讨论:https://postgr.es/m/CAH2-Wz=cVh3GHTP6SdLU-Gnmt2zRdF8vZkcrFdSzXQ=WhbWm9Q@mail.gmail.com https://git.postgresql.org/pg/commitdiff/8e638845ff6bb255ad1dea15831089a234535391
Andrew Dunstan 推送
进一步优化 stuck_on_old_timeline 恢复测试。TestLib::perl2host 可以接受文件参数和目录参数,因此该代码变得更加简单。还添加了关于为什么我们使用正斜杠以及为什么设置 PERL_BADLANG=0 的注释。讨论:https://postgr.es/m/e9947bcd-20ee-027c-f0fe-01f736b7e345@dunslane.net https://git.postgresql.org/pg/commitdiff/54a5ed22016940d7ad5060ed62d23473924756a1
不要为除普通表以外的任何表设置快速默认值。Release 11 中添加的快速默认值代码忽略了检查正在添加快速默认值的表是否为普通表。因此,可以将其添加到外表,这会按预期引发错误。在这里我们执行此检查。此外,在向后移植的版本中,由于其中一些可能已经逃逸到生产环境中,因此如果我们遇到非普通表属性的缺失值,我们会忽略它。修复 bug #17056。回溯到 Release 11,审阅者:Andres Freund, Álvaro Herrera 和 Tom Lane https://git.postgresql.org/pg/commitdiff/0a4efdc7ebf2584257b166c87e82797eb92815b5
Heikki Linnakangas 提交
修复 WAL 文件搜索位置的过时注释。自提交 c24dcd0cfd 以来,我们一直使用 pg_pread() 读取 WAL 文件,这不会改变搜索位置(除非回退到 src/port/pread.c 中的实现)。相应地更新注释。回溯到:12,从那时开始使用 pg_pread() https://git.postgresql.org/pg/commitdiff/d0303bc8d2670d11c9df9220aa08a2c33529e100
整理 GetMultiXactIdMembers() 在错误时的行为。其中一个错误路径使 `*members` 未初始化。这不是一个活跃的 bug,因为大多数调用者在函数返回 -1 时不查看 `*members`,但让我们保持整洁。一个调用者 heap_lock_tuple() 会执行 "if (members != NULL) pfree(members)",但据我所知,它从未传递无效的 'multi' 值,因此不应该达到该错误情况。调用者在期望上也有些不一致。heap_lock_tuple() 在 members 不为 NULL 时 pfree 'members' 数组,其他调用者在 "nmembers >= 0" 时 pfree,还有一些在 "nmembers > 0" 时 pfree。这也不是活跃的 bug,因为该函数不应返回 0,但在此处添加一个 Assert 以使其更清晰。我现在将调用者单独处理。我还移动了设置 `*nmembers` 的行。以前也没有错,但我喜欢将其放在 return 语句旁边,以清楚地表明它在返回时始终被设置。还删除了 ereport(ERROR) 后一个无法到达的 return 语句,以求简洁并与紧随其后的类似 if 块保持一致。作者:Greg Nancarrow,并由我进行了附加更改。回溯到:9.6,所有支持的版本。 https://git.postgresql.org/pg/commitdiff/d24c5658a80c8f5037e9e1948de311d3f3350f12
防止读取 relmapper 文件时出现竞争条件。与这里的注释相反,POSIX 不保证 read() 的原子性,如果另一个进程并发调用 write()。至少 Linux 是这样。向 load_relmap_file() 添加锁定以避免竞争条件。修复 bug #17064。感谢 Alexander Lakhin 的报告和测试用例。回溯到:9.6,所有支持的版本。讨论:https://postgresql.ac.cn/message-id/17064-bb0d7904ef72add3@postgresql.org https://git.postgresql.org/pg/commitdiff/b6d8d2073f228d9f7198f1f9826d8f6ab643c219
再次修复 relmapper 竞争条件。在之前的提交中,我忽略了 relmap_redo() 也未获取 RelationMappingLock。感谢 Thomas Munro 指出这一点。回溯到:9.6,与之前的提交相同。讨论:https://postgresql.ac.cn/message-id/CA%2BhUKGLev%3DPpOSaL3WRZgOvgk217et%2BbxeJcRr4eR-NttP1F6Q%40mail.gmail.com https://git.postgresql.org/pg/commitdiff/9b8ed0f52bffceaccf6fa650ffe482e7da20fbf2
Tomáš Vondra 提交了
Fujii Masao 提交
Peter Eisentraut 提交
amcheck:修复代码注释。代码注释声称 verify_heapam() 正在检查其操作的 relation 的权限,但实际上并没有这样做。也许早期版本的补丁确实这样做过,但现在访问受到函数权限的监管。删除错误的注释。 https://git.postgresql.org/pg/commitdiff/97b7134186490b36e01efc9d2feaf7038c666457
翻译更新。源 Git URL:git://git.postgresql.org/git/pgtranslation/messages.git 源 Git 哈希:70796ae860c444c764bb591c885f22cac1c168ec https://git.postgresql.org/pg/commitdiff/a7bb0ce58f56ee8907c3f49c52d99f502536c796
在 gistinitpage 中移除冗余变量 pageSize。在 gistinitpage 中,pageSize 变量看起来是多余的,可以直接传递 BLCKSZ。这将与其对等项 BloomInitPage、brin_page_init 和 SpGistInitPage 保持一致。作者:Bharath Rupireddy bharath.rupireddy@enterprisedb.com 讨论:https://postgresql.ac.cn/message-id/flat/CALj2ACWj=V1k5591eeZK2sOg2FYuBUp6azFO8tMkBtGfXf8PMQ@mail.gmail.com https://git.postgresql.org/pg/commitdiff/a60c4c5c1a99746485123ae93fbd3e58c78e5d62
文档:为保持一致性,更改 reloption 数据类型拼写。在上下文中,使用“floating point”而不是“float4”。作者:Shinya11.Kato@nttdata.com 讨论:https://postgresql.ac.cn/message-id/flat/TYAPR01MB28965989AF84B57FC351B97BC40F9@TYAPR01MB2896.jpnprd01.prod.outlook.com https://git.postgresql.org/pg/commitdiff/63e6d05bf34da58eef7cd1ed461b9c8315177a38
修复 ALTER SUBSCRIPTION DROP PUBLICATION 代码中的问题。ALTER SUBSCRIPTION DROP PUBLICATION 实际上不支持 copy_data 选项,因此将其从 tab completion 中移除。此外,重新措辞了当订阅中的所有 publication 都被指定删除时抛出的错误消息。另外,还进行了一些文档和美容方面的调整。作者:Vignesh C vignesh21@gmail.com 审阅者:Bharath Rupireddy bharath.rupireddy@enterprisedb.com 审阅者:Japin Li japinli@hotmail.com 讨论:https://postgresql.ac.cn/message-id/flat/CALDaNm21RwsDzs4xj14ApteAF7auyyomHNnp+NEL-sH8m-jMvQ@mail.gmail.com https://git.postgresql.org/pg/commitdiff/e59d428f34297cd0eb67e3b4e4b8c8bc58504921
将选项列表恢复为字母顺序。 https://git.postgresql.org/pg/commitdiff/3af10943ce21450e299b3915b9cad47cd90369e9
错误消息重构。将一些不可翻译的内容从消息中移除,并替换为格式占位符,以减少可翻译字符串的数量并减少翻译错误。 https://git.postgresql.org/pg/commitdiff/c302a6139072fed9410204fa9e751d95930e05ff
David Rowley 提交
Andres Freund 提交
Joe Conway 已推送
Thomas Munro 推送
Nitin Jadhav 提交了一份补丁的另一个修订版,该补丁旨在提供一种跟踪启动过程中操作进度的途径。
Yuzuko Hosoya 提交了一个补丁,通过新的 GUCs autovacuum_analyze_attach_partition、autovacuum_analyze_detach_partition 和 autovacuum_analyze_drop_partition 来控制是否对分区操作运行 autoanalyze。
Peter Eisentraut 提交了一个补丁,向 DECLARE_INDEX 添加了索引 OID 宏参数。不再显式定义 AmOidIndexId 等符号,而是将其作为 DECLARE_INDEX() 的参数,并让 genbki.pl 从 CATALOG() 声明中生成表 OID 符号的方式。
Filip Gospodinov 提交了一个补丁,旨在修复一个 bug,该 bug 表现为 shipped 的 pkg-config 文件对于静态链接 libpq 是损坏的,因为缺少 libpgcommon 和 libpgport。修复添加了这两个缺失的私有依赖项。
Heikki Linnakangas 提交了补丁的另一个修订版,将 xlog.c 分割为 xlog.c 和 xlogrecovery.c。这会将与执行 WAL 恢复相关的函数移到新的 xlogrecovery.c 源文件中,使 xlog.c 负责维护 WAL 缓冲区,协调启动以及从恢复切换到正常操作,以及其他一直存在于 xlog.c 中的杂项工作。
Greg Nancarrow 提交了补丁的两个修订版,以移除 BIGINT 序列 MINVALUE/MAXVALUE 值上无用的 int64 范围检查。
Peter Geoghegan 提交了补丁的三个修订版,为“git blame”添加了可忽略的 pgindent 提交列表。
David Rowley 提交了补丁的另一个修订版,添加了一种新的哈希表类型,该类型具有稳定的指针,并利用它来加速 SMgr。
Peter Smith 和 Ajin Cherian 交换了补丁,为内置逻辑复制添加了对准备事务的支持选项。
Daniel Gustafsson 和 Michaël Paquier 交换了补丁,记录了一些 SSL/TLS 相关的缩略语,并将 SSL 的用法替换为 SSL/TLS,后者更准确和最新。
Simon Riggs 提交了补丁的三个修订版,为哈希索引添加了一个文档章节。
Atsushi Torikoshi 提交了另一个修订版的补丁,添加了一个函数,用于记录具有指定进程 ID 的后端当前运行的查询的完整查询字符串及其计划。
Li Japin 提交了一个补丁,对 RelationGetIdentityKeyBitmap 中的代码进行了一些小的美化。
Bertrand Drouvot 提交了补丁的另一个修订版,以在 standby 上启用最小逻辑解码。
Alexander Pyhalov 提交了补丁的另一个修订版,允许将 CASE 表达式推送到外部服务器。
Peter Eisentraut 提交了一个补丁,使 Unicode makefile 更具并行安全性,使 UCS_to_most.pl 按排序顺序处理编码,移除生成 C 输出中的一些空白以使其与项目其余部分的编码风格保持一致,简化代码生成代码,并修复生成输出中的缩进。
Maxim Orlov 提交了补丁的另一个修订版,以修复并行 worker 失败的断言和 core dump。
Vigneshwaran C 提交了两个修订版的补丁,为 PUBLICATION 添加了模式级别支持。
Mike Fiedler 提交了一个补丁,用于在 post-copy 输出中发出命名空间。
Emre Hasegeli 提交了一个补丁,用于将操作符类与索引访问方法解耦。
Jacob Champion 提交了补丁的两个修订版,将 SASL 框架与 SCRAM 代码解耦,因为它们可能单独有用。
Yugo Nagata 提交了补丁的另一个修订版,通过为客户端变量使用 Variables 结构来解决一些 Pgbench 错误。当在序列化/死锁失败后重复事务时重置客户端变量时,这一点最为重要。不要一个一个地分配 Variable 结构。相反,每次溢出时添加一个固定的余量。还包括了一个修复 pgbench 错误和序列化/死锁重试的补丁。
Jacob Champion, Michaël Paquier 和 Tom Lane 交换了补丁,使得 libpq 可以使用 jsonapi。
Gurjeet Singh 提交了一个补丁,用于为顶级事务 ID 添加自动通知。
Haiying Tang 提交了补丁的另一个修订版,以支持 psql 中对大写输入的查询结果进行制表符补全。
Peter Eisentraut 提交了一个补丁,通过缩短主要错误消息并更直接地说明尝试的内容不可能,从而使关于 relkind 不匹配的错误消息更有用。
Daniel Gustafsson 提交了补丁的另一个修订版,以支持 NSS 作为 libpq 的 TLS 后端。
Andrey V. Lepikhov 提交了一个补丁,告知 genericcostestimate() 的索引选择性值,在唯一单行 btree 索引的情况下,只能返回一个行。
Tomáš Vondra 提交了补丁的另一个修订版,以使逻辑解码中能够复制序列。
Ranier Vilela 提交了一个补丁,用于修复 src/backend/commands/subscriptioncmds.c 中的未初始化 copy_data 变量。
Peter Eisentraut 提交了一个补丁,使关于 relkind 不匹配的错误消息更具信息性,通过缩短主要错误消息并更直接地说明尝试的内容不可能。
Peter Eisentraut 提交了一个补丁,为 UNBOUNDED 语法歧义添加测试。
Simon Riggs 提交了一个补丁,使 pgbench 使用 COPY FREEZE。
Justin Pryzby 提交了一个补丁,用于避免双括号,并修复 tablefunc.c 中的注释以引用正确的注释。
Craig Ringer 提交了一个补丁,向 Windows 尚未公开的一些功能添加了更多的 PGDLLIMPORT。
Amit Kapila 提交了一个补丁,允许在 speculative aborts 后流式传输更改。
Hayato Kuroda 提交了一个补丁,使 ECPG 的新 DECLARE STATEMENT 适用于 DEALLOCATE 和 DESCRIBE。
Bruce Momjian 提交了补丁的另一个修订版,实现了集群文件加密。
Jie Zhang 提交了一个补丁,使生成的示例 postgresql.conf 与 `shared_buffers` 的默认值保持一致。
Richard Guo 提交了一个补丁,用于在反连接中将每个 rel 作为外连接和内连接使用。
Tom Lane 提交了一个补丁,以防止在 libpq 内部调用 abort() 或 exit()。
Alexander Korotkov 提交了一个补丁,用于修复 multirange 操作符的 catalog 定义中的一些小不一致之处。
Julien Rouhaud 提交了补丁的另一个修订版,在生成 const 节点时保留 param 位置。
Andrey Borodin 提交了补丁的另一个修订版,重新组织了 pglz 压缩代码。
Julien Rouhaud 和 Ranier Vilela 交换了补丁,添加了一个 pg_get_query_def() 来反解析和打印重写的 SQL 语句。
Tomáš Vondra 提交了一个 PoC 补丁,用于使用运行时采样进行基数估计。