Kbase P126745: Error with SAVE-ROW-CHANGES saving buffers with CLOB & BLOB fields
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  12/2/2008 |
|
Status: Verified
SYMPTOM(s):
SAVE-ROW-CHANGES found <name> record with conflicting change by another user. (11913)
Errors with proDataSets saving changes to records with CLOB fields
Errors with proDataSets saving changes to records with BLOB fields
FACT(s) (Environment):
All Supported Operating Systems
OpenEdge 10.x
CAUSE:
Bug# OE00171358
CAUSE:
When executing the SAVE-ROW-CHANGES method against a dataset buffer which has modifications for a CLOB field that already has data in it the implicit check to see if the db buffer field has changed in the meantime incorrectly reports that it has and the following error is returned.
The problem is that there is no internal facility for comparing two CLOB fields or two BLOB fields and until that point you cannot use this method to save changes to CLOB and BLOB fields. This also applies to the BUFFER-COMPARE function/method.
To facilitate allowing developers to use buffers with LOB fields in them with these methods in the short term, OpenEdge 10.1A introduced a new parameter to each method called NO-LOBS. When a TRUE value is specified for this parameter LOB fields will be left out of the comparison/assignment.
FIX:
In both BUFFER-COMPARE and SAVE-ROW-CHANGES it is recommended to specify the NO-LOBS parameter.
In the case of the SAVE-ROW-CHANGES usage it is recommended to, in addition to specifying the NO-LOBS parameter, copy both the before value (in the database) and the changed version (in the proDataSet) to LONGCHAR variables and compare them, then assign the changes manually back to the database.