Fix UUID sortability tests in base32hex encoding.

Commit 497c1170cb added base32hex encoding support, but its
regression test for UUIDs failed on buildfarm members hippopotamus and
jay using natural language locales (such as cs_CZ). This happened
because those collations may sort characters differently, which breaks
the strict byte-wise lexicographical ordering expected by base32hex
encoding.

This commit fixes the regression tests by explicitly using the C
collation.

Per buildfarm members hippopotamus and jay.

Analyzed-by: Tom Lane <tgl@sss.pgh.pa.us>
Discussion: https://postgr.es/m/682417.1774482047@sss.pgh.pa.us
This commit is contained in:
Masahiko Sawada 2026-03-25 20:12:26 -07:00
parent 4287c50fc2
commit 89210037a0
2 changed files with 10 additions and 4 deletions

View file

@ -236,8 +236,11 @@ SELECT array_agg(id ORDER BY guid_field) FROM guid3;
{1,2,3,4,5,6,7,8,9,10,11,12}
(1 row)
-- make sure base32hex encoding works with UUIDs and preserves ordering
SELECT array_agg(id ORDER BY guid_encoded) FROM guid3;
-- Test base32hex encoding of UUIDs and its lexicographical sorting property.
-- COLLATE "C" is required to prevent buildfarm failures in non-C locales
-- where natural language collations (such as cs_CZ) would break strict
-- byte-wise ordering.
SELECT array_agg(id ORDER BY guid_encoded COLLATE "C") FROM guid3;
array_agg
------------------------------
{1,2,3,4,5,6,7,8,9,10,11,12}

View file

@ -122,8 +122,11 @@ INSERT INTO guid3 (guid_field) SELECT uuidv7() FROM generate_series(1, 10);
INSERT INTO guid3 (guid_field) VALUES ('ffffffff-ffff-ffff-ffff-ffffffffffff'::uuid);
SELECT array_agg(id ORDER BY guid_field) FROM guid3;
-- make sure base32hex encoding works with UUIDs and preserves ordering
SELECT array_agg(id ORDER BY guid_encoded) FROM guid3;
-- Test base32hex encoding of UUIDs and its lexicographical sorting property.
-- COLLATE "C" is required to prevent buildfarm failures in non-C locales
-- where natural language collations (such as cs_CZ) would break strict
-- byte-wise ordering.
SELECT array_agg(id ORDER BY guid_encoded COLLATE "C") FROM guid3;
-- Check the timestamp offsets for v7.
--