Обсуждение: pgsql: Add support for collation attributes on older ICU versions

Поиск
Список
Период
Сортировка

pgsql: Add support for collation attributes on older ICU versions

От
Peter Eisentraut
Дата:
Add support for collation attributes on older ICU versions

Starting in ICU 54, collation customization attributes can be
specified in the locale string, for example
"@colStrength=primary;colCaseLevel=yes".  Add support for this for
older ICU versions as well, by adding some minimal parsing of the
attributes in the locale string and calling ucol_setAttribute() on
them.  This is essentially what never ICU versions do internally in
ucol_open().  This was we can offer this functionality in a consistent
way in all ICU versions supported by PostgreSQL.

Also add some tests for ICU collation customization.

Reported-by: Daniel Verite <daniel@manitou-mail.org>
Discussion: https://www.postgresql.org/message-id/0270ebd4-f67c-8774-1a5a-91adfb9bb41f@2ndquadrant.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/b8f9a2a69a279d118e366a0d3d45caa84a7620b1

Modified Files
--------------
src/backend/utils/adt/pg_locale.c              | 104 +++++++++++++++++++++++++
src/test/regress/expected/collate.icu.utf8.out |  39 ++++++++++
src/test/regress/sql/collate.icu.utf8.sql      |  21 +++++
3 files changed, 164 insertions(+)


Re: pgsql: Add support for collation attributes on older ICU versions

От
Andres Freund
Дата:
Hi,

On 2019-03-17 07:47:45 +0000, Peter Eisentraut wrote:
> Add support for collation attributes on older ICU versions
> 
> Starting in ICU 54, collation customization attributes can be
> specified in the locale string, for example
> "@colStrength=primary;colCaseLevel=yes".  Add support for this for
> older ICU versions as well, by adding some minimal parsing of the
> attributes in the locale string and calling ucol_setAttribute() on
> them.  This is essentially what never ICU versions do internally in
> ucol_open().  This was we can offer this functionality in a consistent
> way in all ICU versions supported by PostgreSQL.
> 
> Also add some tests for ICU collation customization.
> 
> Reported-by: Daniel Verite <daniel@manitou-mail.org>
> Discussion: https://www.postgresql.org/message-id/0270ebd4-f67c-8774-1a5a-91adfb9bb41f@2ndquadrant.com

I now get this warning:

/home/andres/src/postgresql/src/backend/utils/adt/pg_locale.c:1680:14: warning: comparison of constant -1 with
expressionof type 'UColAttribute' is always true [-Wtautological-constant-out-of-range-compare]
 
                        if (uattr != -1 && uvalue != -1)
                            ~~~~~ ^  ~~


Greetings,

Andres Freund


Re: pgsql: Add support for collation attributes on older ICU versions

От
Peter Eisentraut
Дата:
On 2019-03-18 20:03, Andres Freund wrote:
> I now get this warning:
> 
> /home/andres/src/postgresql/src/backend/utils/adt/pg_locale.c:1680:14: warning: comparison of constant -1 with
expressionof type 'UColAttribute' is always true [-Wtautological-constant-out-of-range-compare]
 
>                         if (uattr != -1 && uvalue != -1)
>                             ~~~~~ ^  ~~

I found a bug in that code and restructured it a bit.  It should also
avoid this warning now.

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


Re: pgsql: Add support for collation attributes on older ICU versions

От
Andres Freund
Дата:
On 2019-03-19 09:49:14 +0100, Peter Eisentraut wrote:
> On 2019-03-18 20:03, Andres Freund wrote:
> > I now get this warning:
> > 
> > /home/andres/src/postgresql/src/backend/utils/adt/pg_locale.c:1680:14: warning: comparison of constant -1 with
expressionof type 'UColAttribute' is always true [-Wtautological-constant-out-of-range-compare]
 
> >                         if (uattr != -1 && uvalue != -1)
> >                             ~~~~~ ^  ~~
> 
> I found a bug in that code and restructured it a bit.  It should also
> avoid this warning now.

Thanks.