Kbase P102803: Consequences of having -cpcase French when using DataServer for Oracle
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  5/25/2010 |
|
Status: Unverified
GOAL:
Consequences of having -cpcase French when using DataServer for Oracle
GOAL:
Consequences of having -cpcase French with shadow columns when using Oracle DataServer
GOAL:
Conflict between Oracle UPPER() and Progress CAPS() for French
GOAL:
No match between results of UPPER in ORACLE and CAPS in Progress for FRENCH
FACT(s) (Environment):
Progress 9.x
OpenEdge 10.x
All Supported Operating Systems
Oracle DataServer
FIX:
When starting a Progress session with the parameter -cpcase Basic, the result of the statement CAPS('àéèùâêûîô') is ÀÉÈÙÂÊÛÎÔ.
When starting a Progress session with the parameter -cpcase French, the result of CAPS('àéèùâêûîô') is AEEÙAÊUIO.
With NLS_LANG=FRENCH_FRANCE.<code-page>, the result of Oracle UPPER('àéèùâêûîô') is ÀÉÈÙÂÊÛÎÔ.
This difference in behaviour results in a discrepancy in results generated when entering accented characters if shadow columns (i.e. U## fields) are present in the Oracle database. For example, using -cpcase French and inserting accented characters into an Oracle database via the Oracle DataServer results in the following values:
MY_FIELD = "try à (àéèùâêûîô)"
UPPER(MY_FIELD) = "TRY A (ÀÉÈÙÂÊÛÎÔ)"
U##MY_FIELD = "TRY A (AEEÙAÊUIO)"
Attempts to re-find this data fail because the DataServer uses the shadow column (U##MY_FIELD) as its point of comparison, seen in the dataserv.lg file as follows:
WHERE (U##MY_FIELD = upper(:1))
which resolves to:
WHERE ("TRY A (AEEÙAÊUIO)" = "TRY A (ÀÉÈÙÂÊÛÎÔ)") => No Record Match
If shadow columns are not used then no problems should be experienced when using -cpcase French. The DataServer uses the UPPER function as its point of comparison, seen in the dataserv.lg file as follows:
WHERE (upper(MY_FIELD) = upper(:1))
which resolves to:
WHERE ("TRY A (ÀÉÈÙÂÊÛÎÔ)" = "TRY A (ÀÉÈÙÂÊÛÎÔ)") => Record Match
Option #1
Set -cpcase should be set to Basic to avoid this conflict while using Progress Oracle DataServer product.
Option #2
Rebuild the Oracle database without shadow columns.