From 89210037a0ab1f5e1375484edcfb8bbb4d9e7970 Mon Sep 17 00:00:00 2001 From: Masahiko Sawada Date: Wed, 25 Mar 2026 20:12:26 -0700 Subject: [PATCH] Fix UUID sortability tests in base32hex encoding. Commit 497c1170cb1 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 Discussion: https://postgr.es/m/682417.1774482047@sss.pgh.pa.us --- src/test/regress/expected/uuid.out | 7 +++++-- src/test/regress/sql/uuid.sql | 7 +++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/test/regress/expected/uuid.out b/src/test/regress/expected/uuid.out index 142c529e693..9c5dda9e9ab 100644 --- a/src/test/regress/expected/uuid.out +++ b/src/test/regress/expected/uuid.out @@ -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} diff --git a/src/test/regress/sql/uuid.sql b/src/test/regress/sql/uuid.sql index f2ff00f5ddd..8cc2ad40614 100644 --- a/src/test/regress/sql/uuid.sql +++ b/src/test/regress/sql/uuid.sql @@ -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. --