int index_idx = 0;
for (int cd_idx = 0; cd_idx < conglom_descriptors.length; cd_idx++)
{
ConglomerateDescriptor index_cd = conglom_descriptors[cd_idx];
if (!index_cd.isIndex())
{
// skip the heap descriptor entry
continue;
}
// ScanControllers are used to delete old index row
index_scan[index_idx] =
tc.openScan(
index_cd.getConglomerateNumber(),
true, // hold
TransactionController.OPENMODE_FORUPDATE,
TransactionController.MODE_TABLE,
TransactionController.ISOLATION_SERIALIZABLE,
null, // full row is retrieved,
// so that full row can be used for start/stop keys
null, // startKeyValue - will be reset with reopenScan()
0, //
null, // qualifier
null, // stopKeyValue - will be reset with reopenScan()
0); //
// ConglomerateControllers are used to insert new index row
index_cc[index_idx] =
tc.openConglomerate(
index_cd.getConglomerateNumber(),
true, // hold
TransactionController.OPENMODE_FORUPDATE,
TransactionController.MODE_TABLE,
TransactionController.ISOLATION_SERIALIZABLE);
// build column map to allow index row to be built from base row
int[] baseColumnPositions =
index_cd.getIndexDescriptor().baseColumnPositions();
int[] zero_based_map =
new int[baseColumnPositions.length];
for (int i = 0; i < baseColumnPositions.length; i++)
{