Salesforce

IDXBUILD IDXFIX IDXCHECK option SOME fails when Tablename = 32 chars

« Go Back

Information

 
TitleIDXBUILD IDXFIX IDXCHECK option SOME fails when Tablename = 32 chars
URL Name000040743
Article Number000153714
EnvironmentProduct: OpenEdge
Version: 10.x, 11.0 to 11.5
OS: All supported platforms
Question/Problem Description
IDXBUILD/IDXFIX/IDXCHECK option SOME fails when Tablename = 32 chars.

Index rebuild fails with error 2755 when the Tablename = 32 characters.
example: thistable2s_maximum_tablength_32, thisindex

IDXBUILD fails with errors 8788 8797 8784 when the tablename and the indexname = 32 characters each
example: thistable1s_maximum_tablength_32, thisindex1s_maximum_idxlength_32

IDXFIX fails when the Tablename = 32 characters.
Steps to Reproduce
Clarifying Information
The maximum length of an identifier in Progress (such as an index name, a column name, a table name, etc) is 32 characters.
The index is present, verified in the data dictionary.
The Schema .df and Tables dump and load without error.
IDXBUILD/IDXFIX/IDXCHECK does not fail when the tablename is less than 32 characters:
example: thistable3s_maxmin1_tablenth_31, thisindex1s_maximum_idxlength_32
Error MessageIndex not found. (2755)
Index rebuild utility did not complete successfully. (13629)
ERROR - Unable to find a cursor for a table number lookup. (8788)
ERROR - No table with given table name found in the database. (8797)
ERROR - Unable to extract table number for _file record (8784)
Defect NumberDefect PSC00259130 / OE00238064
Enhancement Number
Cause
This is a problem with the input format of IDXBUILD IDXFIX IDXCHECK utilities only when the 'SOME' Option is selected and the input contains 32 characters.

When listing the indexes to process, the code (listixnum) reads from the .xb file and calls fgets with a buffer of 33 bytes. In this case, fgets will read at most 32 bytes from the stream and append a null byte to the buffer. When the table line in the .xb is 32 bytes for the table name and 1 byte for the end of line character, the '\n' was left in the file stream which then cannot process the index line.
Resolution
Upgrade to OpenEdge 11.6.0 or later, where the code has been modified to to read enough for the full line from the .xb file into a temporary buffer and then copy it over.
Workaround
Option 1: Rename the table to a shortened name in the Data Dictionary, perform the idxbuild, idxfix, idxcheck on this table, then rename it back when idx utility completes.

If the primary index is NOT active then the table cannot be renamed, so the second workaround can be used instead.
Primary index <name> must be active to make the requested changes (997)

Option 2: Run IDXBUILD/IDXFIX/IDXCHECK by any of the Options provided except "SOME".

All           (a/A) - Choose all the indexes
By Area       (r/R) - Choose indexes in selected areas
By Schema     (c/C) - Choose indexes by schema owners
By Table      (t/T) - Choose indexes in selected tables
By Activation (v/V) - Choose active or inactive indexes
Notes
Progress Article:   

 Restricted IDXBUILD fails after 2748   
Keyword Phrase
Last Modified Date11/20/2020 7:27 AM

Powered by