示例#1
0
 private static void copyTableIndexes(
     Table origTable,
     Table tableCopy,
     List<TableChange> columnChanges,
     List<TableChange> indexChanges) {
   for (TableIndex origIndex : origTable.getIndexesIncludingInternal()) {
     ChangeType indexChange = findOldName(indexChanges, origIndex.getIndexName().getName());
     if (indexChange == ChangeType.DROP) {
       continue;
     }
     TableIndex indexCopy = TableIndex.create(tableCopy, origIndex);
     int pos = 0;
     for (IndexColumn indexColumn : origIndex.getKeyColumns()) {
       String newName = findNewName(columnChanges, indexColumn.getColumn().getName());
       if (newName != null) {
         IndexColumn.create(indexCopy, tableCopy.getColumn(newName), indexColumn, pos++);
       }
     }
     // DROP and MODIFY detection for indexes handled downstream
     if (indexCopy.getKeyColumns().isEmpty()) {
       tableCopy.removeIndexes(Collections.singleton(indexCopy));
     }
   }
 }