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 1wwV4r-0020q9-00 for pgsql-committers@arkaria.postgresql.org; Wed, 19 Aug 2026 01:26:49 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wwV3p-000eoA-2b for pgsql-committers@arkaria.postgresql.org; Wed, 19 Aug 2026 01:25:46 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wwV3U-000dAC-2m for pgsql-committers@lists.postgresql.org; Wed, 19 Aug 2026 01:25:26 +0000 Received: from mahout.postgresql.org ([2001:4800:3e1:1::227]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1wwV3T-00000001JMa-212j for pgsql-committers@lists.postgresql.org; Wed, 19 Aug 2026 01:25:25 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=postgresql.org; s=20171124; h=Date:Message-Id:Subject:To:From:MIME-Version: Content-Type:Sender:Reply-To:Cc:Content-Transfer-Encoding:Content-ID: Content-Description:In-Reply-To:References; bh=LyJeeoMbp+9E1cihFtPV8fQMowM15fahbPkjoO6oWRo=; b=EyNipRQF3sQR6dqeJTCJe4lZQo ZN+OPG9MbDQoEL7uxBbkekHSkLpbzxXBcqu0XgnVNZ7sxZzvh1RJyfifQQb56KyQx+VVlofaboiT3 21XYDCrz61BTyL+tdCMx21wrTZtlgSn6U+W0w/VJYiXCKl1VqqMwCueCp7/BLKp5gXaUTrNiMllNt TTQ9J6tu/ScOStezmUEThNV9VYtzcnAmfJRyLwOsBk9legF+i5WK+A3pokz3PF2pj07mLU5d4Lgbs BRyzt8eWEFqjHXLpr2zY2kMAAsyNJx2r3rgLI6cJZPD93MemnSPmhRzmkIVvuXuvWxrw7XPVMr4XW eaXHu7Ug==; Received: from gemulon.postgresql.org ([2001:4800:3e1:1::198]) by mahout.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wwV3T-0040kh-07 for pgsql-committers@lists.postgresql.org; Wed, 19 Aug 2026 01:25:23 +0000 Received: from localhost ([127.0.0.1] helo=gemulon.postgresql.org) by gemulon.postgresql.org with esmtp (Exim 4.98.2) (envelope-from ) id 1wwV3R-000000018cN-1Zxn for pgsql-committers@lists.postgresql.org; Wed, 19 Aug 2026 01:25:22 +0000 Content-Type: multipart/mixed; boundary="===============1877278845464333818==" MIME-Version: 1.0 From: Richard Guo To: pgsql-committers@lists.postgresql.org Subject: pgsql: Reduce outer joins to anti joins for whole-row IS NULL tests X-Auto-Response-Suppress: All Auto-Submitted: auto-generated Message-Id: Date: Wed, 19 Aug 2026 01:25:22 +0000 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --===============1877278845464333818== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 UmVkdWNlIG91dGVyIGpvaW5zIHRvIGFudGkgam9pbnMgZm9yIHdob2xlLXJvdyBJUyBOVUxMIHRl c3RzCgpyZWR1Y2Vfb3V0ZXJfam9pbnMoKSByZWNvZ25pemVzICJXSEVSRSBiLnogSVMgTlVMTCIg YWJvdmUgYW4gb3V0ZXIKam9pbiBhcyBhbiBhbnRpLWpvaW4gY29uZGl0aW9uLCBidXQgbm90IHRo ZSB3aG9sZS1yb3cgIldIRVJFIGIgSVMKTlVMTCIsIHdoaWNoIGlzIGEgbmF0dXJhbCB3YXkgdG8g YXNrIGZvciBhbiBhbnRpLWpvaW4gd2l0aG91dCBuYW1pbmcgYQpzcGVjaWZpYyBjb2x1bW4uICBU ZWFjaCBpdCB0byByZWNvZ25pemUgdGhlIHdob2xlLXJvdyBmb3JtIHRvby4KCkEgcm93IHRoYXQg dGhlIGpvaW4gbnVsbC1leHRlbmRzIGhhcyBhbGwgb2YgYidzIGNvbHVtbnMgc2V0IHRvIE5VTEws CnNvIGl0IHNhdGlzZmllcyAiYiBJUyBOVUxMIi4gIEEgbWF0Y2hlZCByb3cgc2F0aXNmaWVzIHRo ZSB0ZXN0IG9ubHkgaWYKaXRzIGNvbHVtbnMgaGFwcGVuIHRvIGJlIGFsbCBOVUxMLiAgSGVuY2Ug cHJvdmluZyBhbnkgb25lIGNvbHVtbiBvZiBiCm5vbi1udWxsIGluIG1hdGNoaW5nIHJvd3MgcnVs ZXMgb3V0IGV2ZXJ5IG1hdGNoZWQgcm93LCBsZWF2aW5nIG9ubHkKbnVsbC1leHRlbmRlZCByb3dz OiBleGFjdGx5IGFudGktam9pbiBzZW1hbnRpY3MuICBUaGlzIG1pcnJvcnMgdGhlCnNpbmdsZS1j b2x1bW4gY2FzZSwgYW5kIHRoZSBzYW1lIHByb29mcyBhcHBseTogYSBOT1QgTlVMTCB0YWJsZQpj b25zdHJhaW50LCBhIHN0cmljdCBqb2luIGNsYXVzZSAoZm9yIExFRlQgam9pbnMpLCBvciBzdHJp Y3QgcXVhbHMKd2l0aGluIHRoZSByZWxhdGlvbidzIHN1YnRyZWUuICBCZWNhdXNlIGFueSBvbmUg Y29sdW1uIHN1ZmZpY2VzLCB0aGUKd2hvbGUtcm93IHRlc3QgcmVkdWNlcyBpbiBhIHN0cmljdCBz dXBlcnNldCBvZiB0aGUgY2FzZXMgYQpzaW5nbGUtY29sdW1uIHRlc3QgZG9lcy4KClRvIGltcGxl bWVudCB0aGlzLCBmaW5kX2ZvcmNlZF9udWxsX3ZhcnMoKSBub3cgcmVwb3J0cyBhIHdob2xlLXJv dyBWYXIKdGVzdGVkIHdpdGggcm93LWZvcm1hdCBJUyBOVUxMIGFzIGEgdmFyYXR0bm8temVybyBl bnRyeSBtZWFuaW5nIHRoYXQKYWxsIG9mIHRoZSByZWxhdGlvbidzIGNvbHVtbnMgYXJlIGZvcmNl ZCBudWxsLiAgUm93LWZvcm1hdCB0ZXN0cyBvbgpvcmRpbmFyeSBjb21wb3NpdGUtdHlwZSBjb2x1 bW5zIHJlbWFpbiBleGNsdWRlZCwgc2luY2Ugc3VjaCBhIHRlc3QKZG9lcyBub3QgZm9yY2UgdGhl IGNvbHVtbiBudWxsOiBpdCBpcyBhbHNvIHRydWUgd2hlbiB0aGUgY29sdW1uIGlzIGEKbm9uLW51 bGwgcm93IHdob3NlIGZpZWxkcyBhcmUgYWxsIE5VTEwuICBUaGUgcHJvb2YgZnVuY3Rpb25zIGlu CnJlZHVjZV9vdXRlcl9qb2lucygpIHRyZWF0IGEgd2hvbGUtcm93IGVudHJ5IGFjY29yZGluZ2x5 OiBpdCBpcwpyZWZ1dGVkIGJ5IHByb3ZpbmcgYW55IG9uZSBjb2x1bW4gb2YgaXRzIHJlbGF0aW9u IG5vbi1udWxsLiAgQSBtYXRjaApvbiB0aGUgd2hvbGUtcm93IGF0dHJpYnV0ZSBpdHNlbGYgcHJv dmVzIG5vdGhpbmcsIGJlY2F1c2UgYSBub24tbnVsbApjb21wb3NpdGUgZGF0dW0gY2FuIHN0aWxs IGhhdmUgYWxsIGNvbHVtbnMgTlVMTCwgc28gdGhlIHBlci1jb2x1bW4KbWF0Y2hpbmcgbm93IGV4 cGxpY2l0bHkgZXhjbHVkZXMgdGhhdCBhdHRyaWJ1dGUuCgpBdXRob3I6IFJpY2hhcmQgR3VvIDxn dW9mZW5nbGludXhAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogd2VuaHVpIHFpdSA8cWl1d2VuaHVp ZnhAZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBTWJXczQ5SDlr aGYrMUd3eXpEMFRZYWtzNmNFLU9VKzFtYlVpT24zZ1pTb0JpTzd6Z0BtYWlsLmdtYWlsLmNvbQoK QnJhbmNoCi0tLS0tLQptYXN0ZXIKCkRldGFpbHMKLS0tLS0tLQpodHRwczovL2dpdC5wb3N0Z3Jl c3FsLm9yZy9wZy9jb21taXRkaWZmLzAyMTE5ZDZjODdlMjBiZDE3ZjliOTRiMDQyMGMyNzEzZDYy Mjc1YmMKCk1vZGlmaWVkIEZpbGVzCi0tLS0tLS0tLS0tLS0tCnNyYy9iYWNrZW5kL29wdGltaXpl ci9wcmVwL3ByZXBqb2ludHJlZS5jIHwgMTAxICsrKysrKysrKysrKysrKy0tLS0Kc3JjL2JhY2tl bmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jICAgICAgfCAgMTkgKysrLQpzcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL2pvaW4ub3V0ICAgICAgICB8IDE1NiArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKc3JjL3Rlc3QvcmVncmVzcy9zcWwvam9pbi5zcWwgICAgICAgICAgICAgfCAgNjAg KysrKysrKysrKysrCjQgZmlsZXMgY2hhbmdlZCwgMzE0IGluc2VydGlvbnMoKyksIDIyIGRlbGV0 aW9ucygtKQoK --===============1877278845464333818==--