Kbase P31686: RAW-TRANSFER error 4955 between temp-table and database table
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  23/09/2009 |
|
Status: Verified
SYMPTOM(s):
Table signatures do not match in RAW-TRANSFER operation. (4955)
RAW-TRANSFER error 4955 between temp-table and database table
Temp-table is defined LIKE database table
Fields have been removed from database table.
FACT(s) (Environment):
Progress 9.x
OpenEdge 10.x
All Supported Operating Systems
CAUSE:
Because fields have been removed from the database table, there are now "holes" in the field chain of the table - which is one of the bigger parts of a table's signature.
When the temp-table is created, these holes are not carried over; the temp-table will have a new, different field chain, so it will indeed have a different signature.
FIX:
Option #1
Dump the table with the 'Include POSITION for .r compatibility' option deselected and reload it.
Option #2
In Progress 9.x and later releases, it is possible to change the field chain of a table using 4GL by manually setting the _field._field-rpos in the _field system table. This ensures the signatures of the tables will match. The following 4GL program will renumber the _field chain, removing any holes that may be in it:
DEFINE VARIABLE iCount AS INTEGER INITIAL 2 NO-UNDO.
DEFINE VARIABLE cTable AS CHARACTER NO-UNDO LABEL "Table".
UPDATE cTable.
FIND _file WHERE _file._file-name = cTable.
FOR EACH _field WHERE _field._file-recid = RECID(_file)
BY _field._field-rpos:
ASSIGN _field._field-rpos = iCount
iCount = iCount + 1.
END.
*** WARNING ***
Making changes to the database system tables manually is dangerous and can lead to serious database corruption.
Make sure a valid backup of the database is available before performing the changes.