Index and CRC in Progress V9

Can someone confirm me that :


Adding a simple index (not primary and not unique) in a table, does not affect the CRC of the table (In Progress 9.1B and above) ?

I just discover that and sounds amazing comparing to V8 behaviour ?!!
 

mra

Junior???? Member
Hi Olivier!

I found this in Progress K-Base 20245
Impact of index changes on CRC values:
In earlier versions of Progress, indexes were included in the
calculation of CRC values for a table. Whenever an index was
added or deleted, the CRC value for the table changed. Without
recompiling, an application that referenced the table, even if it
did not use the index, would not execute.
To rebuild an index after it has been changed required the
database to be off-line. The length of time the database was
off-line depended on the which approach you used:
The approach that involved the least down time required the
developer to make the index inactive:
The state of the index does not affect the CRC value.
The index is rebuilt in the background while the
database is on line, using PROUTIL.
However, the database must be taken off-line in order
to make the index active. While the index is inactive,
an application that references that index will not
execute, even if the application has a matching CRC
value.
This reduces flexibility in terms of determining when
to take the database off-line and activate the indices.

The Version 9.x solution:
In Version 9.x, indices are removed from the table's
CRC calculation and given their own CRC values.
Once the applications are converted to Version 9.x and
the database is migrated to Version 9.x, a change to
the indices does not necessitate a recompilation of
applications because the table's CRC value is
unchanged.
You can add temporary and intermittently active indices
without changing the CRC and therefore without impact
to applications that do not reference the indices.
At run time, the application index CRC values for the
indices it references are compared to the index CRCs in
the database. If there is a mismatch, the application
does not run and an error is issued.

Mike
 
Top