Program: 84045
Project: 84045
Buggy source:
protected void readColumns(DatabaseSnapshot snapshot,String schema,DatabaseMetaData databaseMetaData) throws SQLException, DatabaseException {
  Database database=snapshot.getDatabase();
  updateListeners("String_Node_Str" + database.toString() + "String_Node_Str");
  Statement selectStatement=((JdbcConnection)database.getConnection()).getUnderlyingConnection().createStatement();
  ResultSet rs=databaseMetaData.getColumns(database.convertRequestedSchemaToCatalog(schema),database.convertRequestedSchemaToSchema(schema),null,null);
  while (rs.next()) {
    Column column=readColumn(rs,database);
    if (column == null) {
      continue;
    }
    Table tempTable=column.getTable();
    column.setTable(null);
    Table table;
    if (database.isLiquibaseTable(tempTable.getName())) {
      if (tempTable.getName().equalsIgnoreCase(database.getDatabaseChangeLogTableName())) {
        table=snapshot.getDatabaseChangeLogTable();
      }
 else       if (tempTable.getName().equalsIgnoreCase(database.getDatabaseChangeLogLockTableName())) {
        table=snapshot.getDatabaseChangeLogLockTable();
      }
 else {
        throw new UnexpectedLiquibaseException("String_Node_Str" + tempTable.getName());
      }
    }
 else {
      table=snapshot.getTable(tempTable.getName());
    }
    if (table == null) {
      View view=snapshot.getView(tempTable.getName());
      if (view == null) {
        LogFactory.getLogger().debug("String_Node_Str" + tempTable.getName() + "String_Node_Str"+ column.getName());
        continue;
      }
 else {
        column.setView(view);
        column.setAutoIncrement(false);
        view.getColumns().add(column);
      }
    }
 else {
      column.setTable(table);
      column.setAutoIncrement(isColumnAutoIncrement(database,table.getSchema(),table.getName(),column.getName()));
      table.getColumns().add(column);
    }
    column.setPrimaryKey(snapshot.isPrimaryKey(column));
  }
  rs.close();
  selectStatement.close();
}

Fixed version (ground truth):
protected void readColumns(DatabaseSnapshot snapshot,String schema,DatabaseMetaData databaseMetaData) throws SQLException, DatabaseException {
  Database database=snapshot.getDatabase();
  updateListeners("String_Node_Str" + database.toString() + "String_Node_Str");
  Statement selectStatement=null;
  ResultSet rs=null;
  try {
    selectStatement=((JdbcConnection)database.getConnection()).getUnderlyingConnection().createStatement();
    rs=databaseMetaData.getColumns(database.convertRequestedSchemaToCatalog(schema),database.convertRequestedSchemaToSchema(schema),null,null);
    while (rs.next()) {
      Column column=readColumn(rs,database);
      if (column == null) {
        continue;
      }
      Table tempTable=column.getTable();
      column.setTable(null);
      Table table;
      if (database.isLiquibaseTable(tempTable.getName())) {
        if (tempTable.getName().equalsIgnoreCase(database.getDatabaseChangeLogTableName())) {
          table=snapshot.getDatabaseChangeLogTable();
        }
 else         if (tempTable.getName().equalsIgnoreCase(database.getDatabaseChangeLogLockTableName())) {
          table=snapshot.getDatabaseChangeLogLockTable();
        }
 else {
          throw new UnexpectedLiquibaseException("String_Node_Str" + tempTable.getName());
        }
      }
 else {
        table=snapshot.getTable(tempTable.getName());
      }
      if (table == null) {
        View view=snapshot.getView(tempTable.getName());
        if (view == null) {
          LogFactory.getLogger().debug("String_Node_Str" + tempTable.getName() + "String_Node_Str"+ column.getName());
          continue;
        }
 else {
          column.setView(view);
          column.setAutoIncrement(false);
          view.getColumns().add(column);
        }
      }
 else {
        column.setTable(table);
        column.setAutoIncrement(isColumnAutoIncrement(database,table.getSchema(),table.getName(),column.getName()));
        table.getColumns().add(column);
      }
      column.setPrimaryKey(snapshot.isPrimaryKey(column));
    }
  }
  finally {
    if (rs != null) {
      try {
        rs.close();
      }
 catch (      SQLException ignored) {
      }
    }
    if (selectStatement != null) {
      try {
        selectStatement.close();
      }
 catch (      SQLException ignored) {
      }
    }
  }
}