Re: Inconsistent "ICU Locale" output on older server versions
От | Euler Taveira |
---|---|
Тема | Re: Inconsistent "ICU Locale" output on older server versions |
Дата | |
Msg-id | a8dabdf4-1012-4c00-9d64-8e37f4ab4af5@www.fastmail.com обсуждение исходный текст |
Ответ на | Inconsistent "ICU Locale" output on older server versions (Christoph Berg <myon@debian.org>) |
Ответы |
Re: Inconsistent "ICU Locale" output on older server versions
|
Список | pgsql-hackers |
On Fri, Apr 15, 2022, at 11:58 AM, Christoph Berg wrote:
When running psql 15 against PG 14, the output is this:$ psql -lList of databasesName │ Owner │ Encoding │ Collate │ Ctype │ ICU Locale │ Locale Provider │ Access privileges───────────┼──────────┼──────────┼────────────┼────────────┼────────────┼─────────────────┼───────────────────────postgres │ postgres │ UTF8 │ de_DE.utf8 │ de_DE.utf8 │ de_DE.utf8 │ libc │template0 │ postgres │ UTF8 │ de_DE.utf8 │ de_DE.utf8 │ de_DE.utf8 │ libc │ =c/postgres ↵│ │ │ │ │ │ │ postgres=CTc/postgrestemplate1 │ postgres │ UTF8 │ de_DE.utf8 │ de_DE.utf8 │ de_DE.utf8 │ libc │ =c/postgres ↵│ │ │ │ │ │ │ postgres=CTc/postgres(3 rows)The "ICU Locale" column is now populated, that seems wrong.
Good catch!
The problem is in the else branch in src/bin/psql/describe.c aroundline 900:+ if (pset.sversion >= 150000)+ appendPQExpBuffer(&buf,+ " d.daticulocale as \"%s\",\n"+ " CASE d.datlocprovider WHEN 'c' THEN 'libc' WHEN 'i' THEN 'icu' END AS \"%s\",\+ gettext_noop("ICU Locale"),+ gettext_noop("Locale Provider"));+ else+ appendPQExpBuffer(&buf,+ " d.datcollate as \"%s\",\n" <--- there+ " 'libc' AS \"%s\",\n",+ gettext_noop("ICU Locale"),+ gettext_noop("Locale Provider"));I'd think this should rather be+ " '' as \"%s\",\n"
Since dataiculocale allows NULL, my suggestion is to use NULL instead of an
empty string. It is consistent with a cluster whose locale provider is libc.
В списке pgsql-hackers по дате отправления: