Re: Add uuid_to_base32hex() and base32hex_to_uuid() built-in functions - Mailing list pgsql-hackers

From Tomas Vondra
Subject Re: Add uuid_to_base32hex() and base32hex_to_uuid() built-in functions
Date
Msg-id 01aac5bb-63b1-420f-b396-fdc2027fbb50@vondra.me
Whole thread Raw
In response to Re: Add uuid_to_base32hex() and base32hex_to_uuid() built-in functions  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: Add uuid_to_base32hex() and base32hex_to_uuid() built-in functions
List pgsql-hackers

On 3/26/26 00:40, Tom Lane wrote:
> Masahiko Sawada <sawada.mshk@gmail.com> writes:
>> I'm going to push the patch unless there are comments on these changes.
> 
> BF member hippopotamus has just demonstrated that this
> "base32hex" representation is not in fact sort-stable at all [1]:
> 
>  SELECT array_agg(id ORDER BY guid_encoded) FROM guid3;
>            array_agg           
>  ------------------------------
> - {1,2,3,4,5,6,7,8,9,10,11,12}
> + {12,1,2,3,4,5,7,6,8,9,10,11}
>  (1 row)
>  
> I believe what's happening there is that in cs_CZ locale,
> "V" doesn't follow simple ASCII sort ordering.  (I don't
> know the exact rules in Czech, but certainly we've seen
> that locale break a lot of other test queries.)
> 

With cs_CZ all letters sort *before* numbers, while in en_US it's the
other way around. V is not special in any way.

> 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.
> 

Seems like that.


regards

-- 
Tomas Vondra




pgsql-hackers by date:

Previous
From: Mark Dilger
Date:
Subject: Re: Use CASEFOLD() internally rather than LOWER()
Next
From: David Rowley
Date:
Subject: Re: another autovacuum scheduling thread