Kbase P100296: BLOB/CLOB fields do not preserve the CRC in OpenEdge 10.0B
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  5/5/2008 |
|
Status: Verified
FACT(s) (Environment):
OpenEdge 10.0B
All Supported Operating Systems
SYMPTOM(s):
Error 1896 when you try to run a r-code
** CRC for <filn> does not match CRC in <procedure>. Try recompiling. (1896)
Table which contains at least one BLOB or CLOB field
CRC changed after dump/load
CRC values don't match after apply a delta df file
CAUSE:
Bug# OE00113034
CAUSE:
One of the fields involved in the CRC calculation is the _Field._Fld-stlen field. For BLOB and CLOB fields, OpenEdge internally stores the blob?s storage object number which is generated after the blob object is created. The object number of each BLOB/CLOB field is unique on any given database. However, this object number is most likely going to be different once you dump and load a table, since you would have to create the same exact fields in the same exact order to get the same object ids. When the object id's are different, a CRC mismatch will occur after you dump/load the table.
FIX:
Upgrade to 10.0B02 or later Service Pack and use -lobcrcfix startup parameter following the steps:
Start a session with -lobcrcfix, connect to the database and make a change to the table which contains a BLOB/CLOB field so we regenerate the CRC for that table using the correct algorithm.
After the CRC is updated, recompile any code that references that table, so the r-code contains the new CRC value.
Note that you will also need to use the -lobcrcfix startup parameter when you load the definitions into the target database as well so you get the same CRC value for the tables that contain BLOB/CLOB fields, and you should be able to run the r-code compiled against the original database.
Note that the -lobcrcfix startup parameter will only exist in 10.0B02 and later 10.0B Service Packs.
If you move to 10.1x or later there is no need to use -lobcrcfix parameter. The fix is the default behavior in the OpenEdge 10.1x releases, and the -lobcrcfix will not be valid.