PostgreSQL 14 Beta 2 发布。 测试!
第 12 届古巴 PostgreSQL 会议 (PostgresqlCUBA, @PgCuba) 将于 2021 年 11 月 18-19 日在哈瓦那自由酒店举行。 此活动是 TECNOGET 会议的一部分,我们将举办一个专门讨论与 PostgreSQL 相关主题的会场。 如需了解更多详情,请联系 cu AT postgresql DOT org。
JDBC 42.2.22 已发布
Pgpool-II 的管理工具 pgpoolAdmin 4.2.0 已发布。
用于观察和排查 PostgreSQL 故障的命令行管理工具 pgCenter 0.9.0 已发布
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 版本在 tm_isdst 与当前时区不一致时,导致 mktime() 失败;特别是当区域为 UTC 时,tm_isdst = 1 时会失败。(这似乎与 POSIX 强制处理 struct tm 的其他字段的“不正确”值的方式极不一致,所以如果你问我,这是一个 bug,但我敢打赌他们会说这是故意的。)当 pg_restore'ing 在不同时区创建的存档时,已观察到这会导致表面上的问题。为了解决这个问题,使用存档中的字段值执行 mktime(),如果失败,则使用 tm_isdst = -1 再次尝试。这将产生与原始区域的 UTC 偏移量差异的结果,但之前也是如此。这不是很关键,因为我们不会对结果做任何事情,除了可能打印它。(总有一天,我们应该刷新所有这些逻辑,并在存档中记录标准格式的时间戳。但这不适用于向后移植的错误修复。)此外,通过让 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 中删除,它删除了相应的规范文件。在摆弄隔离测试器时注意到。https://git.postgresql.org/pg/commitdiff/ffbe9dec13599fa786ea6567df1c6a3f3ee3c673
更新变体预期结果文件。这应该在 d2d8a229b 中更新,但被忽略了。根据添加它的 31a877f18,此文件旨在显示在 default_transaction_isolation = serializable 下得到的结果。我们在其他隔离测试中已经很大程度上失去了这个目标,但是只要我们有这个文件,它就应该是正确的。在摆弄隔离测试器时注意到。https://git.postgresql.org/pg/commitdiff/0a1e80c5c4f094087257fc4284a87e0bc7bca591
删除另一个孤立的预期结果文件。添加 aborted-keyrevoke_2.out 时(在提交 0ac5ad513 中)显然需要它来处理可序列化事务模式的情况。但是,可序列化模式下的输出实际上与常规 aborted-keyrevoke.out 文件匹配,并且 AFAICT 长期以来一直是这样。没有必要继续拖着这个变体。https://git.postgresql.org/pg/commitdiff/f6352a0d4e437ac8bc266f77df22d064592056c9
更新另一个变体预期结果文件。这应该在 533e9c6b0 中更新,但被忽略了。考虑到没有投诉,我不会费心向后移植。https://git.postgresql.org/pg/commitdiff/d3c878499c9d639ff06e0664d06b8c731e30c2fc
改进一些与复制相关的代码中的 SQLSTATE 报告。我最初的目标是当 walrcv_connect() 失败时报告 ERRCODE_CONNECTION_FAILURE,但是当我环顾四周时,我意识到编写此代码的人认为错误代码是纯粹可选的。这不是我对我们项目政策的理解。因此,请确保在每个 ereport 中提供一个错误代码,该错误代码(a)是 ERROR 或更高级别,并且(b)不是可以说是内部逻辑错误。此外,修复一些非常可疑的现有错误代码分配。虽然这不符合政策,但它在很大程度上也只是表面上的,因为很少有这些情况会报告给应用程序。因此,我觉得没有必要向后移植。讨论: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 中,似乎谨慎地采用更原则性的修复,以消除将来出现其他类似 bug 的可能性。因此,让我们将执行 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
修复带有重复 polroles 条目的 DROP OWNED BY 的错误行为。通常,pg_policy.polroles 数组不会多次列出同一个角色;但是 CREATE POLICY 并不能阻止这种情况。如果我们对多次列出的角色执行 DROP OWNED BY,RemoveRoleFromObjectPolicy 要么会遇到断言失败,要么会遇到自更新元组错误。重写它以正确处理重复条目,并添加 CommandCounterIncrement 调用以防止其他问题。根据讨论,此处应该进行其他清理,但这似乎是最低限度的基本修复。根据 Alexander Lakhin 的 bug #17062。它一直都是坏的,因此向后移植到所有支持的分支。讨论:https://postgr.es/m/17062-11f471ae3199ca23@postgresql.org https://git.postgresql.org/pg/commitdiff/d21fca084356946664bfce19d66d2df2bb873cbd
为 v14 中添加的 libpq 功能提供功能测试宏。我们收到一个请求,要求提供一种在编译时测试新管道功能是否可用的方法。更笼统地说,似乎提供一种通过 #ifdef 测试所有新 libpq API 功能的方法是个好主意。人们一直在为此使用 pg_config.h 中的版本;但是,在服务器版本与 libpq 版本不同的日益普遍的情况下,它更有可能表示服务器版本而不是 libpq 版本。如果 libpq-fe.h 本身是关于它提供哪些功能的真实来源,那就更安全了。因此,制定一项政策,即从 v14 开始,当我们在那里添加新的 API 时,我们将向 libpq-fe.h 添加一个合适的功能存在宏。(对追溯应用此策略似乎没有太大意义,但对于 v14 来说还为时不晚。)Tom Lane 和 Alvaro Herrera,根据 Boris Kolpackov 的建议。讨论:https://postgr.es/m/boris.20210617102439@codesynthesis.com https://git.postgresql.org/pg/commitdiff/6991e774e0304f5ef488cf1ae4fa79578b6ae3d5
稳定由提交 f61db909d 添加的测试用例。构建场成员 ayu 和 tern 有时对此查询显示了与预期不同的计划。我之前一直无法重现这种情况,但今天我终于意识到发生了什么。如果存在并发的打开事务(可能是构建场中的自动清理运行,但这也可以手动安排),则由上面几行的 DELETE 删除的行的索引条目不会立即被清除,导致规划器对 ft2.c1 的极值估计发生变化,从而将“c1 > 1100”的行数估计移动到足以将连接计划从嵌套循环更改为哈希。为了修复这个问题,将查询条件更改为“c1 > 1000”,无论是否存在并发的打开事务,都会优先选择哈希计划。由于此 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
也为简单表达式恢复门户级别的快照。提交 84f5c2908 等遗漏了涵盖 plpgsql 的“简单表达式”代码路径的需求。如果我们在 COMMIT/ROLLBACK 之后执行的第一个操作是这些操作之一,而不是完整的 SPI 命令,我们必须显式执行 EnsurePortalSnapshotExists() 以确保我们有一个外部快照。请注意,仅在表达式执行期间推送快照是不够的:返回的内容可能会被 toaste 化,因此我们最好有一个快照来保护它。演示这一事实的测试用例通过将 SQL 函数标记为不可变来作弊,即使它从表中获取数据。但这并不是用户没有做过的事情。根据 Jim Nasby 的报告。像之前的修复一样,向后移植到 v11。讨论:https://postgr.es/m/378885e4-f85f-fc28-6c91-c4d1c080bf26@amazon.com https://git.postgresql.org/pg/commitdiff/d102aafb6259a6a412803d4b1d8c4f00aa17f67e
使用注释来减少隔离测试结果的不稳定性。我们长期以来一直与不完全稳定的隔离测试结果作斗争。一些测试脚本插入长时间延迟以尝试强制获得稳定的结果,这并不是很理想;但是其他不稳定的失败模式仍然存在,导致无法重复的构建场失败。我花了很多时间试图通过改进服务器端支持代码来解决这个问题,但没有取得多大成功:这种方式根本无法处理来自不同服务器进程的消息到达的偶然顺序所导致的差异。但是,我们可以通过注释测试脚本本身来改进客户端的问题,以显示可能以不同顺序发生的事件的所需报告顺序。此补丁添加了三种类型的注释来处理 (a) 在隔离测试程序看到它们正在等待之前,可能完成或可能未完成等待的测试步骤;(b) 可以合法地按任何顺序完成的不同会话中的测试步骤;以及 (c) 可能在另一个会话中的步骤完成之前或之后到达的 NOTIFY 消息。我们稍后可能需要更多注释类型,但这似乎足以处理我们在构建场中看到的不稳定性。它还使我们能够摆脱以前使用的所有长时间延迟,从而将隔离测试的运行时间缩短了一分钟以上。向后移植到所有支持的分支,因为构建场的不稳定性会影响所有分支,并且似乎希望在所有分支中保持隔离测试程序的功能相同,以简化将来可能的测试向后移植。讨论:https://postgr.es/m/327948.1623725828@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/741d7f1047fe52da7ced6fa9cea661ce9320c8d4
改进隔离测试中查询结果的显示。以前,隔离测试程序使用一些显然没有花太多精力构建的临时代码来显示 SQL 查询结果。长度超过 14 个字符的字段值不会与下一个字段分隔,并且通常也会导致列未对齐。此外,查询结果与后续隔离测试程序输出之间没有视觉分隔。这使得测试结果文件混乱且难以阅读。为了改进这一点,让我们使用 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() 的一些手册页显示了依赖 gss_buffer_desc.length 字段而不是期望 null 结尾的示例。此外,我们现在有一份报告称,在某些实现中,clang 的地址消毒器认为指定长度之后的字节是未定义的。因此,更改代码以依赖长度字段。这很可能是表面上的更改,而不是修复任何真正的错误,但很难确定,因此向后移植到所有支持的分支。在此期间,还向后移植了 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
文档:修复语法摘要中关于 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
允许将非引号标识符用作隔离测试会话/步骤名称。隔离测试程序一直坚持会话和步骤名称必须用双引号括起来,这没有任何明显的原因。这是相当乏味的,并且对测试可读性几乎没有帮助,特别是因为人们实际选择的名称几乎总是看起来像正常的标识符。因此,让我们调整词法分析器,不仅允许双引号字符串,还允许类似于 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/5843659d 引入更新后,自动清理命中“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 条目关联的关系。它在 rel 上进行的错误检查如果有什么弊端的话,那就是适得其反(例如,如果我们不想允许在系统目录上安装策略,那么这里不是阻止它的地方)。特别是,坚持所有权检查似乎是完全错误的。这会产生迫使人们使用超级用户进行 DROP OWNED BY 的净效应,这肯定不是我们想要的效果。此外,重新构建策略表达式的依赖关系也没有任何意义,因为这些表达式没有被更改。最后,锁定表似乎也适得其反;它无助于防止竞争条件,因为我们在获得锁后未能重新读取 pg_policy 行。这意味着并发 DDL 可能会导致“元组并发更新/删除”错误;这与此代码产生的行为相同,但开销更少。根据对 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 的性能产生影响。对于包含非 NULL 值的更多可 TOAST 列,这一点更明显。可以进行改进以使这些额外的检查开销更低,但这在现阶段对于 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 子命令组合中出现。此代码路径中的查找逻辑已更改为获得类似于任何其他 SQL 可调用函数的行为,通过利用 2a10fdc 忽略未找到的对象。未更改 back-branches,因为它们需要此提交,该提交对于稳定分支来说过于侵入性。在此基础上,添加测试用例以使用标识列来练习事件触发器,并针对关系的事件 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
文档:将标记 <productname> 更一致地应用于 OpenSSL。作者:Daniel Gustafsson 讨论:https://postgr.es/m/CE12DD5C-4BB3-4166-BC9A-39779568734C@yesql.se https://git.postgresql.org/pg/commitdiff/f80979f659d39e238e95444e6752142799428078
修复 pgbench 的 TAP 测试中日志的模式匹配逻辑。检查每个线程日志格式的逻辑使用 grep() 和直接的 "$re",这将导致测试将所有日志都视为匹配,而不关心它们的格式。使用 "/$re/" 使 grep() 执行正则表达式测试,这正是我们想要的。在此基础上,改进一些测试,使其对预期的模式更加挑剔,并添加更多注释来描述测试。在深入研究一个单独的补丁时发现的问题。作者:Fabien Coelho, Michael Paquier 讨论:https://postgr.es/m/YNPsPAUoVDCpPOGk@paquier.xyz Backpatch-through: 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 中的一个错误,或者测试中使用的正则表达式模式对于此构建场成员的环境来说过于严格。这会添加更多调试信息来显示与预期模式不匹配的日志条目,以帮助找出正在发生的事情。无论如何,从长远来看,这似乎是一个不错的补充,因为这可能不是该领域中唯一的问题。讨论:https://postgr.es/m/YNUad2HvgW+6eXyo@paquier.xyz https://git.postgresql.org/pg/commitdiff/87b2124dfa0782a697ea7b90aff15a6f6117a720
文档:为 MITM 和 SNI 添加首字母缩写词。这会将 MITM 和 SNI 添加为首字母缩写词,因为文档已经使用 <acronym> 标记了它们。在此基础上,请确保始终如一地使用破折号拼写 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(),修复了构建场成员 fairywren 报告的问题,该成员的 perl 安装保留了 CRLF 字符,导致日志的匹配模式失败。- 删除 eval 块,这实际上是不必要的。在修复 c13585fe 的另一个问题后,这组问题浮出水面,并且这是错误的,因为此代码已被引入。报告者:Andrew Dunstan 和构建场成员 fairywren 作者:Michael Paquier 审阅者:Andrew Dunstan 讨论:https://postgr.es/m/0f49303e-7784-b3ee-200b-cbf67be2eb9e@dunslane.net Backpatch-through: 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 Backpatch-through: 11 https://git.postgresql.org/pg/commitdiff/704e1dbd9aa29a0b46c356f1803ad55cbdef2c20
删除 MSVC 的 Solution.pm 中不存在的变量引用。自 8f4fb4c6 以来,MSVC 构建中的版本字符串从 pg_config.h 中的 PACKAGE_VERSION 中获取,但错误消息引用了一个之前存在的变量。除非有人将构建的版本号搞得一团糟,否则这没有任何后果。作者:Anton Voloshin 讨论:https://postgr.es/m/af79ee1b-9962-b299-98e1-f90a289e19e6@postgrespro.ru Backpatch-through: 13 https://git.postgresql.org/pg/commitdiff/d5a2c413fcdd187dc16c4fab16610af7d4849cc1
Bruce Momjian 推送
文档:添加关于数组函数引用的 PG 14 relnote 项目。引用某些内置数组函数的用户定义对象需要在 PG 14 中重新创建。报告者:Justin Pryzby 讨论:https://postgr.es/m/20210608225618.GR16435@telsasoft.com https://git.postgresql.org/pg/commitdiff/25dfb5a831a1b8a83a8a68453b4bbe38a5ef737e
文档:PG 14 relnote 更新。报告者:Justin Pryzby 讨论:https://postgr.es/m/20210612034551.GU16435@telsasoft.com https://git.postgresql.org/pg/commitdiff/a2559d4093725592a3fd5da8a4c7ac7c883115a0
文档:PG 14 relnotes 修复。与逻辑复制属性和 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 relnotes 中添加关于 +4GB windows 文件处理的说明。报告者:Masahiko Sawada 讨论:https://postgr.es/m/CAD21AoCTHyouoGv-xt1qNjjvPbGMErLi0AJncByTvr66Nq7j8g@mail.gmail.com https://git.postgresql.org/pg/commitdiff/90855908b751d40f67352fa0252e0fcdaa7e317b
文档:调整 PG 14 relnotes 以保持最新。https://git.postgresql.org/pg/commitdiff/69a58bfe4ab05567a8fab8bdce7f3095ed06b99c
Álvaro Herrera 推送
修复 1632ea43682f 中的逻辑错误。我忽略了一个条件在逻辑上是反转的。修复比简单地否定条件稍微复杂一些,以使代码更易于阅读。同时修复同一提交留下的一些过时的注释。作者: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 测试中没有先例,我对相关手册页的阅读表明它很可能在 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的槽添加测试用例,第 2 次尝试。在本次提交之前,用于在预留 WAL 大小增长过大时向正在运行的 walsender 发出信号的代码完全未被覆盖;这增加了对该情况的覆盖。此测试涉及向 walsender 和 walreceiver 发送 SIGSTOP 信号,然后推进足够的 WAL 以触发检查点,然后发送 SIGCONT 信号。Perl 测试中没有使用 STOP 信号的先例,而且我对相关手册页的理解表明,它很可能在 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()。它无法等待已离开进程数组的后端。能够容忍此限制的用户可以轮询 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 推送了
修复推测性中止的解码。在推测性插入的解码过程中,我们依赖于确认记录或下一个更改记录来清理 toast 哈希。但这可能导致多个问题:(a)如果在事务中对于推测性插入,在 toast 插入之后既没有确认记录也没有其他记录,则会导致内存泄漏;(b)如果下一个操作不是在同一个表上进行插入/更新,则会导致错误和断言失败。修复方法是开始对 spec 中止更改进行排队,并在其处理期间清理 toast 哈希和更改记录。目前,我们正在为 toast 和主表排队 spec 中止,即使我们在处理主表的 spec 中止记录时执行清理。稍后,如果我们有一种方法来区分 toast 的 spec 中止记录和主表的 spec 中止记录,我们可以避免为 toast 表的 spec 中止排队更改。报告者: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
记录同步逻辑复制中的一些注意事项。在同步逻辑设置中,锁定 [用户] 目录表可能会导致死锁。这是因为事务的逻辑解码可以锁定目录表以访问它们,因此在事务中独占锁定这些表可能会导致死锁。为了避免这种情况,用户必须避免对目录表进行独占锁定。作者: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 中没有副本标识索引的情况。提交 e7eea52b2d 引入了一个新函数 RelationGetIdentityKeyBitmap,该函数忽略了处理关系上没有副本标识索引的情况。作者: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 转换为范围数组。人们发现 multirange 缺乏将其分解为单个范围的能力。订阅和适当的扩展对象表示需要大量工作,并且对于 v14 来说太晚了。此提交提供了 unnest(multirange) 的实现,并将 multirange 转换为范围数组,这非常简单。unnest(multirange) 定义为多态过程。因为我们这里没有任何 rangearray 多态类型可以使用,所以每个 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
由于构建场失败,还原 29854ee8d1。报告者:Tom Lane 讨论:https://postgr.es/m/CAPpHfdvcnw3x7jdV3r52p4%3D5S4WUxBCzcQKB3JukQHoicv1LSQ%40mail.gmail.com https://git.postgresql.org/pg/commitdiff/817bb0a7d1e02df4643d37304aed8574cf43f629
Peter Geoghegan 推送了
从 VACUUM 状态中删除不需要的字段。Bugfix 提交 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 输出,该输出避免将行更改归因于被忽略的缩进提交。这使得 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 中添加的快速默认代码遗漏了检查正在添加快速默认值的表是否是普通表。因此,可以将快速默认值添加到外来表,这可以预见地会崩溃。在这里,我们执行该检查。此外,在回溯分支上,由于其中一些可能已逃逸到野外,如果我们遇到除普通表以外的属性缺少值,我们将忽略它。修复错误 #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 时释放它,其他调用者在 "nmembers >= 0" 时释放它,还有一些在 "nmembers > 0" 时释放它。这也不是一个实际的 bug,因为该函数永远不应该返回 0,但为此添加一个断言,使其更清晰。我将设置 *nmembers
的行移动了位置。之前它并没有错,但我喜欢在 'return' 语句旁边执行它,以明确它总是在返回时设置。此外,删除 ereport(ERROR) 之后一个无法访问的返回语句,为了简洁并与之后的类似 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() 正在检查它操作的关系的权限,但它实际上并没有这样做。也许该补丁的早期版本是这样做的,但现在访问由该函数的权限控制。删除错误的注释。https://git.postgresql.org/pg/commitdiff/97b7134186490b36e01efc9d2feaf7038c666457
翻译更新。Source-Git-URL: git://git.postgresql.org/git/pgtranslation/messages.git Source-Git-Hash: 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 数据类型拼写以保持一致性。在此上下文中,像其他地方一样使用“浮点数”而不是“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 选项,因此将其从选项卡补全中删除。此外,重新措辞当指定要删除订阅中的所有发布时抛出的错误消息。此外,进行了一些文档和外观上的调整。作者: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 发送了一个补丁,以通过新的 GUC autovacuum_analyze_attach_partition、autovacuum_analyze_detach_partition 和 autovacuum_analyze_drop_partition 来控制是否为分区操作运行自动分析。
Peter Eisentraut 发送了一个补丁,将索引 OID 宏参数添加到 DECLARE_INDEX。不要显式定义诸如 AmOidIndexId 之类的符号,而是将它们作为 DECLARE_INDEX() 的参数,并让 genbki.pl 生成 CATALOG() 声明中表 OID 符号的方式。
Filip Gospodinov 发送了一个补丁,旨在修复一个 bug,该 bug 表现为静态链接 libpq 时,随附的 pkg-config 文件已损坏,因为缺少 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 发送了另一个补丁修订版,以在备用服务器上启用最小逻辑解码。
Alexander Pyhalov 发送了另一个补丁修订版,以允许将 CASE 表达式推送到外部服务器。
Peter Eisentraut 发送了一个补丁,用于使 Unicode makefile 更具并行安全性,使 UCS_to_most.pl 按排序顺序处理编码,删除生成的 C 输出中的一些空格,使其与项目其余部分的编码风格一致,简化代码生成代码,并修复生成输出中的缩进。
Maxim Orlov 发送了另一个补丁修订版,以修复并行工作进程失败的断言和核心转储。
Vigneshwaran C 发送了另外两个补丁修订版,以添加对 PUBLICATION 的模式级支持。
Mike Fiedler 发送了一个补丁,以在后复制输出中发出命名空间。
Emre Hasegeli 发送了一个补丁,以将操作符类与索引访问方法解耦。
Jacob Champion 发送了两个补丁修订版,以将 SASL 框架与 SCRAM 代码解耦,因为它可能单独有用。
Yugo Nagata 发送了另一个补丁修订版,通过使用客户端变量的 Variables 结构来解决一些 Pgbench 错误。这在用于在序列化/死锁失败后重复事务期间重置客户端变量时最为重要。不要逐个分配 Variable 结构体。相反,每次溢出时都添加一个常量边距。还包括了针对 pgbench 错误和序列化/死锁重试的修复。
Jacob Champion、Michaël Paquier 和 Tom Lane 交换了补丁,以使 jsonapi 可以与 libpq 一起使用。
Gurjeet Singh 发送了一个补丁,为顶级事务 ID 添加自动通知。
Haiying Tang 发送了另一个补丁修订版,以支持 psql 中大写输入的查询结果的制表符补全。
Peter Eisentraut 发送了一个补丁,通过计算错误并在最后报错而不是仅对无效的跨目录查找写入警告,使 genbki 错误处理更有用。
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 发送了一个补丁,添加了一些 PGDLLIMPORT,以公开 Windows 上之前不可用的一些内容。
Amit Kapila 发送了一个补丁,允许在推测性中止后流式传输更改。
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 发送了一个补丁,以修复多范围运算符目录定义中的一些小的不一致之处。
Julien Rouhaud 发送了另一个补丁修订版,以在生成 const 节点时保留参数位置。
Andrey Borodin 发送了另一个补丁修订版,以重组 pglz 压缩代码。
Julien Rouhaud 和 Ranier Vilela 交换了补丁,以添加一个 pg_get_query_def() 来反解析和打印重写的 SQL 语句。
Tomáš Vondra 发送了一个 PoC 补丁,使用运行时采样进行基数估计。