Program: 85555
Project: 85555
Buggy source:
@Override public void discover(Properties databaseProperties,Properties dataDiscoveryProperties) throws AnonymizerException {
  double probabilityThreshold=parseDouble(dataDiscoveryProperties.getProperty("String_Node_Str"));
  log.info("String_Node_Str");
  IDBConnection dbConnection=DBConnectionFactory.createDBConnection(databaseProperties);
  Connection connection=dbConnection.connect(databaseProperties);
  List<ColumnMetaData> map=new ArrayList<>();
  try {
    DatabaseMetaData md=connection.getMetaData();
    ResultSet rs=md.getTables(null,null,"String_Node_Str",null);
    while (rs.next()) {
      String tableName=rs.getString(3);
      ResultSet resultSet=md.getColumns(null,null,tableName,null);
      while (resultSet.next()) {
        String columnName=resultSet.getString("String_Node_Str");
        if (resultSet.getInt(5) == java.sql.Types.VARCHAR) {
          ColumnMetaData columnMetaData=new ColumnMetaData(tableName,columnName,"String_Node_Str");
          map.add(columnMetaData);
        }
      }
    }
    rs.close();
  }
 catch (  SQLException e) {
    log.error(e);
  }
  InputStream modelInToken=null;
  InputStream modelIn=null;
  TokenizerModel modelToken=null;
  Tokenizer tokenizer=null;
  TokenNameFinderModel model=null;
  NameFinderME nameFinder=null;
  try {
    modelInToken=new FileInputStream(dataDiscoveryProperties.getProperty("String_Node_Str"));
    modelIn=new FileInputStream(dataDiscoveryProperties.getProperty("String_Node_Str"));
    modelToken=new TokenizerModel(modelInToken);
    tokenizer=new TokenizerME(modelToken);
    model=new TokenNameFinderModel(modelIn);
    nameFinder=new NameFinderME(model);
    modelInToken.close();
    modelIn.close();
  }
 catch (  FileNotFoundException ex) {
    log.error(ex.toString());
    try {
      if (modelInToken != null) {
        modelInToken.close();
      }
      if (modelIn != null) {
        modelIn.close();
      }
    }
 catch (    IOException ioe) {
      log.error(ioe.toString());
    }
  }
catch (  IOException ex) {
    log.error(ex.toString());
  }
  log.info("String_Node_Str");
  log.info("String_Node_Str");
  for (  ColumnMetaData pair : map) {
    if (pair.getColumnType().equals("String_Node_Str")) {
      String tableName=pair.getTableName();
      String columnName=pair.getColumnName();
      List<Double> probabilityList=new ArrayList<>();
      Statement stmt=null;
      ResultSet rs=null;
      try {
        stmt=connection.createStatement();
        rs=stmt.executeQuery(new StringBuilder("String_Node_Str").append(columnName).append("String_Node_Str").append(tableName).toString());
        while (rs.next()) {
          String sentence=rs.getString(1);
          if (sentence != null && !sentence.isEmpty()) {
            String tokens[]=tokenizer.tokenize(sentence);
            Span nameSpans[]=nameFinder.find(tokens);
            double[] spanProbs=nameFinder.probs(nameSpans);
            for (int i=0; i < nameSpans.length; i++) {
              probabilityList.add(spanProbs[i]);
            }
          }
        }
        rs.close();
        stmt.close();
      }
 catch (      SQLException sqle) {
        try {
          if (stmt != null) {
            stmt.close();
          }
          if (rs != null) {
            rs.close();
          }
        }
 catch (        SQLException sql) {
          log.error(sql.toString());
        }
        log.error(sqle.toString());
      }
      double averageProbability=calculateAverage(probabilityList);
      if ((averageProbability >= probabilityThreshold) && (averageProbability <= 0.90)) {
        log.info("String_Node_Str" + tableName + "String_Node_Str"+ columnName+ "String_Node_Str"+ averageProbability);
      }
    }
  }
}

Fixed version (ground truth):
@Override public void discover(Properties databaseProperties,Properties dataDiscoveryProperties) throws AnonymizerException {
  double probabilityThreshold=parseDouble(dataDiscoveryProperties.getProperty("String_Node_Str"));
  log.info("String_Node_Str");
  IDBConnection dbConnection=DBConnectionFactory.createDBConnection(databaseProperties);
  Connection connection=dbConnection.connect(databaseProperties);
  ResultSet rs=null;
  List<ColumnMetaData> map=new ArrayList<>();
  try {
    DatabaseMetaData md=connection.getMetaData();
    if (databaseProperties.getProperty("String_Node_Str").equals("String_Node_Str")) {
      rs=md.getTables(null,null,null,new String[]{"String_Node_Str"});
    }
 else {
      rs=md.getTables(null,null,"String_Node_Str",null);
    }
    while (rs.next()) {
      String tableName=rs.getString(3);
      ResultSet resultSet=null;
      if (databaseProperties.getProperty("String_Node_Str").equals("String_Node_Str")) {
        resultSet=md.getColumns("String_Node_Str","String_Node_Str",tableName,null);
      }
 else {
        resultSet=md.getColumns(null,null,tableName,null);
      }
      while (resultSet.next()) {
        String columnName=resultSet.getString("String_Node_Str");
        if (resultSet.getInt(5) == java.sql.Types.VARCHAR) {
          ColumnMetaData columnMetaData=new ColumnMetaData(tableName,columnName,"String_Node_Str");
          map.add(columnMetaData);
        }
      }
    }
    rs.close();
  }
 catch (  SQLException e) {
    log.error(e);
  }
  InputStream modelInToken=null;
  InputStream modelIn=null;
  TokenizerModel modelToken=null;
  Tokenizer tokenizer=null;
  TokenNameFinderModel model=null;
  NameFinderME nameFinder=null;
  try {
    modelInToken=new FileInputStream(dataDiscoveryProperties.getProperty("String_Node_Str"));
    modelIn=new FileInputStream(dataDiscoveryProperties.getProperty("String_Node_Str"));
    modelToken=new TokenizerModel(modelInToken);
    tokenizer=new TokenizerME(modelToken);
    model=new TokenNameFinderModel(modelIn);
    nameFinder=new NameFinderME(model);
    modelInToken.close();
    modelIn.close();
  }
 catch (  FileNotFoundException ex) {
    log.error(ex.toString());
    try {
      if (modelInToken != null) {
        modelInToken.close();
      }
      if (modelIn != null) {
        modelIn.close();
      }
    }
 catch (    IOException ioe) {
      log.error(ioe.toString());
    }
  }
catch (  IOException ex) {
    log.error(ex.toString());
  }
  log.info("String_Node_Str");
  log.info("String_Node_Str");
  for (  ColumnMetaData pair : map) {
    if (pair.getColumnType().equals("String_Node_Str")) {
      String tableName=pair.getTableName();
      String columnName=pair.getColumnName();
      List<Double> probabilityList=new ArrayList<>();
      Statement stmt=null;
      ResultSet resultSet=null;
      try {
        stmt=connection.createStatement();
        resultSet=stmt.executeQuery(new StringBuilder("String_Node_Str").append(columnName).append("String_Node_Str").append(tableName).toString());
        while (resultSet.next()) {
          String sentence=resultSet.getString(1);
          if (sentence != null && !sentence.isEmpty()) {
            String tokens[]=tokenizer.tokenize(sentence);
            Span nameSpans[]=nameFinder.find(tokens);
            double[] spanProbs=nameFinder.probs(nameSpans);
            for (int i=0; i < nameSpans.length; i++) {
              probabilityList.add(spanProbs[i]);
            }
          }
        }
        resultSet.close();
        stmt.close();
      }
 catch (      SQLException sqle) {
        try {
          if (stmt != null) {
            stmt.close();
          }
          if (resultSet != null) {
            resultSet.close();
          }
        }
 catch (        SQLException sql) {
          log.error(sql.toString());
        }
        log.error(sqle.toString());
      }
      double averageProbability=calculateAverage(probabilityList);
      if ((averageProbability >= probabilityThreshold) && (averageProbability <= 0.90)) {
        log.info("String_Node_Str" + tableName + "String_Node_Str"+ columnName+ "String_Node_Str"+ averageProbability);
      }
    }
  }
}