Consultor Eletrônico



Kbase P113681: The GET-COLLATIONS function and the OpenEdge DB Navigator do not display all ICU collations.
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   2/23/2006
Status: Unverified

GOAL:

Why doesn't the GET-COLLATIONS function and the OpenEdge DB Navigator display all ICU collations?

GOAL:

Why isn't there any ICU-en or ICU-de collations in the OpenEdge DB Navigator?

GOAL:

Why are some ICU collations missing from the OpenEdge DB Navigator?

GOAL:

Why can a session be started with -cpcoll set to ICU-en or ICU-de, but a database cannot be created with this collation?

GOAL:

Some ICU collations that are supported by -cpcoll, COMPARE and COLLATE cannot be used as a database collation, and are not returned as valid collations by GET-COLLATIONS("UTF-8"). Why is this?

GOAL:

Why can't large objects (BLOB and CLOB) be used with all possible UTF-8 collations in the OpenEdge DB Navigator?

FACT(s) (Environment):

OpenEdge 10.x
OpenEdge 10.1x

FIX:

In the ICU definition of collation, ICU-UCA is the default collation. The list of language/locale-specific ICU collations provided by Progress is the list of collations that differ from ICU-UCA, not the list of collations for every supported language/locale. The reason for this is that for many languages the ICU-UCA collation will provide correct collation.

For example, Progress does not provide a specific ICU-en and ICU-de collation for English and German because this does not differ from ICU-UCA. The German phonebook sorting does differ from ICU-UCA and so there is a collation for ICU-de__PHONEBOOK.

The fact that you can specify an ICU collation (with -cpcoll, COLLATE and COMPARE) that is not returned by GET-COLLATIONS("UTF-8"), is due to the way that the ICU is implemented. For example:

COMPARE("A", ">", "a", "CASE-INSENSITIVE", "ICU-en")

can be performed, but it will not actually use the ICU-en collation. It will in fact use the ICU-UCA collation since there is no difference between the "en" locale and "UCA".

If your particular language does not require any different sorting than ICU-UCA, then Progress does not list it as a separate collation. Subsequently, if you do not find your language-specific ICU collation in the OpenEdge DB Navigator, or returned by GET-COLLATIONS("UTF-8") then you should use ICU-UCA.