pgsql: Add support for collation attributes on older ICU versions
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: /messages/by-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(+)
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: /messages/by-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 expression of type 'UColAttribute' is always true [-Wtautological-constant-out-of-range-compare]
if (uattr != -1 && uvalue != -1)
~~~~~ ^ ~~
Greetings,
Andres Freund
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 expression of 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
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 expression of 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.