Re: ICU for global collation - Mailing list pgsql-hackers

From Peter Eisentraut
Subject Re: ICU for global collation
Date
Msg-id d7060bf1-177c-e0f2-f13f-b857cdd1182e@2ndquadrant.com
Whole thread Raw
In response to Re: ICU for global collation  ("Daniel Verite" <daniel@manitou-mail.org>)
Responses Re: ICU for global collation  (Peter Eisentraut <peter.eisentraut@enterprisedb.com>)
List pgsql-hackers
On 2019-11-01 19:18, Daniel Verite wrote:
> Even if the FTS code is improved in that matter, any extension code
> with libc functions depending on LC_CTYPE is still going to be
> potentially problematic. In particular when it happens to be set
> to a different encoding than the database.

I think the answer here is that extension code must not do that, at 
least in ways that potentially interact with other parts of the 
(collation-aware) database system.  For example, libc and ICU might have 
different opinions about what is a letter, because of different versions 
of Unicode data in use.  That would then affect tokenization etc. in 
text search and elsewhere.  That's why things like isalpha have to go 
though ICU instead, if that is the collation provider in a particular 
context.

> Couldn't we simply invent per-database GUC options, as in
> ALTER DATABASE myicudb SET libc_lc_ctype TO 'value';
> ALTER DATABASE myicudb SET libc_lc_collate TO 'value';
> 
> where libc_lc_ctype/libc_lc_collate would specifically set
> the values in the LC_CTYPE and LC_COLLATE environment vars
> of any backend serving the corresponding database"?

We could do that as a transition measure to support extensions like you 
mention above.  But our own internal code should not have to rely on that.

-- 
Peter Eisentraut              http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services



pgsql-hackers by date:

Previous
From: Fujii Masao
Date:
Subject: Re: Allow CREATE OR REPLACE VIEW to rename the columns
Next
From: Masahiko Sawada
Date:
Subject: Re: [HACKERS] Block level parallel vacuum