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 1wCOWB-001wBe-0y for pgsql-committers@arkaria.postgresql.org; Mon, 13 Apr 2026 21:08:28 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wCOW8-008khY-2M for pgsql-committers@arkaria.postgresql.org; Mon, 13 Apr 2026 21:08:25 +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 1wCOW8-008khP-0n for pgsql-committers@lists.postgresql.org; Mon, 13 Apr 2026 21:08:25 +0000 Received: from mail-oi1-x22a.google.com ([2607:f8b0:4864:20::22a]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wCOW6-00000000rjZ-2cwP for pgsql-committers@lists.postgresql.org; Mon, 13 Apr 2026 21:08:24 +0000 Received: by mail-oi1-x22a.google.com with SMTP id 5614622812f47-471618e20a5so2513620b6e.1 for ; Mon, 13 Apr 2026 14:08:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20251104.gappssmtp.com; s=20251104; t=1776114502; x=1776719302; darn=lists.postgresql.org; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:from:to:cc:subject:date:message-id:reply-to; bh=GiozcQjmM6fhXANnSGQ4KY5OtlEqFQGjBd7fWaYdDaM=; b=h1cKL+kj9Pe0mTlrVpICmthv783SxmnqSapkKjI/EP8QBYYvRe/d4MXvaw2ZmMBHQ8 ubSWCTaUxKZqHMW55kQd1Rw0N8LDc8skx3N2Ppea3JZnYkKeyjqehmpBlNM7J3QxFlCO 0gAw32L3WprlMUN50U1iuHr7E7UOcDjHzEOUpn7KVnYD0JP8G/LdX4tUPlIqR50XyoMw L7CCYPFfQN7tgVYYEdYVeHDN4uTfNbsPK1EOLD69gSjjLAtjPmbj/ddQ+KjAXCKEsZGA jyapkfOa6E/oeKGm0cy8yp7gQe0FB4j+bLjeFrsYtJirlSIUj6W6M4er8hFwMXkQiiGl /S/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776114502; x=1776719302; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=GiozcQjmM6fhXANnSGQ4KY5OtlEqFQGjBd7fWaYdDaM=; b=B5Mj5Or/XPRtQXjZzJMvgJxRGO5QWw4QWtBzWDfyPtc09H5VkjIlxeH49Ah7jaUKRr fsVF9idmQAtZdp/FrFekaexrsNsBLuvUihEe7mot4sMIEo8kv5mNjE/NGsqJZkhDhlge xCGXFE0h8J7KQR5JcflwNAWdM0lurdU+fye29wRVud7bwG75x2Kiw0KPAnfp2n8ngqsk 2STccs+rPufTohMxYUmy7zorNa5L+GNb6pLhvZLwxflJBZzbADTuY+IwjegQ3pjUr95h u/hwXg7cQiIxYVUrVjeQLUzDgsDQRWSiKwbiV757W1wuPi2XiHRQ/upe7X27lhb4tlnU qeaw== X-Forwarded-Encrypted: i=1; AFNElJ8jc2YIqNV+BobYNV0D2LdnV8u1nbsL+rG4+yaZ54wJvWSGNVOnEzA6/RlaDA6/dEYh4nfR8H6wFuEb9y+Mt9Xv@lists.postgresql.org X-Gm-Message-State: AOJu0YzCp51TPWAViKZ9DpjTfYSFianAqhq8tqdWMJrcmThYIOJJ7ZZb QJDFj1i1BKLF+sdAwl3n5EfXU9iC3qTvSbJg/qOaOvl0rhI3VvX7E1kYolQP8q/2Qg== X-Gm-Gg: AeBDietX+yBAMNReiAb1GeZSXokMp4KCzEExAw65hVRNQmb4N8R4e48Za5tPDqwP0ay fPvEyJnFiNciWUMsXLaOxqorCQfGodnUOY7FAWLJx+CXpayeyPgu57WWon1+Tm7081r8M0L7DoP QHtO98tjrG3InlMGY4t46BHl5mczQr7yA5MY5bHAtya00hQhlEeDTdDN1hHzR216kq/0RFRX694 nXAJ+5JPujtOv8amQzPuR5jU25BgsEkv8mSsQxTuVkK8cg1DvMezjpQHEL3hCrgX2TzhWqMIySQ IcW8TuRWYPEJeU9rdEPolRRLOnUP7tsYJjc8v0ziKmHq3OluOvP2EwAyM/uq2j8bMJxYQ+kqF7Q +EVTRlLrWj2+DEcawLUv9uyeekpNnI3/KMotdwogWTLzLcoXBxIEfvnJn3ydGT5+uAhIUg1xa8T PFXJoD7mXNQ2G9/mkMmLf+78lMLo3EkLY= X-Received: by 2002:a05:6808:c1e9:b0:467:fd08:2826 with SMTP id 5614622812f47-4789f30c472mr7402703b6e.40.1776114502272; Mon, 13 Apr 2026 14:08:22 -0700 (PDT) Received: from [10.10.247.3] ([12.63.242.122]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-7dc3959099fsm6659773a34.9.2026.04.13.14.08.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Apr 2026 14:08:21 -0700 (PDT) Message-ID: <9e74ecd519ac5a1a2a5fefec86d261037f3db311.camel@j-davis.com> Subject: Re: pgsql: Perform provider-specific initialization in new functions. From: Jeff Davis To: Andrey Borodin Cc: Jeff Davis , pgsql-committers@lists.postgresql.org Date: Mon, 13 Apr 2026 14:08:20 -0700 In-Reply-To: <2FCB31FC-43E9-45F6-9AF4-4E199132B4E5@yandex-team.ru> References: <2FCB31FC-43E9-45F6-9AF4-4E199132B4E5@yandex-team.ru> Content-Type: multipart/mixed; boundary="=-eJPWIvjACGh3w4UURb7A" User-Agent: Evolution 3.52.3-0ubuntu1.1 MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-eJPWIvjACGh3w4UURb7A Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sat, 2026-03-07 at 16:36 +0500, Andrey Borodin wrote: > > =C2=A01. Your fix addresses it, and would also add some safety against > > other edge cases we haven't caught yet. The only time it would take > > effect is for very early initialization >=20 > Maybe let's sprinkle with asserts like "I'm walsender"? Or at least > "I'm not a user backend"? That seems like excessive coupling that's hard to explain. > > , but there is nonzero risk of > > inconsistency because the same value would get a different hash > > before > > and after CheckMyDatabase(). >=20 > Sounds scary, actually. I heard of several corruptions that started > with > bogus cache entries. Yeah, I'd prefer not take this approach. > > =C2=A02. We could hardcode texthashfunc() to use C_COLLATION_OID. That > > wouldn't match the column collation, but it would avoid the crash, > > and > > might technically still be fine: the default collation is always > > deterministic, and all deterministic collations have the same > > equality > > semantics as "C". Even if the proper hashtext() is used somewhere > > else, > > then it uses "C" hashing semantics for all deterministic > > collations. > > The problem here is that we'd like to allow the default collation > > to be > > nondeterministic in the future (Peter has mentioned this a few > > times), > > so relying on this assumption is fragile.=20 Attached. I think this is the least-invasive patch to apply to master now, because it doesn't change any assumptions. The assumption "any deterministic collation will do" is still the same, it just chooses C_COLLATION_OID rather than DEFAULT_COLLATION_OID. That has two benefits: 1. Fixes your issue, because C_COLLATION_OID is always available. 2. Faster than a default collation based on libc or ICU. Note that you may still have other problems trying to do interesting things before CheckMyDatabase(), so I'm not necessarily endorsing that, but this patch seems good regardless. >=20 I don't see a reason to backport this, but if someone else does then I could be convinced. Thoughts? Regards, Jeff Davis --=-eJPWIvjACGh3w4UURb7A Content-Disposition: attachment; filename="v1-0001-catcache.c-always-use-C_COLLATION_OID.patch" Content-Type: text/x-patch; name="v1-0001-catcache.c-always-use-C_COLLATION_OID.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSAxOTNhODU0Nzc0NjBmYjFjNDZiNjBkMzlhNzhhYzlkODQ5ZjU4YzcyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBN b24sIDEzIEFwciAyMDI2IDEyOjA5OjQwIC0wNzAwClN1YmplY3Q6IFtQQVRDSCB2MV0gY2F0Y2Fj aGUuYzogYWx3YXlzIHVzZSBDX0NPTExBVElPTl9PSUQuCgpQcmV2aW91c2x5LCB0ZXh0aGFzaGZh c3QvdGV4dGVxZmFzdCB1c2VkIERFRkFVTFRfQ09MTEFUSU9OX09JRC4gQXMgdGhlCmNvbW1lbnRz IHN0YXRlZCwgdGhhdCB3YXMgYXJiaXRyYXJ5IGFueXdheSAtLSBpZiB0aGUgY29sbGF0aW9uCmFj dHVhbGx5IG1hdHRlcmVkLCBpdCBzaG91bGQgdXNlIHRoZSBjb2x1bW4ncyBhY3R1YWwgY29sbGF0 aW9uLiAoSW4KdGhlIGNhdGFsb2csIHNvbWUgdGV4dCBjb2x1bW5zIGFyZSB0aGUgZGVmYXVsdCBj b2xsYXRpb24gYW5kIHNvbWUgYXJlCiJDIi4pCgpXaGVuIGFueSBkZXRlcm1pbmlzdGljIGNvbGxh dGlvbiB3aWxsIGRvLCBpdCdzIGJlc3QgdG8gY29uc2lzdGVudGx5CnVzZSB0aGUgc2ltcGxlc3Qg YW5kIGZhc3Rlc3Qgb25lLCBzbyB0aGlzIGNvbW1pdCBjaG9vc2VzCkNfQ09MTEFUSU9OX09JRC4K ClRoZSBvcmlnaW5hbCByZXBvcnQgd2FzIHRvIGFsbG93IHRoZSBjYXRhbG9nIGNhY2hlIHRvIGJl IHVzZWQgaW4gZWFybHkKY29kZSBwYXRocyBiZWZvcmUgQ2hlY2tNeURhdGFiYXNlKCksIHN1Y2gg YXMgR1VDIHByb2Nlc3NpbmcgaW4gdGhlCndhbHNlbmRlci4gVXNpbmcgQ19DT0xMQVRJT05fT0lE IHNvbHZlcyB0aGF0IHByb2JsZW0gYXMgd2VsbCwgYmVjYXVzZQppdCdzIGFsd2F5cyBhdmFpbGFi bGUuCgpSZXBvcnRlZC1ieTogQW5kcmV5IEJvcm9kaW4gPHg0bW1tQHlhbmRleC10ZWFtLnJ1PgpE aXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0QxOEFENzJBLTUwMDQtNEVGOC1BRjgwLTEw NzMyQUY2NzdGQUB5YW5kZXgtdGVhbS5ydQotLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL2Nh dGNhY2hlLmMgfCAyMSArKysrKysrKysrKysrKysrLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxNiBp bnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2NhY2hlL2NhdGNhY2hlLmMgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9jYXRjYWNoZS5j CmluZGV4IDg3ZWQ1NTA2NDYwLi5hOGU3YmY2NDlkMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvY2F0Y2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9jYXRj YWNoZS5jCkBAIC0yMDUsNiArMjA1LDEwIEBAIG5hbWVlcWZhc3QoRGF0dW0gYSwgRGF0dW0gYikK IAljaGFyCSAgICpjYSA9IE5hbWVTdHIoKkRhdHVtR2V0TmFtZShhKSk7CiAJY2hhcgkgICAqY2Ig PSBOYW1lU3RyKCpEYXR1bUdldE5hbWUoYikpOwogCisJLyoKKwkgKiBDYXRhbG9ncyBvbmx5IHVz ZSBkZXRlcm1pbmlzdGljIGNvbGxhdGlvbnMsIHNvIGlnbm9yZSBjb2x1bW4gY29sbGF0aW9uCisJ ICogYW5kIHVzZSBmYXN0IHBhdGguCisJICovCiAJcmV0dXJuIHN0cm5jbXAoY2EsIGNiLCBOQU1F REFUQUxFTikgPT0gMDsKIH0KIApAQCAtMjEzLDYgKzIxNywxMCBAQCBuYW1laGFzaGZhc3QoRGF0 dW0gZGF0dW0pCiB7CiAJY2hhcgkgICAqa2V5ID0gTmFtZVN0cigqRGF0dW1HZXROYW1lKGRhdHVt KSk7CiAKKwkvKgorCSAqIENhdGFsb2dzIG9ubHkgdXNlIGRldGVybWluaXN0aWMgY29sbGF0aW9u cywgc28gaWdub3JlIGNvbHVtbiBjb2xsYXRpb24KKwkgKiBhbmQgdXNlIGZhc3QgcGF0aC4KKwkg Ki8KIAlyZXR1cm4gaGFzaF9ieXRlcygodW5zaWduZWQgY2hhciAqKSBrZXksIHN0cmxlbihrZXkp KTsKIH0KIApAQCAtMjQ0LDE3ICsyNTIsMjAgQEAgc3RhdGljIGJvb2wKIHRleHRlcWZhc3QoRGF0 dW0gYSwgRGF0dW0gYikKIHsKIAkvKgotCSAqIFRoZSB1c2Ugb2YgREVGQVVMVF9DT0xMQVRJT05f T0lEIGlzIGZhaXJseSBhcmJpdHJhcnkgaGVyZS4gIFdlIGp1c3QKLQkgKiB3YW50IHRvIHRha2Ug dGhlIGZhc3QgImRldGVybWluaXN0aWMiIHBhdGggaW4gdGV4dGVxKCkuCisJICogQ2F0YWxvZ3Mg b25seSB1c2UgZGV0ZXJtaW5pc3RpYyBjb2xsYXRpb25zLCBzbyBpZ25vcmUgY29sdW1uIGNvbGxh dGlvbgorCSAqIGFuZCB1c2UgIkMiIGxvY2FsZSBmb3IgZWZmaWNpZW5jeS4KIAkgKi8KLQlyZXR1 cm4gRGF0dW1HZXRCb29sKERpcmVjdEZ1bmN0aW9uQ2FsbDJDb2xsKHRleHRlcSwgREVGQVVMVF9D T0xMQVRJT05fT0lELCBhLCBiKSk7CisJcmV0dXJuIERhdHVtR2V0Qm9vbChEaXJlY3RGdW5jdGlv bkNhbGwyQ29sbCh0ZXh0ZXEsIENfQ09MTEFUSU9OX09JRCwgYSwgYikpOwogfQogCiBzdGF0aWMg dWludDMyCiB0ZXh0aGFzaGZhc3QoRGF0dW0gZGF0dW0pCiB7Ci0JLyogYW5hbG9nb3VzbHkgaGVy ZSBhcyBpbiB0ZXh0ZXFmYXN0KCkgKi8KLQlyZXR1cm4gRGF0dW1HZXRJbnQzMihEaXJlY3RGdW5j dGlvbkNhbGwxQ29sbChoYXNodGV4dCwgREVGQVVMVF9DT0xMQVRJT05fT0lELCBkYXR1bSkpOwor CS8qCisJICogQ2F0YWxvZ3Mgb25seSB1c2UgZGV0ZXJtaW5pc3RpYyBjb2xsYXRpb25zLCBzbyBp Z25vcmUgY29sdW1uIGNvbGxhdGlvbgorCSAqIGFuZCB1c2UgIkMiIGxvY2FsZSBmb3IgZWZmaWNp ZW5jeS4KKwkgKi8KKwlyZXR1cm4gRGF0dW1HZXRJbnQzMihEaXJlY3RGdW5jdGlvbkNhbGwxQ29s bChoYXNodGV4dCwgQ19DT0xMQVRJT05fT0lELCBkYXR1bSkpOwogfQogCiBzdGF0aWMgYm9vbAot LSAKMi40My4wCgo= --=-eJPWIvjACGh3w4UURb7A--