Consultor Eletrônico



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.