| From: | Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at> | 
|---|---|
| To: | patrick(dot)van(dot)dijk(at)gmail(dot)com, pgsql-bugs(at)lists(dot)postgresql(dot)org | 
| Subject: | Re: BUG #18523: String compare not consistent | 
| Date: | 2024-06-26 15:59:24 | 
| Message-ID: | 3a173a9aba9650ce7ddf22af9c413a3d64debbf4.camel@cybertec.at | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | 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
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Tom Lane | 2024-06-26 16:04:04 | Re: BUG #18523: String compare not consistent | 
| Previous Message | Patrick van Dijk | 2024-06-26 10:11:50 | Re: BUG #18523: String compare not consistent |