Program: 85504
Project: 85504
Buggy source:
/** 
 * Anonymization function for a single table. Sets up queries, loops over columns and anonymizes columns for the passed Table.
 * @param table 
 */
private void anonymizeTable(final int batchSize,final IDBFactory dbFactory,final Table table) throws AnonymizerException {
  log.info("String_Node_Str" + table.getName() + "String_Node_Str");
  final List<Column> tableColumns=table.getColumns();
  final Set<String> colNames=new LinkedHashSet<>(tableColumns.size());
  final List<String> keyNames=new LinkedList<>();
  fillColumnNames(table,colNames);
  fillPrimaryKeyNamesList(table,keyNames);
  PreparedStatement selectStmt=null;
  PreparedStatement updateStmt=null;
  ResultSet rs=null;
  final Connection updateCon=dbFactory.getUpdateConnection();
  try {
    selectStmt=getSelectQueryStatement(dbFactory,table,keyNames,colNames);
    rs=selectStmt.executeQuery();
    final List<MatchMetaData> columnMetaData=dbFactory.fetchMetaData().getMetaDataForRs(rs);
    final String updateString=getUpdateQuery(table,colNames,keyNames);
    updateStmt=updateCon.prepareStatement(updateString);
    int batchCounter=0;
    int rowCount=0;
    while (rs.next()) {
      anonymizeRow(updateStmt,tableColumns,keyNames,updateCon,rs,columnMetaData,dbFactory.getVendorName());
      batchCounter++;
      if (batchCounter == batchSize) {
        updateStmt.executeBatch();
        updateCon.commit();
        batchCounter=0;
      }
      rowCount++;
    }
    log.debug("String_Node_Str" + rowCount);
    updateStmt.executeBatch();
    log.debug("String_Node_Str");
    updateCon.commit();
    log.debug("String_Node_Str");
    selectStmt.close();
    updateStmt.close();
    rs.close();
    log.debug("String_Node_Str");
  }
 catch (  SQLException|NoSuchMethodException|SecurityException|IllegalAccessException|IllegalArgumentException|InvocationTargetException ex) {
    log.error(ex.toString());
    if (ex.getCause() != null) {
      log.error(ex.getCause().toString());
    }
    try {
      if (selectStmt != null) {
        selectStmt.close();
      }
      if (updateStmt != null) {
        updateStmt.close();
      }
      if (rs != null) {
        rs.close();
      }
    }
 catch (    SQLException sqlex) {
      log.error(sqlex.toString());
    }
  }
 finally {
    try {
      if (selectStmt != null) {
        selectStmt.close();
      }
      if (updateStmt != null) {
        updateStmt.close();
      }
      if (rs != null) {
        rs.close();
      }
    }
 catch (    SQLException sqlex) {
      log.error(sqlex.toString());
    }
  }
  log.info("String_Node_Str" + table.getName() + "String_Node_Str");
  log.info("String_Node_Str");
}

Fixed version (ground truth):
/** 
 * Anonymization function for a single table. Sets up queries, loops over columns and anonymizes columns for the passed Table.
 * @param table 
 */
private void anonymizeTable(final int batchSize,final IDBFactory dbFactory,final Table table) throws AnonymizerException {
  log.info("String_Node_Str" + table.getName() + "String_Node_Str");
  final List<Column> tableColumns=table.getColumns();
  final Set<String> colNames=new LinkedHashSet<>(tableColumns.size());
  final List<String> keyNames=new LinkedList<>();
  fillColumnNames(table,colNames);
  fillPrimaryKeyNamesList(table,keyNames);
  PreparedStatement selectStmt=null;
  PreparedStatement updateStmt=null;
  ResultSet rs=null;
  final Connection updateCon=dbFactory.getUpdateConnection();
  try {
    selectStmt=getSelectQueryStatement(dbFactory,table,keyNames,colNames);
    rs=selectStmt.executeQuery();
    final List<MatchMetaData> columnMetaData=dbFactory.fetchMetaData().getMetaDataForRs(rs);
    final String updateString=getUpdateQuery(table,colNames,keyNames);
    updateStmt=updateCon.prepareStatement(updateString);
    int batchCounter=0;
    int rowCount=0;
    while (rs.next()) {
      anonymizeRow(updateStmt,tableColumns,keyNames,updateCon,rs,columnMetaData,dbFactory.getVendorName());
      log.info(updateStmt);
      batchCounter++;
      if (batchCounter == batchSize) {
        updateStmt.executeBatch();
        updateCon.commit();
        batchCounter=0;
      }
      rowCount++;
    }
    log.debug("String_Node_Str" + rowCount);
    updateStmt.executeBatch();
    log.debug("String_Node_Str");
    updateCon.commit();
    log.debug("String_Node_Str");
    selectStmt.close();
    updateStmt.close();
    rs.close();
    log.debug("String_Node_Str");
  }
 catch (  SQLException|NoSuchMethodException|SecurityException|IllegalAccessException|IllegalArgumentException|InvocationTargetException ex) {
    log.error(ex.toString());
    if (ex.getCause() != null) {
      log.error(ex.getCause().toString());
    }
    try {
      if (selectStmt != null) {
        selectStmt.close();
      }
      if (updateStmt != null) {
        updateStmt.close();
      }
      if (rs != null) {
        rs.close();
      }
    }
 catch (    SQLException sqlex) {
      log.error(sqlex.toString());
    }
  }
 finally {
    try {
      if (selectStmt != null) {
        selectStmt.close();
      }
      if (updateStmt != null) {
        updateStmt.close();
      }
      if (rs != null) {
        rs.close();
      }
    }
 catch (    SQLException sqlex) {
      log.error(sqlex.toString());
    }
  }
  log.info("String_Node_Str" + table.getName() + "String_Node_Str");
  log.info("String_Node_Str");
}