Kbase P24231: Error 2699 when trying to update / delete a specific record
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  16/08/2004 |
|
Status: Unverified
SYMPTOM(s):
SYSTEM ERROR: proixdel failed for word indexing of array (2699)
Word index corruption
Error 2699 when trying to update / delete a specific record.
Error 2699 after creating records and assigning values in multiple subtransactions.
Stack trace from _progres reads:
kmwkyact
kmWordsAct
kmwkdel
kmkdel
Occasionally records are skipped by FIND, FOR EACH or QUERY with a CONTAINS clause.
CAUSE:
Bug# 20020626-005
CAUSE:
Error 2699 is the consequence of a Progress bug occurring some time earlier and corrupting the word index.
The actual bug occurs when in the same transaction changes to a word-indexed field are undone and further changes to that field are committed.
Any new index keys that should be generated as a result of the second change will not be created.
The error 2699 will occur when one of the words for which the relevant word-index key was not created is modified or removed from the field, as at this time an attempt is made to delete a non-existing index key.
FIX:
To work around this bug, avoid making changes to the same word indexed field multiple times in the same transaction.
One way to do this is to pull the old value to a character variable, make all changes to that variable and then assigning the new value back to the database field after all changes have been made.
If this proves too complex, running regular IDXFIX operations on the word-index will reduce the effect of the bug - but it can still happen that between IDXFIXes both the corruption and the resulting error 2699 occur.