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 1w3IwI-0015xs-1M for pgsql-committers@arkaria.postgresql.org; Thu, 19 Mar 2026 19:21:50 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w3IwG-002BDh-2u for pgsql-committers@arkaria.postgresql.org; Thu, 19 Mar 2026 19:21:49 +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 1w3IwG-002BDZ-2D for pgsql-committers@lists.postgresql.org; Thu, 19 Mar 2026 19:21:49 +0000 Received: from mahout.postgresql.org ([2001:4800:3e1:1::227]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1w3IwE-000000003aM-1K79 for pgsql-committers@lists.postgresql.org; Thu, 19 Mar 2026 19:21:48 +0000 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 1w3IwD-001cj0-0r for pgsql-committers@lists.postgresql.org; Thu, 19 Mar 2026 19:21:45 +0000 Received: from localhost ([127.0.0.1] helo=gemulon.postgresql.org) by gemulon.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w3IwB-000XHJ-3A for pgsql-committers@lists.postgresql.org; Thu, 19 Mar 2026 19:21:44 +0000 Content-Type: multipart/mixed; boundary="===============3739218907756483512==" MIME-Version: 1.0 From: Tom Lane To: pgsql-committers@lists.postgresql.org Subject: pgsql: Improve hash join's handling of tuples with null join keys. X-Auto-Response-Suppress: All Auto-Submitted: auto-generated Message-Id: Date: Thu, 19 Mar 2026 19:21:44 +0000 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --===============3739218907756483512== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 SW1wcm92ZSBoYXNoIGpvaW4ncyBoYW5kbGluZyBvZiB0dXBsZXMgd2l0aCBudWxsIGpvaW4ga2V5 cy4KCkluIGEgcGxhaW4gam9pbiwgd2UgY2FuIGp1c3Qgc3VtbWFyaWx5IGRpc2NhcmQgYW4gaW5w dXQgdHVwbGUKd2l0aCBudWxsIGpvaW4ga2V5KHMpLCBzaW5jZSBpdCBjYW5ub3QgbWF0Y2ggYW55 dGhpbmcgZnJvbQp0aGUgb3RoZXIgc2lkZSBvZiB0aGUgam9pbiAoYXNzdW1pbmcgYSBzdHJpY3Qg am9pbiBvcGVyYXRvcikuCkhvd2V2ZXIsIGlmIHRoZSB0dXBsZSBjb21lcyBmcm9tIHRoZSBvdXRl ciBzaWRlIG9mIGFuIG91dGVyIGpvaW4KdGhlbiB3ZSBoYXZlIHRvIGVtaXQgaXQgd2l0aCBudWxs LWV4dGVuc2lvbiBvZiB0aGUgb3RoZXIgc2lkZS4KClVwIHRvIG5vdywgaGFzaCBqb2lucyBkaWQg dGhhdCBieSBpbnNlcnRpbmcgdGhlIHR1cGxlIGludG8gdGhlIGhhc2gKdGFibGUgYXMgdGhvdWdo IGl0IHdlcmUgYSBub3JtYWwgdHVwbGUuICBUaGlzIGlzIHVubmVjZXNzYXJpbHkKaW5lZmZpY2ll bnQgdGhvdWdoLCBzaW5jZSB0aGUgcmVxdWlyZWQgcHJvY2Vzc2luZyBpcyBmYXIgc2ltcGxlciB0 aGFuCmZvciBhIHBvdGVudGlhbGx5LW1hdGNoYWJsZSB0dXBsZS4gIFdvcnNlLCBpZiB0aGVyZSBh cmUgYSBsb3Qgb2Ygc3VjaAp0dXBsZXMgdGhleSB3aWxsIGJsb2F0IHRoZSBoYXNoIGJ1Y2tldCB0 aGV5IGdvIGludG8sIHBvc3NpYmx5IGNhdXNpbmcKdXNlbGVzcyByZXBlYXRlZCBhdHRlbXB0cyB0 byBzcGxpdCB0aGF0IGJ1Y2tldCBvciBpbmNyZWFzZSB0aGUgbnVtYmVyCm9mIGJhdGNoZXMuICBX ZSBoYXZlIGEgcmVwb3J0IG9mIGEgbGFyZ2Ugam9pbiB2YWlubHkgY3JlYXRpbmcgbWFueQp0aG91 c2FuZHMgb2YgYmF0Y2hlcyB3aGVuIGZhY2VkIHdpdGggc3VjaCBpbnB1dC4KClRoaXMgcGF0Y2gg aW1wcm92ZXMgdGhlIHNpdHVhdGlvbiBieSBrZWVwaW5nIHN1Y2ggdHVwbGVzIG91dCBvZiB0aGUK aGFzaCB0YWJsZSBhbHRvZ2V0aGVyLCBpbnN0ZWFkIHB1c2hpbmcgdGhlbSBpbnRvIGEgc2VwYXJh dGUgdHVwbGVzdG9yZQpmcm9tIHdoaWNoIHdlIHJldHVybiB0aGVtIGxhdGVyLiAgKE9uZSBtaWdo dCBjb25zaWRlciB0cnlpbmcgdG8gcmV0dXJuCnRoZW0gaW1tZWRpYXRlbHk7IGJ1dCB0aGF0IHdv dWxkIHJlcXVpcmUgc3Vic3RhbnRpYWwgcmVmYWN0b3JpbmcsIGFuZAppdCBkb2Vzbid0IHdvcmsg YW55d2F5IGZvciBjYXNlcyB3aGVyZSB3ZSByZXNjYW4gYW4gdW5tb2RpZmllZCBoYXNoCnRhYmxl LikgIFRoaXMgd29ya3MgZXZlbiBpbiBwYXJhbGxlbCBoYXNoIGpvaW5zLCBiZWNhdXNlIHdoaWNo ZXZlcgp3b3JrZXIgcmVhZHMgYSBudWxsLWtleWVkIHR1cGxlIGNhbiBqdXN0IHJldHVybiBpdDsg dGhlcmUncyBubyBuZWVkCmZvciBjb25zdWx0YXRpb24gd2l0aCBvdGhlciB3b3JrZXJzLiAgVGh1 cyB0aGUgdHVwbGVzdG9yZXMgYXJlIGxvY2FsCnN0b3JhZ2UgZXZlbiBpbiBhIHBhcmFsbGVsIGpv aW4uCgpBIHByZS1leGlzdGluZyBidWdsZXQgdGhhdCBJIG5vdGljZWQgd2hpbGUgYW5hbHl6aW5n IHRoZSBjb2RlJ3MKYmVoYXZpb3IgaXMgdGhhdCBFeGVjSGFzaFJlbW92ZU5leHRTa2V3QnVja2V0 IGZhaWxzIHRvIGRlY3JlbWVudApoYXNodGFibGUtPnNrZXdUdXBsZXMgZm9yIHR1cGxlcyBtb3Zl ZCBpbnRvIHRoZSBtYWluIGhhc2ggdGFibGUKZnJvbSB0aGUgc2tldyBoYXNoIHRhYmxlLiAgVGhp cyBpbnZhbGlkYXRlcyBFeGVjSGFzaFRhYmxlSW5zZXJ0J3MKY2FsY3VsYXRpb24gb2YgdGhlIG51 bWJlciBvZiBtYWluLWhhc2gtdGFibGUgdHVwbGVzLCB0aG91Z2ggcHJvYmFibHkKbm90IGJ5IGEg bG90IHNpbmNlIHdlIGV4cGVjdCB0aGUgc2tldyB0YWJsZSB0byBiZSBzbWFsbCByZWxhdGl2ZQp0 byB0aGUgbWFpbiBvbmUuICBOb25ldGhlbGVzcywgbGV0J3MgZml4IHRoYXQgdG9vIHdoaWxlIHdl J3JlIGhlcmUuCgpCdWc6ICMxODkwOQpSZXBvcnRlZC1ieTogU2VyZ2V5IEtvcG9zb3YgPFNlcmdl eS5Lb3Bvc292QGVkLmFjLnVrPgpBdXRob3I6IFRvbSBMYW5lIDx0Z2xAc3NzLnBnaC5wYS51cz4K UmV2aWV3ZWQtYnk6IENoYW8gTGkgPGxpLmV2YW4uY2hhb0BnbWFpbC5jb20+CkRpc2N1c3Npb246 IGh0dHBzOi8vcG9zdGdyLmVzL20vMzA2MTg0NS4xNzQ2NDg2NzE0QHNzcy5wZ2gucGEudXMKCkJy YW5jaAotLS0tLS0KbWFzdGVyCgpEZXRhaWxzCi0tLS0tLS0KaHR0cHM6Ly9naXQucG9zdGdyZXNx bC5vcmcvcGcvY29tbWl0ZGlmZi8xODExZjFhZjk4ZmIyMzdmZGQ1YWRiNTg4Y2Q0YjU3YzQzM2I3 NWY4CgpNb2RpZmllZCBGaWxlcwotLS0tLS0tLS0tLS0tLQpzcmMvYmFja2VuZC9leGVjdXRvci9l eGVjRXhwci5jICAgICAgICAgfCAgMjIgKy0tCnNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVIYXNo LmMgICAgICAgICB8ICA5NiArKysrKysrKy0tLQpzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSGFz aGpvaW4uYyAgICAgfCAyODMgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0Kc3JjL2Jh Y2tlbmQvdXRpbHMvc29ydC90dXBsZXN0b3JlLmMgICAgIHwgIDMyICsrKysKc3JjL2luY2x1ZGUv ZXhlY3V0b3IvZXhlY3V0b3IuaCAgICAgICAgIHwgICAyICstCnNyYy9pbmNsdWRlL2V4ZWN1dG9y L2hhc2hqb2luLmggICAgICAgICB8ICAyMiArKy0Kc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZUhh c2guaCAgICAgICAgIHwgICAxICsKc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAg ICAgIHwgICA4ICsKc3JjL2luY2x1ZGUvdXRpbHMvdHVwbGVzdG9yZS5oICAgICAgICAgIHwgICAz ICsKc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qb2luLm91dCAgICAgIHwgICA3ICstCnNyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvam9pbl9oYXNoLm91dCB8ICAxNSArLQpzcmMvdGVzdC9yZWdy ZXNzL3NxbC9qb2luLnNxbCAgICAgICAgICAgfCAgIDQgKy0Kc3JjL3Rlc3QvcmVncmVzcy9zcWwv am9pbl9oYXNoLnNxbCAgICAgIHwgICAxICsKMTMgZmlsZXMgY2hhbmdlZCwgNDE0IGluc2VydGlv bnMoKyksIDgyIGRlbGV0aW9ucygtKQoK --===============3739218907756483512==--