Consultor Eletrônico



Kbase P158758: CONTAINS query returns different results depending on the client connection.
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   1/20/2010
Status: Unverified

SYMPTOM(s):

The query returns different results depending on the client connection.

A shared memory connection to the database returns the correct results.

A client/server connection does not return any records.

Without the extended character in the string "ky*", both clients return the correct and expected results.

With the extended character in the string "kyä*", only the shared memory connection returns the expected records. The client/server connection doesn't return any records.

FACT(s) (Environment):

The query uses a word index and a for each of the form:

FOR EACH <table> WHERE <field> CONTAINS "kyä* jotain".
The database is using the UTF-8 code page and basic collation.
The client and database broker are using -cpinternal iso8859-15, -cpstream iso8859-15 and -cpcoll finnish
All Supported Operating Systems
Progress 9.x
OpenEdge 10.x

CAUSE:

The shared memory client is resolving the database query using the database and its collation. The client/server connection is using the database broker to resolve its query. So when comparing the two client queries they are using different code pages, and more importantly collations.

FIX:

Since the database broker is physically located close to the database it should (almost always) use the same code page and collation as the database. To resolve the problem, restart the database broker using:

-cpinternal UTF-8 -cpstream UTF-8 -cpcoll basic

and re-run the query.