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 1w5oXx-003eiD-2S for pgsql-hackers@arkaria.postgresql.org; Thu, 26 Mar 2026 17:31:05 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w5oXw-004Iii-0j for pgsql-hackers@arkaria.postgresql.org; Thu, 26 Mar 2026 17:31:04 +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 1w5oXv-004Iia-2c for pgsql-hackers@lists.postgresql.org; Thu, 26 Mar 2026 17:31:04 +0000 Received: from mail-lf1-x133.google.com ([2a00:1450:4864:20::133]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w5oXt-00000001AsB-2mUg for pgsql-hackers@postgresql.org; Thu, 26 Mar 2026 17:31:03 +0000 Received: by mail-lf1-x133.google.com with SMTP id 2adb3069b0e04-5a12cd0bd79so1452463e87.2 for ; Thu, 26 Mar 2026 10:31:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774546260; cv=none; d=google.com; s=arc-20240605; b=eV7kMh+/QuwWjZExnuaYQ/mhjSI2p5aJRiumwpzzIvY8rfBYLWQLo3b+jqmiUAl9CH qWUda+7M2CXln+mOqECNkTA/3o74Vkm9TNmYdx53HVINGvl0WhgYaQeERi7YHLxwl06M 1Sh0NfVhS46FrSQRYGbJlc7CvTphw2ym0NFS+eRA6KJ6+R/dQavgAfNz2wF8CCAI1dGA 6Sj7CKU0qQvacvur4imUJVwDwOW9H+Rhk821lgMrkoqYEf2ossLIzvMDyFdBoz3YegBU MeUWKw+3kT9YcVFPSvPfwHX72gkPJYdAjFfEvVItanLCDr9nJbezPN5M4CyADay3LAad n/qQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=EAzMwbQsE1SoezWcNItIiqA4sEUHf2CY3h/My0qDU/w=; fh=Kj+eULMPcf/PNQr1rt4vj5Pi085Th78KEbaKm8I6U/A=; b=ZZq+hB0u2ptxAcZrST/gcVY75YeRFRUG+j0yeaxdU7YvuAdQ9ekREwTIj0NahRztkg tVWQXjUZnXWZe4pBgLYcQQrLqa8+dA96jrimAretiyPfSE1521O2w9Q6hvErNPjJrczT y9n5/AiajGlmubfkbBH1KBzmF0rC4nIKB46LrqJra0BSjwGg9lSeT5iP8XdCiopZ0/eJ x5mvykpj5T6FEGRYscMfhHm52SuK+BJlLhu9DvSBO24rbl+E4IjGSjrQVdBzS2aQEyVU SFxNMrn17RCffNU64LtpceANVtbJgw9Zovw8onF+P6mqsk39g5JFRr5UDs5wQ7OBC4Y1 E9ZQ==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774546260; x=1775151060; darn=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=EAzMwbQsE1SoezWcNItIiqA4sEUHf2CY3h/My0qDU/w=; b=h76IMg7d6C4RNWwXh8dKd7oREvdfjpUrde7w1o1cMcVWAOASG+ZoWUYfH8BmWLjnMv dZxLLz4qwcj1nwUGwvca0EKrt0iIBhx+yTZrT0BodWhBfyzztoE5DsDj60ai8W7qvmdZ nCA7WngYFpEjnhJuErA/jQUotTaivuqw3ItGkEqKOOSBixReGdyCBYIv1XBCbwJTnFya ezDFVyjH5RGeA/zc9mIR9GqCy6I+7HjuRAUQkLrOshAcR/XO0sOxM7fcbyQLKmYi6ZD5 83E5Dmm72orDITNjbCV+rsyu7QIMWPKdyc8r3Y2ZV+Zhn8WnYgObKNOSt/mL5yUR49/T ZsIg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774546260; x=1775151060; 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=EAzMwbQsE1SoezWcNItIiqA4sEUHf2CY3h/My0qDU/w=; b=EwiMT7A7gPktvKZoAMbRgfF5Fk3cKMsJdNSTZCmaY/ehkigXy6ZzgqBVqsOQebpwR6 GR+EBJQngIbz8elK3nWOIl53fP6Dvl967dviw70b0fOrQw00bXu4uSUjCObOyG50JPrC UJTnyf9Ym/5CmgA9hKXYUt4Ij2rRCe7X8KnpM3erNqKlYLm0HmrYAV5CU3osDp+Kf44k qcr7hLMEtfbs09Fo5GuKevcqmwWnmkP4ryCvbpIrDcLGIDUGOed4Xs0O5rWRMHYP5e9L IVkK0BNMUIcg34OkQlWlMLAvxX8qW9EllipBMTvRXdRN84dz31kQDXMvU6NzZLVeLc/6 T5DA== X-Forwarded-Encrypted: i=1; AJvYcCV7p8A1buYre47RdnqfTIKTxt/QiMgJFJqzUZf6Aw1JyBTCSzV3vNEKMagiPJoEuYh31/n9/aO2lHCiNVtv@postgresql.org X-Gm-Message-State: AOJu0YwWFdjM64qjbDUnZ7HX8G4TFf6fiyFjjvQkScpC2vn0gOb3aB6J n86QWpgAxk5k/NgoDzAZTvep+hm/hf3JKlMyUKFp6bnUYZh29atmXc42prKnaOF3VmgwUT9cg4H cpKdf6mTnXhKzCWAVJuWFQK+3cMDKBuc= X-Gm-Gg: ATEYQzxta34rusoPuu+tgLZ929tXDfAsvXZUoB/FX6/BvAxOACol1yjNCZ2W8/Uv5Pb U7wqES63lin2+/S/CP+Y79PdqHFKP9c/VY4IHHkbf3lETpF4GXSK6HnakBM38I1ToV1lVWo9ez5 mvej5KuTnUjcTYPZiyn6GjjsEmrhxoT6CQvDN/SuSjQ2ZwtzmGw1hdFO9gECUu+RSu1rFatteEG WSTenWhl9njMj/LvqKpBC4mF3NngKbF8/iDbTiOyq4RXiHxDQT3B9/bD9v3yW3laMQ7WSFXbsio pZfFHEUG X-Received: by 2002:a05:6512:401f:b0:5a1:44d3:7601 with SMTP id 2adb3069b0e04-5a29b99bf1dmr3105263e87.20.1774546259695; Thu, 26 Mar 2026 10:30:59 -0700 (PDT) MIME-Version: 1.0 References: <1791665551.452444.1761209220211.ref@mail.yahoo.com> <1895971769.8343.1761240853939@mail.yahoo.com> <574624399.175025.1761290201491@mail.yahoo.com> <953203149.383019.1761345585325@mail.yahoo.com> <6F76FA61-E2DC-44EF-9504-889D9BDB4EBD@yandex-team.ru> <1154454839.957923.1761604611424@mail.yahoo.com> <87ldkv8cog.fsf@wibble.ilmari.org> <87ikfz7zcu.fsf@wibble.ilmari.org> <9CB824CC-70DC-4165-AC6A-9664F47209EE@yandex-team.ru> <878qbn51kb.fsf@wibble.ilmari.org> <1F13AF7E-B90A-40FB-B47C-DC38FBB08353@gmail.com> <682417.1774482047@sss.pgh.pa.us> <431D684B-ABE2-461D-AA26-E009D2630CEA@yandex-team.ru> In-Reply-To: <431D684B-ABE2-461D-AA26-E009D2630CEA@yandex-team.ru> From: Masahiko Sawada Date: Thu, 26 Mar 2026 10:30:21 -0700 X-Gm-Features: AQROBzAE_o4KHlUzjnFrGv_l_eOgZn5K0jvPJ77SQD5QYGYIXPDsA9MHeBu3mnU Message-ID: Subject: Re: Add uuid_to_base32hex() and base32hex_to_uuid() built-in functions To: Andrey Borodin Cc: Tom Lane , Aleksander Alekseev , pgsql-hackers , Chao Li , =?UTF-8?Q?Dagfinn_Ilmari_Manns=C3=A5ker?= Content-Type: multipart/mixed; boundary="000000000000727c07064df0bf15" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000727c07064df0bf15 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Mar 26, 2026 at 1:32=E2=80=AFAM Andrey Borodin wrote: > > > > > On 26 Mar 2026, at 04:40, Tom Lane wrote: > > > > I wonder whether this discovery puts enough of a hole in the > > value-proposition for base32hex that we should just revert > > this patch altogether. "It works except in some locales" > > isn't a very appetizing prospect, so the whole idea is starting > > to feel more like a foot-gun than a widely-useful feature. > > To be precise, this discovery cast shadows on argument "[base32hex is ]le= xicographically sortable format that preserves temporal ordering for UUIDv7= ". And, actually, any UUID. But I do not think it invalidates the argument = completely. > > It's taken from RFC[0], actually, that states: > One property with this alphabet, which the base64 and base32 > alphabets lack, is that encoded data maintains its sort order when > the encoded data is compared bit-wise. > > > RFC does not give any other benefits. > Personally, I like that it's compact, visually better than base64, and RF= C-compliant. > And IMO argument "base32hex is lexicographically sortable format that pre= serves ordering for UUID in C locale" is still very strong. > Though, there's a little footy shooty in last 3 words. Yeah, I still find that base32hex is useful. As I mentioned in another email, I think we should make a note the fact that "base32hex is lexicographically sortable format that preserves ordering for UUID in C locale" in the documentation. I've attached the patch. Feedback is very welcome. Regards, --=20 Masahiko Sawada Amazon Web Services: https://aws.amazon.com --000000000000727c07064df0bf15 Content-Type: text/x-patch; charset="US-ASCII"; name="v1-0001-doc-Add-note-about-collation-requirements-for-bas.patch" Content-Disposition: attachment; filename="v1-0001-doc-Add-note-about-collation-requirements-for-bas.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn7qys6e0 RnJvbSA1MTVjNjY2YjYwZjdmODFmNmIyYTAwNGViZmI5MWIzNTgxODg0NzBjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXNhaGlrbyBTYXdhZGEgPG1zYXdhZGFAcG9zdGdyZXNxbC5v cmlnPgpEYXRlOiBUaHUsIDI2IE1hciAyMDI2IDEwOjE3OjIzIC0wNzAwClN1YmplY3Q6IFtQQVRD SCB2MV0gZG9jOiBBZGQgbm90ZSBhYm91dCBjb2xsYXRpb24gcmVxdWlyZW1lbnRzIGZvciBiYXNl MzJoZXgKIHNvcnRhYmlsaXR5LgoKV2hpbGUgZml4aW5nIHRoZSBiYXNlMzJoZXggVVVJRCBzb3J0 YWJpbGl0eSB0ZXN0IGluIGNvbW1pdCA4OTIxMDAzN2EwYSwKaXQgdHVybmVkIG91dCB0aGF0IHRo ZSBleHBlY3RlZCBsZXhpY29ncmFwaGljYWwgb3JkZXIgaXMgb25seSBtYWludGFpbmVkCnVuZGVy IHRoZSBDIGNvbGxhdGlvbiAob3IgYW4gZXF1aXZhbGVudCBieXRlLXdpc2UgY29sbGF0aW9uKS4K ClNpbmNlIHRoaXMgaXMgbm90IGp1c3QgYSB0ZXN0aW5nIHF1aXJrIGJ1dCBjb3VsZCBiZSBhIHJl YWwgdHJhcCB1c2VycwptaWdodCBmYWxsIGludG8gd2hlbiBzb3J0aW5nIGVuY29kZWQgZGF0YSBp biB0aGVpciBkYXRhYmFzZXMsIHdlIGFkZGVkCmEgbm90ZSB0byB0aGUgZG9jdW1lbnRhdGlvbiB0 byBtYWtlIHRoaXMgcmVxdWlyZW1lbnQgZXhwbGljaXRseSBjbGVhci4KClJldmlld2VkLWJ5OgpE aXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBRDIxQW9Bd1gxRDZiYVNHdVFYbTBtelBY UFdCMDdrZ2FvYWFhaGpOSEhlbmJkWTI0QUBtYWlsLmdtYWlsLmNvbQotLS0KIGRvYy9zcmMvc2dt bC9mdW5jL2Z1bmMtYmluYXJ5c3RyaW5nLnNnbWwgfCA4ICsrKysrKysrCiAxIGZpbGUgY2hhbmdl ZCwgOCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1i aW5hcnlzdHJpbmcuc2dtbCBiL2RvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtYmluYXJ5c3RyaW5nLnNn bWwKaW5kZXggMGFhZjliYzY4ZjEuLjlmNzMxZDdiY2EwIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3Nn bWwvZnVuYy9mdW5jLWJpbmFyeXN0cmluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9mdW5jL2Z1 bmMtYmluYXJ5c3RyaW5nLnNnbWwKQEAgLTc5MCw2ICs3OTAsMTQgQEAKICAgICAgICBwcm9kdWNl cyBhIDI2LWNoYXJhY3RlciBzdHJpbmcgY29tcGFyZWQgdG8gdGhlIHN0YW5kYXJkIDM2LWNoYXJh Y3RlcgogICAgICAgIFVVSUQgcmVwcmVzZW50YXRpb24uCiAgICAgICA8L3BhcmE+CisgICAgICA8 bm90ZT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVG8gbWFpbnRhaW4gdGhlIGxleGljb2dyYXBo aWNhbCBzb3J0IG9yZGVyIG9mIHRoZSBlbmNvZGVkIGRhdGEsCisgICAgICAgIGVuc3VyZSB0aGF0 IHRoZSB0ZXh0IGlzIHNvcnRlZCB1c2luZyB0aGUgQyBjb2xsYXRpb24KKyAgICAgICAgKGUuZy4s IHVzaW5nIDxsaXRlcmFsPkNPTExBVEUgIkMiPC9saXRlcmFsPikuIE5hdHVyYWwgbGFuZ3VhZ2UK KyAgICAgICAgY29sbGF0aW9ucyBtYXkgc29ydCBjaGFyYWN0ZXJzIGRpZmZlcmVudGx5IGFuZCBi cmVhayB0aGUgb3JkZXJpbmcuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9ub3RlPgogICAgICA8 L2xpc3RpdGVtPgogICAgIDwvdmFybGlzdGVudHJ5PgogCi0tIAoyLjUzLjAKCg== --000000000000727c07064df0bf15--