Consultor Eletrônico



Kbase P87553: The 4GL FIND statement with a search condition fails in a database converted to UTF-8
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   12/22/2005
Status: Unverified

FACT(s) (Environment):

Progress 9.1x
OpenEdge 10.0x

SYMPTOM(s):

Unable to find records after converting database to UTF-8

The 4GL FIND statement fails in a database converted to UTF-8

The FIND statement contains a search condition

One side of the comparison is case-sensitive

One side of the comparison is case-insensitive

CAUSE:

This is expected behavior. The case-insensitive fields are stored as lower-case values in an index for a UTF-8 database, but for a single-byte database they are stored as upper-case values. If either side of the comparison is case-sensitive, then we do a case-sensitive comparison. This will result in a difference in behavior between a UTF-8 database and a single-byte database when doing a case-sensitive comparison.

FIX:

Doing a case-sensitive FIND on a case-insensitive index is likely to cause problems. It is recommended you change your 4GL code as such that a case-sensitive comparison is not performed, for example if you were using temp-table case-insensitive fields in your comparison, then change them to be case-insensitive. Of course the required change in your application needs to be determined on a case by case basis.