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 1vfckt-003Uit-0x for pgsql-hackers@arkaria.postgresql.org; Tue, 13 Jan 2026 11:40:11 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vfcks-004dtQ-18 for pgsql-hackers@arkaria.postgresql.org; Tue, 13 Jan 2026 11:40:10 +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 1vfcjq-004Z0p-2y for pgsql-hackers@lists.postgresql.org; Tue, 13 Jan 2026 11:39:07 +0000 Received: from mail-qt1-x841.google.com ([2607:f8b0:4864:20::841]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vfcjo-000C0k-2a for pgsql-hackers@lists.postgresql.org; Tue, 13 Jan 2026 11:39:06 +0000 Received: by mail-qt1-x841.google.com with SMTP id d75a77b69052e-4f1ab2ea5c1so109664811cf.3 for ; Tue, 13 Jan 2026 03:39:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768304345; x=1768909145; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=nGPUF1XidUnqDguAo2dOi8z++dwRuI9IQBDDJ61t5G8=; b=Cnzxsu4wSQS2aK+WOfo2arDPwJV8ZVCD5hH/r319j63suPT63zhNWzHGClnjoFua4U Kdo8G6XMwXmdHH13NMGbuBVCJAZfs0RjQBIcxDjXTkbXTSnbysROBz3UdbO3ZvkyRHq7 q53FCIUnEl+JRb8Gg+y6XIyqgs2DnrU23w4dxTZ0sPcX0smwBju4QpNequmDBW8ERVX+ jIuWoTLxS8sEQC6J9Hp/P+5Vg0AZjq1/BFNLhlhikMUTIU2rIcNf2V/kxf9QNQdIUe6i Cz6KosKDqAnSXV+G1gtbxIss9dYOJnCQP1x5Oo9wM0wlt+FVMwNxdW4rSGP1lb9VkJNx I9ZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768304345; x=1768909145; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=nGPUF1XidUnqDguAo2dOi8z++dwRuI9IQBDDJ61t5G8=; b=R/faG/8wGHNavf0OMNpfxGO+76+iZYInN3OyHjc8f843P4DW9GuX3niXCphVw2YH4r e8LU1pRE3Mz2yP/3LzV8qzi7EKvsifCZdl9JDTxF/SKHg7ytw8kl3GhWKQwDvrNfWDbO CjI2WPPeI5NAgW+3gEdYNfIJUv7thRIuANZR49q3ygDGiXDZjCiouR+yljMZER/ro+Lv k+5oMOaxKVz+C38Jv5f86XDrcq8FKpjGy4EA87nx2CMoH3HQbJNU+DLHQGIa60Iz/f1n 3HQdKGjeDQPq3x6SFVSrCOj5Q4TtaKPXi5Dm6S9D74J30DgWq2t45nP+3lXZQNIjuVW7 ud7g== X-Forwarded-Encrypted: i=1; AJvYcCXEYbXsEs+pxRr85kqittI9PGh9QrPyxN8X+nQJO8M1CllvsTpD7oG5U5O+gy64fYb/M4+R0OrL4Pe5Imo7@lists.postgresql.org X-Gm-Message-State: AOJu0YydieQLOQSWDgGbGGJvakvuguXV/rk61mmFNL7RRSi8M+iEa0si iTH/phOAP8uRGxN/+wo2OzxfPQN95Iozqmy07XO+0Si6upywVxhva53pWXK5fdVQwBmaanCD52t Q8eyqNT8OZU5T+Q357TNHbLu+pxR9VrM= X-Gm-Gg: AY/fxX4J6UM3iIb+yWsGkU/aKE/ivWvvPz/xNxlO3xFcTyugMD7ivtWIUjMhE2XSzif mFidTIxUnHpY1bFfoTnFwzA3HSNqbL75O2NVWbNA4P98I3iu1YyRSm+RAtMw35inKZKKVN8KoNf aR41SssXMb4lDNBSSDXLuu7IKnp0aqvTSOBdL/d1ijX+iuYS1FKVIiUQPqHpaWq3Nqmo0lW7Clr 3QJFUPI1wMDUQyUfqROIpovakQkG8LHnzmmRqgLyN9O8vxVWkiVV5WNY3AAAOm0C8INgJLDuyq9 5RxPDlZp69iJtoh0Gae4dn81EhUq5ayO5EkSEZs+fFsQkTLgi5RJ/ZjLvl3izFah7Fsz2FUrYMw de780af9CKF/OB0S+cMktVFcu1Q== X-Google-Smtp-Source: AGHT+IFSXqkcGzMerGeyBE+Tp85UNt37/sux5q87XYqW6Ocb5eZ0NYLIArbHLoTgPTetByaWnjO6Tz8UjkhA1uMIzTM= X-Received: by 2002:a05:622a:40ce:b0:4ee:4214:31ff with SMTP id d75a77b69052e-4ffb484b02fmr312587191cf.13.1768304344738; Tue, 13 Jan 2026 03:39:04 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: John Naylor Date: Tue, 13 Jan 2026 18:38:51 +0700 X-Gm-Features: AZwV_QisYbsnHynrcua0VDOn3Q5ifMWyiXnQaYNZfGT1louNMvy48b-f3zHES5w Message-ID: Subject: Re: pg_plan_advice To: Robert Haas Cc: Lukas Fittl , Jacob Champion , Dian Fay , Matheus Alcantara , Jakub Wartak , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000530e8906484370e1" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000530e8906484370e1 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Jan 13, 2026 at 12:14=E2=80=AFAM Robert Haas wrote: > Here's v9. Changes: This is perhaps the least interesting part of 0005, but since I committed this API, I thought I'd chime in: + /* alias_name may not be NULL */ + sp_len =3D fasthash_accum_cstring(&hs, key.alias_name); + + /* partition_name and plan_name, however, can be NULL */ + if (key.partition_name !=3D NULL) + sp_len +=3D fasthash_accum_cstring(&hs, key.partition_name); + if (key.plan_name !=3D NULL) + sp_len +=3D fasthash_accum_cstring(&hs, key.plan_name); It looks like it would be helpful if fasthash_accum_cstring just returned zero when given a NULL string, as in the attached. We could also do something like add a large number to the hash, but I'm not sure that's necessary. + /* + * hashfn_unstable.h recommends using string length as tweak. It's not + * clear to me what to do if there are multiple strings, so for now I'm + * just using the total of all of the lengths. + */ + return fasthash_final32(&hs, sp_len); Sounds reasonable, so the patch also documents that. -- John Naylor Amazon Web Services --000000000000530e8906484370e1 Content-Type: application/octet-stream; name="fasthash-zero-len.patch.nocfbot" Content-Disposition: attachment; filename="fasthash-zero-len.patch.nocfbot" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mkcikd9i0 ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1vbi9oYXNoZm5fdW5zdGFibGUuaCBiL3NyYy9p bmNsdWRlL2NvbW1vbi9oYXNoZm5fdW5zdGFibGUuaAppbmRleCA0Mjg5MzZiOGI2NC4uZjE4Y2I0 YWZlMGEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1vbi9oYXNoZm5fdW5zdGFibGUuaAor KysgYi9zcmMvaW5jbHVkZS9jb21tb24vaGFzaGZuX3Vuc3RhYmxlLmgKQEAgLTg2LDcgKzg2LDgg QEAKICAqIEJ5IGhhbmRsaW5nIHRoZSB0ZXJtaW5hdG9yIG9uLXRoZS1mbHksIHdlIGNhbiBhdm9p ZCBuZWVkaW5nIGEgc3RybGVuKCkKICAqIGNhbGwgdG8gdGVsbCB1cyBob3cgbWFueSBieXRlcyB0 byBoYXNoLiBFeHBlcmltZW50YXRpb24gaGFzIGZvdW5kIHRoYXQKICAqIFNNSGFzaGVyIGZhaWxz IHVubGVzcyB3ZSBpbmNvcnBvcmF0ZSB0aGUgbGVuZ3RoLCBzbyBpdCBpcyBwYXNzZWQgdG8KLSAq IHRoZSBmaW5hbGl6ZXIgYXMgYSB0d2Vhay4KKyAqIHRoZSBmaW5hbGl6ZXIgYXMgYSB0d2Vhay4g V2hlbiBoYXNoaW5nIG11bHRpcGxlIHN0cmluZ3MsIGl0IGlzCisgKiByZWNvbW1lbmRlZCB0byBw YXNzIHRoZSB0b3RhbCBsZW5ndGggb2YgdGhlIGhhc2hlZCBzdHJpbmdzLgogICovCiAKIApAQCAt MjkxLDEwICsyOTIsMTMgQEAgZmFzdGhhc2hfYWNjdW1fY3N0cmluZyhmYXN0aGFzaF9zdGF0ZSAq aHMsIGNvbnN0IGNoYXIgKnN0cikKICNpZiBTSVpFT0ZfVk9JRF9QID49IDgKIAogCXNpemVfdAkJ bGVuOwotI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKLQlzaXplX3QJCWxlbl9jaGVjazsKLQlm YXN0aGFzaF9zdGF0ZSBoc19jaGVjazsKKwlzaXplX3QJCWxlbl9jaGVjayBQR19VU0VEX0ZPUl9B U1NFUlRTX09OTFk7CisJZmFzdGhhc2hfc3RhdGUgaHNfY2hlY2sgUEdfVVNFRF9GT1JfQVNTRVJU U19PTkxZOworCisJaWYgKHN0ciA9PSBOVUxMKQorCQlyZXR1cm4gMDsKIAorI2lmZGVmIFVTRV9B U1NFUlRfQ0hFQ0tJTkcKIAltZW1jcHkoJmhzX2NoZWNrLCBocywgc2l6ZW9mKGZhc3RoYXNoX3N0 YXRlKSk7CiAJbGVuX2NoZWNrID0gZmFzdGhhc2hfYWNjdW1fY3N0cmluZ191bmFsaWduZWQoJmhz X2NoZWNrLCBzdHIpOwogI2VuZGlmCg== --000000000000530e8906484370e1--