奥地利 pgDay 将于 2021 年 9 月 17 日在维也纳美泉宫(Apothekertrakt)举行。https://pgday.at/en/
pgSCV 0.7.0,一个兼容 Prometheus 的 PostgreSQL 监控代理和指标导出器,已发布。
pg_validate_extugprade 1.0.0beta,一个用于测试扩展升级过程各种组合的工具,已发布
pspg 5.1.0,一个为 PostgreSQL 设计的分页器,已发布。https://github.com/okbob/pspg/releases/tag/5.1.0
Database Lab 2.4,一个用于快速克隆大型 PostgreSQL 数据库以构建非生产环境的工具,已发布:https://gitlab.com/postgres-ai/database-lab/-/releases
https://archives.postgresql.org/pgsql-jobs/2021-07/
Planet PostgreSQL: https://planet.postgresql.org/
本周的 PostgreSQL 每周新闻由 David Fetter 为您带来
请在太平洋标准时间/太平洋夏令时周日下午 3:00 前将新闻和公告提交至 david@fetter.org。
Thomas Munro 推送了
支持 macOS 上的直接 I/O。Mac 不理解 O_DIRECT,但它们可以使用单独的 fcntl() 调用禁用缓存。扩展 fd.c 中的文件打开函数,以便在调用者传入 PG_O_DIRECT 时为我们处理此操作。目前,这仅影响 WAL 数据,即使如此,也只有在您设置以下内容时才生效:max_wal_senders=0 wal_level=minimal。这本身预计不会非常有用,但稍后提出的补丁将更多地使用直接 I/O,如果 Mac 上的开发人员可以看到效果,这将有助于测试。经 Andres Freund andres@anarazel.de 审阅 讨论:https://postgr.es/m/CA%2BhUKG%2BADiyyHe0cun2wfT%2BSVnFVqNYPxoO6J9zcZkVO7%2BNGig%40mail.gmail.com https://git.postgresql.org/pg/commitdiff/2dbe8905711ba09a2214b6e835f8f0c2c4981cb3
为旧版 macOS 调整提交 2dbe8905。断言中使用的几个打开标志在 macOS 10.4 中不存在。根据构建场动物 prairie dog。同时在此处添加 O_EXCL(还有一些更标准的标志,但它们不相关且很可能缺失)。https://git.postgresql.org/pg/commitdiff/04cad8f7bcd63fac567e49fd72e6df42b3b251a9
不要在类函数宏参数中使用 #if。没有报告具体问题,但过去已知它会在某些编译器上导致问题,因此我们避免这样做。由 Tom Lane tgl@sss.pgh.pa.us 报告 讨论:https://postgr.es/m/234364.1626704007%40sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/0c08856856f54056ce8db116e9d254fda114c383
jit:不要内联访问线程局部变量的函数。如果 LLVM 内联的代码尝试访问线程局部变量,它可能会崩溃或失败并显示“尚未实现重定位类型!”。不要内联此类代码。回溯到 11,LLVM 在那里出现。错误 #16696。作者:Dmitry Marakasov amdmi3@amdmi3.ru 经 Andres Freund andres@anarazel.de 审阅 讨论:https://postgr.es/m/16696-29d944a33801fbfe@postgresql.org https://git.postgresql.org/pg/commitdiff/0207d5fbebed7eb698a7e5f3adf30fafe95bc4b9
Amit Kapila 推送了
更新 AlterSubscription 的注释。添加解释为什么需要禁用订阅以允许 slot_name 为 none。作者:Japin Li 和 Amit Kapila 讨论:https://postgr.es/m/MEYP282MB1669CBD98E721C77CA696499B61A9@MEYP282MB1669.AUSP282.PROD.OUTLOOK.COM https://git.postgresql.org/pg/commitdiff/dcecdfafbd2dbdfaa0f82e7710abfa65242a1d1e
不允许将复制 slot_name 设置为 ''。我们不允许通过 SQL API pg_create_logical_replication_slot() 将复制 slot_name 创建为空字符串 (''),但允许通过 Alter Subscription 命令进行设置。这将导致应用工作进程重复尝试通过 slot_name '' 流式传输数据,并且不允许用户使用该名称创建插槽。作者:Japin Li 经 Ranier Vilela 和 Amit Kapila 审阅 回溯:10,该功能在此处引入 讨论:https://postgr.es/m/MEYP282MB1669CBD98E721C77CA696499B61A9@MEYP282MB1669.AUSP282.PROD.OUTLOOK.COM https://git.postgresql.org/pg/commitdiff/29abde637bbb4b8fcdc96e049813890afa5ab671
修复 proto.c 中潜在的缓冲区溢出。防止在使用 strcpy 时向 gid 缓冲区写入时发生潜在的缓冲区溢出。这是由提交 a8fd13cab0 引入的。由 Tom Lane 根据 coverity 报告 作者:Peter Smith 经 Amit Kapila 审阅 讨论:https://postgresql.ac.cn/message-id/161029.1626639923%40sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/01c3adcdd85f1507ef49bdf5430c59925d08de6f
Michaël Paquier 推送了
doc:提及 DROP STATISTICS 的 CASCADE/RESTRICT。此语法无效,因为统计信息没有依赖项,但解析器支持它。这与其他 DROP 命令更一致。作者:Vignesh C 讨论:https://postgr.es/m/CALDaNm1LA=yNmzcSfy+0oe6CEAgsxXRf_-UutE3ZncFi8QkFNQ@mail.gmail.com 回溯:10 https://git.postgresql.org/pg/commitdiff/d1216635610a9855a8ec139e55cd852f67d5ee81
修复 pg_receivewal --compress 的 WAL 段打开的一些问题。当使用 --compress 时,如果存储这些文件的存储库中存在具有相同基本名称的部分、未压缩的段,则处理打开新 WAL 段的逻辑会变得模糊。在这种情况下,使用 --compress 将导致代码首先检查非压缩段的存在和大小,然后打开新的压缩、部分段。该代码在大多数平台上都意外地正确工作,构建场已经证明了这一点,除了 bowerbird,其中 gzflush() 可能在此代码路径中失败。无论如何,在创建新的部分、未压缩的段时采用预填充使用的代码路径是错误的,因此让我们修复它。请注意,当用户混合使用有压缩或无压缩的 pg_receivewal 的连续运行时,会存在此问题,正如 ffc9dda 引入的测试所发现的那样。在执行此操作时,这将重构代码,以便需要在 walmethods.c 中了解“.gz”后缀的代码路径从四个减少到一个,从而稍微简化了新压缩方法的引入。这解决了第二个问题,即为意外故障生成的日志消息不会显示所涉及的压缩段名称,这会让人感到困惑,而是打印非压缩等效项的名称。由 Georgios Kokolatos 报告 讨论:https://postgr.es/m/YPDLz2x3o1aX2wRh@paquier.xyz 回溯:10 https://git.postgresql.org/pg/commitdiff/7fbe0c8c4d4fe429ee1d6383706ea5ccb0f639d3
重新启用 Windows 上 ZLIB 的 pg_receivewal 的 TAP 测试。这是对 6cea447 的还原,它暂时禁用了 Windows 上的这些测试,原因是 bowerbird 出现故障,在刚刚打开的压缩和部分段上执行 gzflush() 会失败。现在应该通过 7fbe0c8 来解决此问题,因此让我们看看构建场对于 Windows 上的这些测试有何评论。讨论:https://postgr.es/m/YPDLz2x3o1aX2wRh@paquier.xyz https://git.postgresql.org/pg/commitdiff/91d395f47aa92849b2556b1a4d6bc1ff34121a30
禁用 Windows 上 ZLIB 的 pg_receivewal 的 TAP 测试。这将还原提交 91d395f,以避免在 Windows 上运行这些测试。这些测试在所有构建场成员中都是全局稳定的,除了 fairywren(pg_receivewal 崩溃)和 bowerdird(SIGBREAK 阻止构建场运行完成)。这些错误非常奇怪,因为其他具有非常相似特征的主机能够运行这些测试而不会出现任何问题。目前,禁用 Windows 上的这些测试以将构建场恢复为绿色。根据与 Andrew Dunstan 的讨论。讨论:https://postgr.es/m/9040d5ed-6462-66a4-07ac-2923785ae563@dunslane.net https://git.postgresql.org/pg/commitdiff/6a2c532c2230159b909382cfa58494ef9d6df703
统一命令行整数选项的解析逻辑。现在,命令行二进制文件的大多数整数选项都使用一个能够完成工作的例程,修复了由于使用 atoi() 导致的检测草率值的问题,例如,atoi() 在以数字字符开头的字符串后跟垃圾字符时会失败。此提交使我计算的需要翻译的字符串数量减少了 26 个,并将代码切换为具有两种错误类型,分别用于无效值和超出范围的值。此处可以做更多的事情,使用浮点数甚至 int64 选项,但 int32 是最吸引人的情况,因为它有可能依靠 strtol() 来可靠地完成工作。请注意,目前有一些例外情况,例如 pg_ctl 或 pg_upgrade,它们使用自己的日志记录逻辑。一些负面 TAP 测试需要对生成的新错误进行一些调整。pg_dump 和 pg_restore 在选项解析中跟踪最大并行作业数。代码已稍微重构,以便在专门用于并行性的代码中跟踪它。作者:Kyotaro Horiguchi、Michael Paquier 经 David Rowley、Álvaro Herrera 审阅 讨论:https://postgr.es/m/CALj2ACXqdG9WhqVoJ9zYf-iZt7sgK7Szv5USs=he6NnWQ2ofTA@mail.gmail.com https://git.postgresql.org/pg/commitdiff/6f164e6d17616a157ea5d9e34dbb1b211c080c41
为 pg_basebackup 和 pg_{dump,restore} 添加缺失的标头声明。这修复了 6f164e6 导致的两个编译失败。有趣的是,缺失的 <limits.h> 在 Linux 甚至 Windows 中都不会失败。但是,在 MacOS 上,它会失败。根据各个构建场成员。https://git.postgresql.org/pg/commitdiff/bc0cc68f8a1648029424e9300b2e4457acd474a6
Peter Eisentraut 推送了
在适当的地方使用 l*_node()
系列函数。而不是 castNode(…, lfoo(…)) 作者:Dagfinn Ilmari Mannsåker ilmari@ilmari.org 讨论:https://postgresql.ac.cn/message-id/flat/87eecahraj.fsf@wibble.ilmari.org https://git.postgresql.org/pg/commitdiff/2b00db4fb0c7f02f000276bfadaab65a14059168
让 UCS_to_most.pl 按照排序后的顺序处理编码。这只是为了使进度输出更容易跟踪。审阅人:Kyotaro Horiguchi horikyota.ntt@gmail.com 审阅人:Heikki Linnakangas hlinnaka@iki.fi 讨论:https://postgresql.ac.cn/message-id/flat/22016aa9-ca59-15c7-01df-f292cb558c4d@enterprisedb.com https://git.postgresql.org/pg/commitdiff/4d56115f721f3f2c6d3b6f017f40b5103ca71448
删除生成的 C 输出中的一些空格。它与正常的编码风格不符。审阅人:Kyotaro Horiguchi horikyota.ntt@gmail.com 审阅人:Heikki Linnakangas hlinnaka@iki.fi 讨论:https://postgresql.ac.cn/message-id/flat/22016aa9-ca59-15c7-01df-f292cb558c4d@enterprisedb.com https://git.postgresql.org/pg/commitdiff/344dedfd1c24f2e2c591f1eadf8414a1f4df910a
更多关于不匹配的 relkind 的错误消息的改进。作为 2ed532ee8c474e9767e76e1f3251cc3a0224358c 的后续,逻辑复制区域中的一些错误消息目前只处理表,但是如果我们预期会处理更多诸如序列之类的 relkind,那么这些消息也属于先前补丁所影响的类别,因此也需要调整它们。审阅人:Michael Paquier michael@paquier.xyz 讨论:https://postgresql.ac.cn/message-id/c9ba5c6a-4bd5-e12c-1b3c-edbcaedbf392@enterprisedb.com https://git.postgresql.org/pg/commitdiff/81d5995b4b78017ef9e5c6f151361d1fb949924c
重命名 ExprState 的 NodeTag。为了与所有其他节点结构保持一致,将 tag 重命名为 type。讨论:https://postgresql.ac.cn/message-id/flat/c1097590-a6a4-486a-64b1-e1f9cc0533ce@enterprisedb.com https://git.postgresql.org/pg/commitdiff/d9a38c52cef3cf80c4259277f11d42a86ecb1952
重命名 _outValue() 的参数。为了与类似函数保持一致,将 value 重命名为 node。讨论:https://postgresql.ac.cn/message-id/flat/c1097590-a6a4-486a-64b1-e1f9cc0533ce@enterprisedb.com https://git.postgresql.org/pg/commitdiff/3d25b4ea6e2c93c60566c1185d4ee79a6285089a
为了保持一致性,重命名一些节点支持函数。一些节点函数名称与其节点类型名称不完全匹配。修复这些以保持一致性。讨论:https://postgresql.ac.cn/message-id/flat/c1097590-a6a4-486a-64b1-e1f9cc0533ce@enterprisedb.com https://git.postgresql.org/pg/commitdiff/31360381f0a5ff5193c3631e6076442352906f59
在节点中使用的枚举中添加缺失的枚举标签。讨论:https://postgresql.ac.cn/message-id/flat/c1097590-a6a4-486a-64b1-e1f9cc0533ce@enterprisedb.com https://git.postgresql.org/pg/commitdiff/983bdc4fac492a99bb8ab5a471ca7437139e5cf6
修复注释中的拼写错误。作者:Kyotaro Horiguchi horikyota.ntt@gmail.com 讨论:https://postgresql.ac.cn/message-id/flat/20210716.170209.175434392011070182.horikyota.ntt%40gmail.com https://git.postgresql.org/pg/commitdiff/86a1aae764b03c7fe06e290e409c8d1a72ff187d
Álvaro Herrera 推送了
使新的复制槽测试代码更不易产生竞争。进一步修复 ead9e51e8236 中的测试代码,这次是通过等待检查点完成再继续进行;这确保在我们创建下一个槽时,WAL 段的移除已经发生。作者:Kyotaro Horiguchi horikyota.ntt@gmail.com 讨论:https://postgr.es/m/20210719.111318.2042379313472032754.horikyota.ntt@gmail.com https://git.postgresql.org/pg/commitdiff/0d2cb6b2bbc3327dd002f3ecd4d5bde5851b0cdc
稍微改进一下安装说明。报告人:Daniel Westermann 讨论:https://postgr.es/m/GV0P278MB04835AAEACF894617574EB6BD25A9@GV0P278MB0483.CHEP278.PROD.OUTLOOK.COM https://git.postgresql.org/pg/commitdiff/aaec237b1a2f368ed2a8794c4f48b3656750eabc
再次修改安装说明。重新考虑:提交 aaec237b1a2f 中添加的新措辞针对了错误的受众。删除关于 git 的内容,只讨论如何获取 tarball。寻找 git 仓库的人可以在附录中查找。那需要扩展,但此提交不执行此操作。顺便说一句,修复了上一个提交中偷偷溜进来的几个拼写错误。讨论:https://postgr.es/m/713760.1626891263@sss.pgh.pa.us https://git.postgresql.org/pg/commitdiff/73c5d2bfee2907b7f158485a531f00ba61b054f7
使 ALTER TRIGGER RENAME 对分区表保持一致。重命名分区表上的触发器有两个问题:首先,它没有递归重命名分区上的触发器;其次,它未能禁止重命名克隆触发器。在分区中具有不同名称的触发器是毫无意义的,而且 pg_dump 也不会保留分区的名称。不进行反向移植——在稳定版本中让 ALTER TRIGGER 抛出错误可能会对现有脚本造成问题。共同作者:Arne Roland A.Roland@index.de 共同作者:Álvaro Herrera alvherre@alvh.no-ip.org 审阅人:Zhihong Yu zyu@yugabyte.com 讨论:https://postgr.es/m/d0fd7040c2fb4de1a111b9d9ccc456b8@index.de https://git.postgresql.org/pg/commitdiff/80ba4bb383538a2ee846fece6a7b8da9518b6866
使新测试免受排序规则的影响。在捷克语区域运行的动物测试失败。我可以尝试查找没有此问题的表名,但使用 C 区域似乎更简单。根据 buildfarm https://git.postgresql.org/pg/commitdiff/6beb38cfc9ddd4cd3d2eb5402981ebdd69a618b4
Peter Geoghegan 推送了
vacuumdb:更正关于 --force-index-cleanup 的注释。提交 3499df0d 添加了一条注释,错误地暗示 --force-index-cleanup 没有出现在与类似的 --no-index-cleanup 选项相同的 major 版本中。实际上,这两个选项都是 PostgreSQL 14 中的新选项。反向移植:14-,其中引入了这两个选项。https://git.postgresql.org/pg/commitdiff/28766c054f8cc6a7bbcf99497954e7a259d3edb2
文档:vacuum_multixact_failsafe_age 是基于 multixact 的。提交 1e55e7d1 中的疏忽,该提交为 VACUUM 添加了一个环绕式故障保护机制。反向移植:14-,其中引入了 VACUUM 故障保护。https://git.postgresql.org/pg/commitdiff/dd498998a374b3d2a7f5211504f1f1aa15348cf1
Tom Lane 推送了
修复 plpgsql 中一些角落情况的未初始化变量问题。如果在我们最初尝试检查成功编译的表达式是否“简单”时引发了错误,则后续对 exec_stmt_execsql 的调用会认为 stmt->mod_stmt 已经被计算过,而实际上并没有。这可能会导致调试版本中的断言失败;在生产版本中,效果通常会表现得好像指定了 INTO STRICT,即使没有指定。当然,只有在后续尝试执行表达式成功时,这才有意义,因此只能通过修复某些引用的、可内联 SQL 函数中的失败,然后在同一会话中重试调用 plpgsql 函数才能达到该问题。(可能还有更隐蔽的方法可以在不更改 plpgsql 函数的情况下更改表达式的行为,但那似乎是人们在实践中唯一可能遇到的方法。)修复此问题的最可靠方法是安排 exec_prepare_plan 在我们完成辅助简单表达式检查之前不设置 expr->plan。但是,如果不创建引用计数泄漏问题,似乎很难做到这一点。因此,我们决定在注释中记录此危险,并修复 exec_stmt_execsql 以单独测试是否计算过 stmt->mod_stmt。(这会在每次执行时增加一个测试和分支,但希望在上下文中可以忽略不计。)在 v11 及更高版本中,还修复了 exec_stmt_call,它也存在相同问题的变体。根据 Alexander Lakhin 报告的错误 #17113。反向移植到所有支持的分支。讨论:https://postgr.es/m/17113-077605ce00e0e7ec@postgresql.org https://git.postgresql.org/pg/commitdiff/d9809bf8694c17e05537c5dd96cde3e67c02d52a
文档:改进关于求幂运算符的文档。现在我们不必将其楔入旧运算符表格式的束缚中,我们可以添加另一个示例来澄清关于从左到右结合性的观点。根据 mdione 在 grulic.org.ar 的建议。https://postgr.es/m/162661954599.693.13700316547731859171@wrigleys.postgresql.org https://git.postgresql.org/pg/commitdiff/7fa1e1ef741964eeb50f33d7c72622658bb7e5f4
修复一些头文件“独立”编译失败的问题。最近添加的对 ParseState 的引用未被 #include 引用覆盖,从而为这些头文件的用户创建了不必要的排序依赖关系。提交 2bfb50b3d 中的疏忽。根据 headerscheck/cpluspluscheck。https://git.postgresql.org/pg/commitdiff/678f5448c2d86976a98b402ef14482a8ba3b159b
删除配置时的线程安全检查(thread_test.c)。此测试在编写时(大约二十年前)很有用,但在最近十几年或更长时间内构建的任何平台上都显得相当无意义。(另请参阅 8a2121185 的注释。)此外,我们现在有报告称该测试程序本身在 ThreadSanitizer 下会失败。与其投入精力修复它,不如直接删除它,并假设仍然关心的少数人已经知道他们需要使用 --disable-thread-safety。为了与 8a2121185 保持一致,将其反向移植到 v14。讨论:https://postgr.es/m/CADhDkKzPSiNvA3Hyq+wSR_icuPmazG0cFe=YnC3U-CFcYLc8Xw@mail.gmail.com https://git.postgresql.org/pg/commitdiff/76fa3db33654e543b5c796e28c6fc5b505a19c2a
使 printf("%s", NULL) 输出 "(null)" 而不是崩溃。我们之前采取了强硬态度,认为调用者绝不应该打印空字符串指针,这样做会导致断言失败或崩溃。然而,我们早就清除了任何容易发现的此类错误。剩下的是大量可能在难以触及的角落情况下以这种方式失败的代码。例如,在像 ereport(ERROR, (errcode(ERRCODE_UNDEFINED_OBJECT), errmsg("constraint \"%s\" for table \"%s\" does not exist", conname, get_rel_name(relid)))); 这样简单的代码中,人们必须怀疑是否完全保证 get_rel_name 在这种情况下不会返回 NULL。如果真的发生这种情况,现有的策略会将可能只是一个很小的错误转换为服务器崩溃的情况。这对健壮性不利。因此,让我们效仿 glibc 的做法,打印 "(null)" 而不是失败。当然,如果这种行为在正常使用中是可达的,我们仍然应该认为这是一个错误;但崩溃似乎不如不崩溃更可取。此修复程序在 v12 及更高版本中全面有效,我们在这些版本中始终使用 src/port/snprintf.c。在此之前,在大多数平台上,我们受制于本地 libc,但看起来 Solaris 10 是唯一仍然会导致崩溃的受支持平台。大多数其他平台,如 *BSD
、macOS 和 Solaris 11,在某个时候都采用了 glibc 的行为。(AIX 和 HPUX 只是打印 "" 而不是 "(null)",但这已经很接近了。)我没有检查 Windows 的原生 printf 会做什么,但这并不重要,因为我们长期以来在该平台上使用 snprintf.c。在 v12 及更高版本中,还将相关代码 const 化,这样我们就不会在常量字符串上强制转换 const。这只是整洁主义,因为几乎没有编译器会对此发出警告。讨论:https://postgr.es/m/17098-b960f3616c861f83@postgresql.org https://git.postgresql.org/pg/commitdiff/3779ac62d709467fe6331c8f0285d42e7487a01c
修复会话级锁与事务级锁冲突的检查。我们有一个实现限制,即 PREPARE TRANSACTION 无法处理在同一可锁定对象上同时持有会话生命周期锁和事务生命周期锁的情况。(这是因为否则我们需要在准备后清理期间获取一个新的 PROCLOCK 条目,这是一个可能会失败的操作。这种情况只会出现在咨询锁的奇特用法中,因此取消此限制可能不值得为此付出的努力。)AtPrepare_Locks 试图强制执行此操作,但其逻辑存在许多不足,因为它仅检测到会话锁和事务锁具有相同锁定模式的情况。同一对象上的不同模式的锁会导致相当无益的消息“PANIC: we seem to have dropped a bit somewhere”。为了解决这个问题,构建一个临时的哈希表,每个锁标签一个条目,而不是每个锁标签 + 模式一个条目,并使用它来检测冲突。根据 Alexander Pyhalov 的 bug #17122。这个 bug 很古老,因此回溯修补到所有受支持的分支。讨论:https://postgr.es/m/17122-04f3c32098a62233@postgresql.org https://git.postgresql.org/pg/commitdiff/6310809c4aa146b3996a35524955c6c6943d241a
消除 Windows 上哈希表大小的人为限制。引入 hash_mem_multiplier GUC 的目的是让用户重现哈希聚合的旧行为,即它可以在需要时使用超过 work_mem 的内存。但是,该实现未能完成 Win64 上的工作,其中 work_mem 被钳制为 2GB,以保护使用“long int”计算内存大小的各个位置。按照原来的写法,相同的钳制应用于 hash_mem。这导致需要稍微超过 2GB 用于哈希聚合的查询出现严重的性能下降,因为它们现在会溢出到磁盘,而且没有办法阻止这种情况。消除 work_mem 限制似乎是一个好主意,但这是一项艰巨的工作,并且不可能进行回溯修补。但是,只有相当少的几个地方关心 hash_mem 值,并且事实证明可以在那里消除限制,而无需进行太多代码变动或任何 ABI 中断。因此,让我们现在这样做来修复回归,并将更大的任务留到以后。此补丁确实引入了更多基础设施,这应该有助于更大的任务,即 pg_bitutils.h 支持使用 size_t 值。根据 Laurent Hasson 的抱怨。回溯修补到引入行为更改的 v13。讨论:https://postgr.es/m/997817.1627074924@sss.pgh.pa.us 讨论:https://postgr.es/m/MN2PR15MB25601E80A9B6D1BA6F592B1985E39@MN2PR15MB2560.namprd15.prod.outlook.com https://git.postgresql.org/pg/commitdiff/28d936031a86d94806c6604480ff3f3f169b371c
藤井正雄推送
使 XLOG_FPI_FOR_HINT 记录遵守 full_page_writes 设置。提交 2c03216d83 更改了 XLOG_FPI_FOR_HINT 记录,以便它们始终包含完整页面映像,即使禁用了 full_page_writes。但是,在此设置中,它们不需要这样做,因为提示位更新不需要防止撕裂写入。因此,此提交使 XLOG_FPI_FOR_HINT 记录遵守 full_page_writes 设置。也就是说,如果禁用了 full_page_writes,则 XLOG_FPI_FOR_HINT 记录可能不包含完整页面映像,并且对它们进行 WAL 重放不会执行任何操作。报告者:张文杰 作者:堀口京太郎 审阅者:藤井正雄 讨论:https://postgr.es/m/tencent_60F11973A111EED97A8596FFECC4A91ED405@qq.com https://git.postgresql.org/pg/commitdiff/7fcf2faf9c7dd473208fd6d5565f88d7f733782b
文档:记录只有超级用户才能使用 pg_import_system_collations()。回溯修补到添加 pg_import_system_collations() 的 v10。作者:鳥越 敦 审阅者:藤井正雄 讨论:https://postgr.es/m/b7f484692a3e283710032e68b7f40617@oss.nttdata.com https://git.postgresql.org/pg/commitdiff/90b6c339b2b37ee320ff6125ef8c8ad0073aa31b
John Naylor 推送
在 euc_tw_and_big5.c 中添加对 noError 参数的缺失检查。ea1b99a66 的疏忽 Yukun Wang 回溯修补到引入此参数的 v14 讨论:https://postgresql.ac.cn/message-id/flat/OS0PR01MB6003FCEFF0201EF21685FD33B4E39%40OS0PR01MB6003.jpnprd01.prod.outlook.com https://git.postgresql.org/pg/commitdiff/004874b72e8e60966f88de2d95667fe66c0466ca
在 postgres.conf.sample 中将“B”和“us”记录为接受的单位。在 postgresql.conf 中,内存和文件大小 GUC 可以使用“B”(字节)指定,如 b06d8e58b 所述。同样,时间 GUC 可以使用“us”(微秒)指定,如 caf626b2c 所述。更新 postgres.conf.sample 以反映这一事实。Pavel Luzanov 回溯修补到 v12,这是最早允许这两个单位的版本。一个单独的提交将记录 v11 的“B”情况。讨论:https://postgresql.ac.cn/message-id/flat/f10d16fc-8fa0-1b3c-7371-cb3a35a13b7a%40postgrespro.ru https://git.postgresql.org/pg/commitdiff/bb95feabb8572f5069ad37763707862af5a81942
修复 date_bin 中的除零错误。Bauyrzhan Sakhariyev,通过 Github 回溯修补到 v14 https://git.postgresql.org/pg/commitdiff/a0db4294aeffe428cdcb381fc66ba725ec588e95
David Rowley 推送
Andres Freund 推送
Dilip Kumar 发送了另一个修订版的补丁,用于添加 TOAST 压缩方法选项。
堀口京太郎发送了另外两个修订版的补丁,以防止恢复期间出现 xlog 页眉错误。
Greg Nancarrow 发送了另一个修订版的补丁,用于添加新的“client_connection”事件和客户端连接触发器支持。
Jacob Champion 发送了另一个修订版的补丁,以支持将 NSS 作为 libpq TLS 后端。
Thomas Munro 发送了一个补丁,以支持 Solaris 上的直接 I/O。
Andres Freund 发送了两个修订版的 WIP 补丁,以通过将热路径与冷路径分离来优化分配,并通过避免在分配新块时需要迭代所有块来提高 slab 性能。
Daniel Gustafsson 发送了一个补丁,以禁用 pgcrypto 中的 OpenSSL EVP 摘要填充,并为没有加载旧版的 OpenSSL 3 添加替代输出。
Ranier Vilela 发送了两个修订版的补丁,以避免一些 strlen 调用。
Masahiko Sawada 发送了另外两个修订版的补丁,用于将 errcontext 添加到应用逻辑复制更改时发生的错误,添加 pg_stat_logical_replication_error 统计视图,并为 ALTER SUBSCRIPTION 添加 skip_xid 选项。
Peter Smith 发送了另外两个修订版的补丁,用于为流式事务添加 prepare API 支持。
Dipesh Pandit 发送了另外两个修订版的补丁,通过维护当前正在存档的日志段编号,并将其递增 1 以获取下一个 WAL 文件,而不是默认情况下重新扫描目录,从而缓解 WAL 存档器的目录扫描。
Andres Freund 和 Yura Sokolov 交换了补丁,以改进 Andres 的惰性 vacuum 的死元组存储,通过添加基数树实现,以及 Yura 通过添加专门的 vacuum tid 映射。
Denis Hirn 发送了另一个补丁修订版,允许在 CTE 中进行多个线性递归自引用。
Peter Eisentraut 发送了一个补丁,使 Unicode makefile 并行安全。
Ronan Dunklau 发送了另一个补丁修订版,用于标记和删除为 SortGroupClause 添加的 resjunk,并教导排序和结果节点执行简化版本的投影。
Filip Gospodinov 发送了另一个补丁修订版,通过在 Libs.private 中硬编码 -lpgcommon 和 -lpgport 来修复静态链接的 pkg-config 文件。
Tomáš Vondra 发送了另一个补丁修订版,以实现序列的逻辑解码/复制。
Tomáš Vondra 发送了另一个补丁修订版,以处理扩展统计信息中的 Expr op Expr 子句。
Tomáš Vondra 发送了两个补丁修订版,以提高 GROUP BY 的效率。
David Rowley 发送了另一个补丁修订版,使 nodeSort.c 为单列排序执行 Datum 排序。
Peifeng Qiu 发送了两个补丁修订版,为 libpq 添加 Kerberos 委托支持。
John Naylor 发送了另一个补丁修订版,以重写 pg_verify_str 以提高速度。
Hou Zhijie 和 Greg Nancarrow 交换了补丁,以允许用户声明表的并行数据修改安全性,为插入启用并行选择,并添加一个返回 (objid, classid, parallel_safety) 记录的 pg_get_table_parallel_dml_safety(regclass) 函数。
Ranier Vilela 和 Aleksander Alekseev 交换了补丁,以取消隐藏几个变量。
Simon Riggs 发送了两个补丁修订版,使哈希索引能够支持 UNIQUE 约束,并允许使用多列哈希索引。
Bruce Momjian 发送了四个补丁修订版,以修复分数间隔算术中的错误。
Yugo Nagata 发送了一个补丁,纠正了 libpq 文档中的错误,其中指出命令在刷新之前本地存储在输出缓冲区中。
Yugo Nagata 发送了另一个补丁修订版,旨在修复一个错误,该错误表现为在 pgbench 的管道中使用预准备的 BEGIN 语句可能会导致错误。
Richard Guo 发送了另一个补丁修订版,以修复分区式 JOIN 中的一些缺陷。
David Rowley 发送了另一个补丁修订版,为 ORDER BY 聚合添加计划器支持。
Ronan Dunklau 和 Ranier Vilela 交换了补丁,通过关注用于排序的操作符族来修复 postgres_fdw PathKey 的处理。
Thomas Munro 发送了两个补丁修订版,使 SIMD 代码更具平台中立性,为 UTF-8 验证添加 ARM/NEON 支持,并为 UTF-8 验证添加 POWER AltiVec 支持。
Dean Rasheed 发送了另一个补丁修订版,使负指数的幂运算与 NUMERIC 一起工作。
Peter Eisentraut 发送了一个补丁,用于在 psql 中测试查询取消。
Pavel Stěhule 和 Aleksander Alekseev 交换了补丁,以增强 PL/pgsql 调试 API,以添加返回变量内容的文本值。
Vigneshwaran C 发送了两个补丁修订版,为 PUBLICATION 添加模式级粒度。
Jacob Champion 发送了一个补丁,用于添加自 Unicode 5.0 以来添加的宽 Unicode 代码点的指示符。
Thomas Munro 和 Soumyadeep Chakraborty 交换了补丁,通过将目标后端从按 pid 跟踪更改为使用 pgprocno 来优化 ProcSendSignal(),这不需要扫描 ProcArray。 这样做还消除了启动期间需要检查的一些特殊情况。
Andres Freund 发送了一个针对 pgbench 的补丁,限制仅在必要时使用管道执行 PQconsumeInput()。
Nitin Jadhav 发送了两个补丁修订版,以显示启动过程中执行的操作的进度。
Ajin Cherian 发送了四个补丁修订版,以从逻辑复制中删除空事务。
Thomas Munro 发送了一个补丁,以教导 pgindent 关于特殊的文件本地类型名称。
Erik Rijkers 发送了另一个补丁修订版,以实现 SQL/JSON 规范的 JSON_TABLE 部分。
Alexander Pyhalov 发送了另一个补丁修订版,使 CASE 表达式可以推送到外部服务器。
Zeng Wenjing 发送了另一个补丁修订版,以实现全局临时表。
Justin Pryzby 发送了另一个补丁修订版,以实现 ALTER TABLE ... ACCESS METHOD,并使可以指定分区表的表访问方法。
Hou Zhijie 发送了一个补丁,以添加快速选择功能,该功能可用于快速计算中位数等。
Artur Zakirov 发送了一个补丁,旨在修复一个错误,该错误表现为逻辑复制触发的存储过程无法通过将 SignalBackends() 调用移动到 AtCommit_Notify() 内部来使用通知事件。
Peter Eisentraut 发送了一个针对 pg_amcheck 的补丁,以修复命令行上的块号解析,使其正确处理 sizeof(long)==4 的系统。
Haiying Tang 发送了一个补丁,以支持对包含等号的单引号输入进行 Tab 补全。
Fabien COELHO 发送了另一个补丁修订版,以向 psql 添加 SHOW_ALL_RESULTS 选项。
Dean Rasheed 和 Tom Lane 交换了补丁,以允许 NUMERIC 具有负刻度。
Michael Banck 发送了另一个补丁修订版,以添加新的 PGC_ADMINSET GUC 上下文和新的 pg_change_role_settings 预定义角色。 这些创建一个在其功能上介于超级用户和用户之间的管理员。
Greg Nancarrow 发送了另一个补丁修订版,以修复并行工作进程失败的断言和核心转储。
Andrey Borodin 发送了一个补丁,以避免 relcache 和 syscache 回调中的重复。
Vigneshwaran C 发送了另一个补丁修订版,以在逻辑复制消息描述中包含实际使用的数据类型。
Robert Haas 发送了一个补丁,将一些恢复结束代码从 StartupXLOG() 中重构出来,推迟一些与允许 WAL 相关的恢复结束操作,并使用 StartupXLOG() 中的代码创建 XLogAcceptWrites() 函数。
Andrey Borodin 发送了一个补丁,通过确保不再出现无用的错误“未找到记录”来改进 ReadPageInternal() 的错误报告。
Tom Lane 发送了一个补丁,以删除哈希表大小的“long int”相关限制。
Haiying Tang 发送了另一个补丁修订版,为回归示例进行了一个小的修复。
Bharath Rupireddy 发送了另一个补丁修订版,为 {pre, post}_auth_delay 使用 WaitLatch。
Bharath Rupireddy 发送了另一个补丁修订版,禁止为 CREATE SEQUENCE 使用 RESTART 选项。
Julien Rouhaud 发送了一个补丁,使 pg_stat_statements 测试不受预准备语句失效的影响。