Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vtQZ5-006wl5-1F for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Feb 2026 13:29:03 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vtQZ3-007zWb-2T for pgsql-hackers@arkaria.postgresql.org; Fri, 20 Feb 2026 13:29:01 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vtQZ3-007zWT-1T for pgsql-hackers@lists.postgresql.org; Fri, 20 Feb 2026 13:29:01 +0000 Received: from forward502a.mail.yandex.net ([178.154.239.82]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1vtQYz-00000000Ny0-3Lwr for pgsql-hackers@lists.postgresql.org; Fri, 20 Feb 2026 13:29:00 +0000 Received: from mail-nwsmtp-smtp-production-main-95.vla.yp-c.yandex.net (mail-nwsmtp-smtp-production-main-95.vla.yp-c.yandex.net [IPv6:2a02:6b8:c15:340d:0:640:ad51:0]) by forward502a.mail.yandex.net (Yandex) with ESMTPS id B478B8A0C7; Fri, 20 Feb 2026 16:28:57 +0300 (MSK) Received: by mail-nwsmtp-smtp-production-main-95.vla.yp-c.yandex.net (smtp/Yandex) with ESMTPSA id vScWwooGmOs0-f7YBfQgS; Fri, 20 Feb 2026 16:28:57 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tantorlabs.com; s=mail; t=1771594137; bh=3Saz00ZHxIT89qBY9C8BxSmUqqC0Uq3P7GjJrjrvbD0=; h=In-Reply-To:References:To:Subject:Message-ID:Date:From; b=2dvSNJxe06O65IWEsPB3gzSSixqHCU2+/qeOHo/8ot2n/nzwg6udXU7FcpOoZ7476 FlRCpAZ7irKBU95cHGP6c9da5R3GOBtClNyhxfOjkOi17Rx264hz46BafpZIMH4vI6 mndQjD8ciVkWplm+VotWGJiHdh7sHJ8Vgz3jRXEQ= Authentication-Results: mail-nwsmtp-smtp-production-main-95.vla.yp-c.yandex.net; dkim=pass header.i=@tantorlabs.com Content-Type: multipart/mixed; boundary="------------dRZlSseqUHJ6QRCSeyimJiO5" Message-ID: Date: Fri, 20 Feb 2026 16:28:57 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Reduce planning time for large NOT IN lists containing NULL From: Ilia Evdokimov To: David Geier , PostgreSQL Developers References: <52596e08-0902-475b-ad0f-265ec6918f19@gmail.com> <7791ec74-369d-48c7-969c-cf4ad18024f2@tantorlabs.com> Content-Language: en-US In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------dRZlSseqUHJ6QRCSeyimJiO5 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 2/20/26 16:25, Ilia Evdokimov wrote: > I've moved the NULL check higher, placing it immediately after > DatumGetArrayTypeP(). This allows us to detect the presence of NULL > elements before decontructing the array. > Sorry, I forgot to attach the patch in my previous mail. Attaching it now. -- Best regards. Ilia Evdokimov, Tantor Labs LLC, https://tantorlabs.com/ --------------dRZlSseqUHJ6QRCSeyimJiO5 Content-Type: text/x-patch; charset=UTF-8; name="v3-0001-Reduce-planning-time-for-large-NOT-IN-lists-conta.patch" Content-Disposition: attachment; filename*0="v3-0001-Reduce-planning-time-for-large-NOT-IN-lists-conta.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA5MDllNDY4M2E0MDBmMGFhNjEzZmM3N2ZhNGJiNmYwMjA4Yzc1Zjc4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBJbGlhIEV2ZG9raW1vdiA8aWx5YS5ldmRva2ltb3ZA dGFudG9ybGFicy5ydT4KRGF0ZTogRnJpLCAyMCBGZWIgMjAyNiAxNjoxNDoxMiArMDMwMApT dWJqZWN0OiBbUEFUQ0ggdjNdIFJlZHVjZSBwbGFubmluZyB0aW1lIGZvciBsYXJnZSBOT1Qg SU4gbGlzdHMgY29udGFpbmluZwogTlVMTAoKRm9yIHggPD4gQUxMICguLi4pIC8geCBOT1Qg SU4gKC4uLiksIHRoZSBwcmVzZW5jZSBvZiBhIE5VTEwgZWxlbWVudAptYWtlcyB0aGUgc2Vs ZWN0aXZpdHkgMC4wLgoKVGhlIHBsYW5uZXIgY3VycmVudGx5IHN0aWxsIGl0ZXJhdGVzIG92 ZXIgYWxsIGVsZW1lbnRzIGFuZCBjb21wdXRlcwpwZXItZWxlbWVudCBzZWxlY3Rpdml0eSwg ZXZlbiB0aG91Z2ggdGhlIGZpbmFsIHJlc3VsdCBpcyBrbm93bi4KCkFkZCBhbiBlYXJseSBO VUxMIGNoZWNrIGZvciBjb25zdGFudCBhcnJheXMgYW5kIGltbWVkaWF0ZWx5IHJldHVybgow LjAgdW5kZXIgQUxMIHNlbWFudGljcy4KClRoaXMgcmVkdWNlcyBwbGFubmluZyB0aW1lIGZv ciBsYXJnZSBOT1QgSU4gLyA8PiBBTEwgbGlzdHMgd2l0aG91dApjaGFuZ2luZyBzZW1hbnRp Y3MuCi0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3NlbGZ1bmNzLmMgfCA5ICsrKysrKysr KwogMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3V0aWxzL2FkdC9zZWxmdW5jcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3Nl bGZ1bmNzLmMKaW5kZXggMjlmZWM2NTU1OTMuLjYyNDM1NmEzMGIyIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9hZHQvc2VsZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9hZHQvc2VsZnVuY3MuYwpAQCAtMjAxOCw2ICsyMDE4LDExIEBAIHNjYWxhcmFycmF5c2Vs KFBsYW5uZXJJbmZvICpyb290LAogCQlpZiAoYXJyYXlpc251bGwpCQkvKiBxdWFsIGNhbid0 IHN1Y2NlZWQgaWYgbnVsbCBhcnJheSAqLwogCQkJcmV0dXJuIChTZWxlY3Rpdml0eSkgMC4w OwogCQlhcnJheXZhbCA9IERhdHVtR2V0QXJyYXlUeXBlUChhcnJheWRhdHVtKTsKKworCQkv KiBTZWxlY3Rpdml0eSBvZiAiV0hFUkUgeCBOT1QgSU4gKE5VTEwsIC4uLiApIiBpcyBhbHdh eXMgMCAqLworCQlpZiAoIXVzZU9yICYmIEFSUl9IQVNOVUxMKGFycmF5dmFsKSkKKwkJCXJl dHVybiAoU2VsZWN0aXZpdHkpIDAuMDsKKwogCQlnZXRfdHlwbGVuYnl2YWxhbGlnbihBUlJf RUxFTVRZUEUoYXJyYXl2YWwpLAogCQkJCQkJCSAmZWxtbGVuLCAmZWxtYnl2YWwsICZlbG1h bGlnbik7CiAJCWRlY29uc3RydWN0X2FycmF5KGFycmF5dmFsLApAQCAtMjExNSw2ICsyMTIw LDEwIEBAIHNjYWxhcmFycmF5c2VsKFBsYW5uZXJJbmZvICpyb290LAogCQkJTGlzdAkgICAq YXJnczsKIAkJCVNlbGVjdGl2aXR5IHMyOwogCisJCQkvKiBTZWxlY3Rpdml0eSBvZiAiV0hF UkUgeCBOT1QgSU4gKE5VTEwsIC4uLiApIiBpcyBhbHdheXMgMCAqLworCQkJaWYgKCF1c2VP ciAmJiBJc0EoZWxlbSwgQ29uc3QpICYmICgoQ29uc3QgKikgZWxlbSktPmNvbnN0aXNudWxs KQorCQkJCXJldHVybiAoU2VsZWN0aXZpdHkpIDAuMDsKKwogCQkJLyoKIAkJCSAqIFRoZW9y ZXRpY2FsbHksIGlmIGVsZW0gaXNuJ3Qgb2Ygbm9taW5hbF9lbGVtZW50X3R5cGUgd2Ugc2hv dWxkCiAJCQkgKiBpbnNlcnQgYSBSZWxhYmVsVHlwZSwgYnV0IGl0IHNlZW1zIHVubGlrZWx5 IHRoYXQgYW55IG9wZXJhdG9yCi0tIAoyLjM0LjEKCg== --------------dRZlSseqUHJ6QRCSeyimJiO5--