This enhancement has not been implemented in the product, however has been confirmed to
no-longer cause IDXCHECK to loop when the sequence of index keys was out of order on the 8781 error in recent
OpenEdge 11.7 incidents, where 32/64 bit boundary corruption has previously been addressed with IDXBUILD.
There may still be cases where this situation is evident, where an ehnancement has been raised to guage future occurrences:
Enhancement Request: IDXCHECK should continue scanning index after recid out of sequence error.The presumption was, while
there are an infinite number of ways that indexes can be corrupted which will cause the utility to loop, in certain cases where it is known that errors are occurring and will need to be fixed anyway, it is worthwhile to
skip over them and start processing the next index so that one can find out which indexes need to be rebuilt without exhausting the IDXCHECK error limit on the same index. As a consequence the 15913 message will report more index entries than records found. Part of these will be due to the
key order validation traversing the b-tree:
- comparing the key value of each key with previous one
- finding the current raw value of the index key is not larger
- and skipping the index after reporting the "out of sequence" key order 8783 error
(8781) SYSTEM ERROR: Index 10 (PUB.<table>, <index): key <key-field1 value><key-field2 value> recid <recid> is out of sequence.
(15913) SYSTEM ERROR: Index 10 (PUB.<table>, <index) contains 378487433 entries, but 378485816 records found.
When IDXCHECK Option 4 online detects an error, before drawing conclusions, run a selective idxcheck again against the indexes reported with the "L (table lock) to eliminate the possibility of a false positive:
$ proutil -C IDXCHECK -lkwtmo 30 -Bp 32
- Select: O (Validation), then L (Lock tables during the check) & "C"
- Select: T (By Table), then toggle the number next to the required table(s) & "G"
- Toggle the number next to the required index & "G" & "Y"
If key order index corruption 8783 are still reported:
Run IDXFIX Option 2 (scan indexes) offline, assuring
"Validate recids for index entries" &
"Fix indexes on Scan" are confirmed (Y).
- When IDXFIX is run online, it cannot and does not detect the errors found by Option 4 of IDXCHECK. The key order can only be validated when IDXFIX is run offline. Once the errant index has been rebuilt, the sequence order will be restored.
- While IDXFIX offline will fix the out-of-sequence, IDXBUILD is faster and better in that it rebuilds from scratch, except after-imaging needs to be disabled. Strictly, you would only need to rebuild this index.