Re: Order changes in PG16 since ICU introduction - Mailing list pgsql-hackers

From Tom Lane
Subject Re: Order changes in PG16 since ICU introduction
Date
Msg-id 3372735.1682101425@sss.pgh.pa.us
Whole thread Raw
In response to RE: Order changes in PG16 since ICU introduction  ("Regina Obe" <lr@pcorp.us>)
Responses Re: Order changes in PG16 since ICU introduction
List pgsql-hackers
"Regina Obe" <lr@pcorp.us> writes:
> CREATE DATABASE test1 TEMPLATE=template0 ENCODING = 'UTF8' LOCALE = 'C';
> Doesn't seem to work at least not under mingw64 anyway.

Hmm, doesn't work for me either:

$ LANG=en_US.utf8 initdb
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

Using default ICU locale "en_US".
Using language tag "en-US" for ICU locale "en_US".
The database cluster will be initialized with this locale configuration:
  provider:    icu
  ICU locale:  en-US
  LC_COLLATE:  en_US.utf8
  LC_CTYPE:    en_US.utf8
  LC_MESSAGES: en_US.utf8
  LC_MONETARY: en_US.utf8
  LC_NUMERIC:  en_US.utf8
  LC_TIME:     en_US.utf8
  ...
$ psql postgres
psql (16devel)
Type "help" for help.

postgres=# SELECT '+'  <  '-'  ;
 ?column?
----------
 f
(1 row)

(as expected, so far)

postgres=# CREATE DATABASE test1 TEMPLATE=template0 ENCODING = 'UTF8' LOCALE = 'C';
CREATE DATABASE
postgres=# \c test1
You are now connected to database "test1" as user "postgres".
test1=# SELECT '+'  <  '-'  ;
 ?column?
----------
 f
(1 row)

(wrong!)

test1=# \l
                                                      List of databases
   Name    |  Owner   | Encoding | Locale Provider |  Collate   |   Ctype    | ICU Locale | ICU Rules |   Access
privileges   

-----------+----------+----------+-----------------+------------+------------+------------+-----------+-----------------------
 postgres  | postgres | UTF8     | icu             | en_US.utf8 | en_US.utf8 | en-US      |           |
 template0 | postgres | UTF8     | icu             | en_US.utf8 | en_US.utf8 | en-US      |           | =c/postgres
    + 
           |          |          |                 |            |            |            |           |
postgres=CTc/postgres
 template1 | postgres | UTF8     | icu             | en_US.utf8 | en_US.utf8 | en-US      |           | =c/postgres
    + 
           |          |          |                 |            |            |            |           |
postgres=CTc/postgres
 test1     | postgres | UTF8     | icu             | C          | C          | en-US      |           |
(4 rows)

Looks like the "pick en-US even when told not to" problem exists here too.

            regards, tom lane



pgsql-hackers by date:

Previous
From: "Regina Obe"
Date:
Subject: RE: Order changes in PG16 since ICU introduction
Next
From: Sandro Santilli
Date:
Subject: Re: Order changes in PG16 since ICU introduction