Re: pgsql: Add option to use ICU as global locale provider
Julien Rouhaud <rjuju123@gmail.com>
From: Julien Rouhaud <rjuju123@gmail.com>
To: Michael Paquier <michael@paquier.xyz>
Cc: Peter Eisentraut <peter@eisentraut.org>, pgsql-committers@lists.postgresql.org
Date: 2022-03-18T03:12:44Z
Lists: pgsql-hackers
Hi, On Fri, Mar 18, 2022 at 11:01:11AM +0900, Michael Paquier wrote: > > FYI, prion is complaining here: > https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=prion&dt=2022-03-18%2001%3A43%3A13 > > Some details: > # Failed test 'fails for invalid ICU locale: matches' > # at t/001_initdb.pl line 107. > # '2022-03-18 01:54:58.563 UTC [504] FATAL: could > # not open collator for locale "@colNumeric=lower": > # U_ILLEGAL_ARGUMENT_ERROR That's very strange, apparently initdb doesn't detect any problem when checking ucol_open() for initial checks, since it's expecting: # doesn't match '(?^:initdb: error: could not open collator for locale)' but then postgres in single-backend mode does detect the problem, with the exact same check, so it's not like --icu-locale=@colNumeric=lower wasn't correctly interpreted. Unfortunately we don't have the full initdb output, so we can't check what setup_locale_encoding reported. The only difference is that in initdb's setlocale(), the result of ucol_open is discarded, maybe the compiler is optimizing it away for some reason, even though it seems really unlikely. That being said, we could save the result and explicitly close the collator. That wouldn't make much difference in initdb (but may be a bit cleaner), but I see that there's a similar coding in createdb(), which seems like it could leak some memory according to ucol_close man page.
Commits
-
psql: fix \l display for pre-v15 databases.
- 7129a9791eaf 15.0 landed
-
Fix global ICU collations for ICU < 54
- 3a671e1f7cb8 15.0 landed
-
Add option to use ICU as global locale provider
- f2553d43060e 15.0 cited
-
Add support for collation attributes on older ICU versions
- b8f9a2a69a27 12.0 cited