PG Build 2021将于2021年11月30日和12月1日09:00-17:00 GMT在线举行。细节.
发布PostgresDAC 3.11, PostgreSQL的直接访问组件套件。http://microolap.com/products/connectivity/postgresdac/download/
JDBC 42.3.1发布.
ODB c++ ORM版本2.5.0-b.21发布.
DynamoDB给水1.0.0发布.
Babelfish,一个面向PostgreSQL的MS SQL Server兼容层,发布.
https://archives.postgresql.org/pgsql-jobs/2021-11/
行星PostgreSQL:https://planet.postgresql.org/
PostgreSQL每周新闻由David Fetter为您带来
请于周日下午3点(PST8PDT)前提交新闻和公告至david@fetter.org。
汤姆·莱恩推:
Plpgsql:报告正确的行号在变量初始化错误。在前面,我们指出了周围块的BEGIN关键字。如果在DECLARE部分中有多个变量被初始化,这是不够的:它可能非常令人困惑,而且没有帮助。我们知道变量的声明是从哪里开始的,所以只需要稍微多一点的错误报告基础设施来使用它。讨论:https://postgr.es/m/713975.1635530414@sss.pgh.pa.ushttps://git.postgresql.org/pg/commitdiff/acb2d7d5d2301f07d5857ee252995e62ce9e7055
当备用进程释放许多锁时,避免O(N^2)行为。当重放主服务器上持有许多排他锁的事务时,备用服务器的启动过程将花费O(N^2)的精力来操作锁列表。这段代码在编写时没有问题,但是commit 1cff1b95a会导致重复的list_delete_first()调用效率低下,正如commit消息中所解释的那样。修复方法是正常迭代列表,并仅在完成时释放存储。(如果我们需要从中途发生的错误中恢复,这是不够的;但我们不)。补丁到v13,其中1cff1b95a进来了。内森博萨尔特讨论:https://postgr.es/m/CD2F0E7F-9822-45EC-A411-AE56F14DEA9F@amazon.comhttps://git.postgresql.org/pg/commitdiff/6301c3adabd947394682e37c933b0f3f83353b28
改进与TAP测试相关的README文件。重新排列src/test/perl/README,以便第一部分更清楚地说明“如何运行这些测试”,其余部分则说明“如何编写新测试”。添加一些关于调试测试失败的基本信息。然后,从描述如何运行TAP测试的其他readme中向该READNE添加交叉引用。根据凯文伯克的建议,尽管这不是他最初的补丁。讨论:https://postgr.es/m/CAKcy5eiSbwiQnmCfnOnDCVC7B8fYyev3E=6pvvECP9pLE-Fcuw@mail.gmail.comhttps://git.postgresql.org/pg/commitdiff/b21415595cace7f3a45cfeb3023359b4b4d56b85
不要尝试在一次调用中读取多gb的pg_stat_statements文件。Windows在read()超过INT_MAX字节的请求时失败,可能其他平台也有类似的问题。让我们将代码调整为每次调用最多读取1GB。(没人会想到档案会这么大,但现在我们有了一份关于麻烦的现场报告,所以它可以。我们可能应该添加一些机制来限制查询文本文件的大小与哈希表的大小分开。不过,这不是这个补丁。)由Yusuke Egashira提供的bug #17254。这样已经有一段时间了,所以对所有支持的分支进行修补。讨论:https://postgr.es/m/17254-a926c89dc03375c2@postgresql.orghttps://git.postgresql.org/pg/commitdiff/a667b066837849c5e55e0d626f1f7c93e267b8b7
在列表操作中避免一些其他的O(N^2)危险。本着与6301c3ada相同的精神,修复在循环中使用list_delete_first()的更多地方,从而导致O(N²)行为的风险。目前还不清楚在这些地方操纵的列表是否足够长,从而产生真正的问题……但目前还不清楚他们是否不能,解决办法也很简单。和以前一样,将补丁补丁到v13。讨论:https://postgr.es/m/CD2F0E7F-9822-45EC-A411-AE56F14DEA9F@amazon.comhttps://git.postgresql.org/pg/commitdiff/e9d9ba2a4ddc39e331dd8461b511aa59ec0dc8af
在SyncPostCheckpoint()中避免O(N²)行为。与提交6301c3ada和e9d9ba2a4一样,避免重复执行list_delete_first()操作,因为当有许多文件等待被解除链接时,这样做的代价会很大。这是一个比那些情况稍微大一点的变化。我们必须使列表状态对调用AbsorbSyncRequests()保持有效,因此有必要创建一个“canceled”字段,而不是立即删除PendingUnlinkEntry条目。另外,因为我们可能无法处理所有的条目,所以需要一个新的列表原语list_delete_first_n()。list_delete_first_n()几乎是list_copy_tail(),但它修改了输入List,而不是创建一个新的副本。我发现了后者的一些现有用法,它们可以有效地使用新功能。(可能有更多,但其他调用者看起来可能不应该覆盖输入List。)和以前一样,将补丁补丁到v13。讨论:https://postgr.es/m/CD2F0E7F-9822-45EC-A411-AE56F14DEA9F@amazon.comhttps://git.postgresql.org/pg/commitdiff/65c6cab1365ac33b11a49a2a193f6b3f9c53e487
医生:更精确地描述关系名称之间的冲突。在所有这些对象类型的引用页中,使用诸如“表的名称必须与同一模式中任何其他关系(表、序列、索引、视图、物化视图或外部表)的名称不同”这样的措辞。这里的主要变化是明确地提到了物化视图;尽管其中有几页根本没有提到名字冲突。根据丹尼尔·威斯特曼的建议。讨论:https://postgr.es/m/ZR0P278MB0920D0946509233459AF0DEFD2889@ZR0P278MB0920.CHEP278.PROD.OUTLOOK.COMhttps://git.postgresql.org/pg/commitdiff/af8c580e5cf32bb85dde70083a260c93a1f783eb
Doc:清理一些提到template1而没有提到template0的地方。改进在将template0添加到标准数据库集时没有更新的旧文本。根据卢扎诺夫的建议。讨论:https://postgr.es/m/163583775122.675.3700595100340939507@wrigleys.postgresql.orghttps://git.postgresql.org/pg/commitdiff/7d9ec0754afeabb9f336c5220ef415c3ea27a0b6
修复了ExecInitCoerceToDomain()中的变量寿命。这消除了1ec7679f1中的一个错误:domainval和domainnull本应跨循环迭代,但它们被错误地移动到循环中。这样做的结果只是发出无用的额外EEOP_MAKE_READONLY步骤,所以这不是什么大问题;尽管如此,在引入错误的v13补丁。Ranier Vilela讨论:https://postgr.es/m/CAEudQAqXuhbkaAp-sGH6dR6Nsq7v28_0TPexHOm6FiDYqwQD-w@mail.gmail.comhttps://git.postgresql.org/pg/commitdiff/01fc6527034a6f70ed44a078af8f636b1ab64947
确保datetime和float8值的逻辑复制一致。在walreceiver中,将发布者的相关guc (datstyle, intervalstyle, extra_float_digits)设置为与pg_dump使用的相同的值,并且出于同样的原因:不管接收方的设置如何,我们都需要以相同的方式读取输出。如果不这样做,订阅者就有可能误解传输的值。虽然这显然是一个bug修复,但它也有缺点:将值存储到其他数据类型(如文本)中的订阅者可能会得到与以前不同的结果,并且可能对此感到不高兴。鉴于之前没有抱怨,似乎最好只在HEAD中改变这个,并在v15中把它称为不兼容的改变。Japin Li,根据Sadhuprasad Patro的报道:https://postgr.es/m/CAFF0-CF=D7pc6st-3A9f1JnOt0qmc+BcBPVzD6fLYisKyAjkGA@mail.gmail.comhttps://git.postgresql.org/pg/commitdiff/f3d4019da5d026f2c3fe5bd258becf6fbb6b4673
在hamerkop上盲目尝试沉默SSL编译失败。Buildfarm成员hamerkop在过去几天里一直失败,出现了一些错误,看起来好像OpenSSL的x509相关符号没有被导入到be-secure-openssl.c中。目前还不清楚为什么会这样,但让我们尝试添加一个显式的#include of
unbreak pg_basebackup的MSVC构建。Commit 23a1c6578认为用一个新的变量bobjs重构pg_basebackup/Makefile会很可爱,但是我们的MSVC构建系统对此一无所知。每buildfarm。https://git.postgresql.org/pg/commitdiff/d8bf0a1c1d3429cafb3019f2773e2f3aa68f3b65
第二次尝试在hamerkop上阻止SSL编译失败。经过进一步的调查,问题的原因似乎是我们最近决定开始定义WIN32_LEAN_AND_MEAN。这将导致
禁止通过array_to_tsvector()创建空词素。tsvector数据类型始终禁止词素为空。然而,array_to_tsvector()没有得到这个提示,它将允许空字符串数组元素变成空词素。这可能会导致稍后的转储/恢复失败,更不用说原始禁止背后可能存在的任何语义问题了。但是,其他直接接受纯文本输入作为词素值的函数不需要类似的限制,因为它们只将字符串与现有的tsvector条目匹配。特别地,让ts_delete()拒绝空字符串是一个糟糕的主意,因为这是最方便的方法来清除任何可能通过这个错误进入tsvector列的坏数据。考虑到这一点,让我们也删除tsvector_delete_arr和tsvector_setweight_by_filter中对NULL数组元素的禁止。忽略它们似乎更一致,因为空字符串元素会被忽略。这是一个需要修补的问题,因为这显然是一个bug修复。总的来说,这似乎不像是一个小版本中需要改变的东西。 Jean-Christophe Arnu Discussion:https://postgr.es/m/CAHZmTm1YVndPgUVRoag2WL0w900XcoiivDDj-gTTYBsG25c65A@mail.gmail.comhttps://git.postgresql.org/pg/commitdiff/cbe25dcff73a297adbada9dc1d6cad3df18014e9
盲目尝试修复MSVC pgcrypto构建。提交db7d1a7b0退出Mkvcbuild。Pm的自定义支持构建contrib/pgcrypto,但忽略了通知它该模块现在可以正常构建。至少我猜现在可以正常建造了。但这肯定会导致园丁鸟失败,因为它正在尝试测试一个尚未构建的模块。https://git.postgresql.org/pg/commitdiff/3c2c391dc9f82fae181508ebcc2f7621ffefd024
添加一些关于List函数性能的注释。根据安德烈斯·弗洛因德的建议。讨论:https://postgr.es/m/20211104221248.pgo4h6wvnjl6uvkb@alap3.anarazel.dehttps://git.postgresql.org/pg/commitdiff/27ef132a805c8633ed8bb94ed70be995c681ab1f
Contrib /sslinfo也需要一个修复来让hamerkop高兴。重新排序#include有一点问题,因为libpq/libpq-be.h需要包含
沉默没有初始化的变量的警告。相当多的建造农场的动物警告这一点,田凫实际上是失败的(因为-Werror)。这是一个假阳性的AFAICS,所以不需要做大于零的变量开始。讨论:https://postgr.es/m/YYXJnUxgw9dZKxlX@paquier.xyzhttps://git.postgresql.org/pg/commitdiff/c3ec4f8fe867807613c08fe16789434ab1a74a15
Michael Paquier推:
在REINDEX concurrent中保存opclass参数。从旧索引中获取opclass参数Datums的方法与获取谓词和表达式的方法相同,即直接从系统编目中获取它们。然后将它们复制到新的IndexInfo中