Re: BUG #18523: String compare not consistent - Mailing list pgsql-bugs

From Laurenz Albe
Subject Re: BUG #18523: String compare not consistent
Date
Msg-id 3a173a9aba9650ce7ddf22af9c413a3d64debbf4.camel@cybertec.at
Whole thread Raw
In response to BUG #18523: String compare not consistent  (PG Bug reporting form <noreply@postgresql.org>)
Responses Re: BUG #18523: String compare not consistent
List pgsql-bugs
On Wed, 2024-06-26 at 09:43 +0000, PG Bug reporting form wrote:
> PostgreSQL version: 16.3
> Operating system:   Windows vs Linux/Azure
>
> When I try the following on a Azure/Linux version of PostgreSQL i see some
> strange results that are not correct.
> On Windows the behavior is correct.
>
> select '|' < '0';        -- true, true, this is correct
> select '|1' < '01';    -- false, true, Azure/Linux is wrong
> select '||' < '0|';    -- true, true, this is correct
> select '||1' < '0|1';    -- false, true, Azure/Linux is wrong
>
> When the first character compares <, then no matter what follows, it should
> be <...

That is certainly not a PostgreSQL bug, because PostgreSQL uses collations
defined by the C library (or the ICU library, if you use that).

So you'd have to complain to the authors of the respective library.

Interestingly, glibc and ICU disagree about that:

SELECT '|1' < '01' COLLATE "de_DE.utf8"  AS glibc,
       '|1' < '01' COLLATE "de-AT-x-icu" AS icu;

 glibc │ icu
═══════╪═════
 f     │ t
(1 row)

Yours,
Laurenz Albe



pgsql-bugs by date:

Previous
From: Patrick van Dijk
Date:
Subject: Re: BUG #18523: String compare not consistent
Next
From: Tom Lane
Date:
Subject: Re: BUG #18523: String compare not consistent