private void createSecondaryIndexes() { BuilderSecondaryIndexes builder = new BuilderSecondaryIndexesSequential(monitor) ; // if ( doInParallel ) // builder = new BuilderSecondaryIndexesParallel(printer) ; // else if ( doInterleaved ) // builder = new BuilderSecondaryIndexesInterleaved(printer) ; // else // builder = new BuilderSecondaryIndexesSequential(printer) ; builder.createSecondaryIndexes(primaryIndex, secondaryIndexes) ; // Re-attach the indexes. for ( int i = 1 ; i < numIndexes ; i++ ) nodeTupleTable.getTupleTable().setTupleIndex(i, secondaryIndexes[i-1]) ; }
private void dropSecondaryIndexes() { // Remember first ... // CAUTION - the TupleTable may be a view and these return the real tuple table. numIndexes = nodeTupleTable.getTupleTable().numIndexes() ; primaryIndex = nodeTupleTable.getTupleTable().getIndex(0) ; secondaryIndexes = ArrayUtils.alloc(TupleIndex.class, numIndexes-1) ; System.arraycopy(nodeTupleTable.getTupleTable().getIndexes(), 1, secondaryIndexes, 0, numIndexes-1) ; // Set non-primary indexes to null. for ( int i = 1 ; i < numIndexes ; i++ ) nodeTupleTable.getTupleTable().setTupleIndex(i, null) ; }