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.