[Demonstration 1]

[Buggy Method]
private void saveToTempTable(JavaRDD<Row> hashTagCounts, String tableName, SparkContext sparkContext) {
    // Get the singleton instance of SQLContext.
    SparkSession sparkSession = SparkSession.builder().sparkContext(sparkContext).getOrCreate();
    Dataset<Row> dataset = sparkSession.createDataFrame(hashTagCounts, SchemaUtils.generateSchemaStructure());
    dataset.cache();
    dataset.count();
    dataset.registerTempTable(tableName);
    LOG.info(String.format("%s table successfully created", tableName));
}

[Buggy Hunk]
dataset.registerTempTable(tableName);

[Patch]
dataset.createOrReplaceTempView(tableName);

[Demonstration 2]

[Buggy Method]
@Override
public void listEmployees() {
    Session session = factory.openSession();
    Transaction tx = null;
    try {
        tx = session.beginTransaction();
        List employees = session.createQuery("FROM User").list();
        for (Iterator iterator = employees.iterator(); iterator.hasNext(); ) {
            User employee = (User) iterator.next();
            System.out.print("First Name: " + employee.getFirstName());
            System.out.print("  Last Name: " + employee.getLastName());
            System.out.println("  Salary: " + employee.getSalary());
        }
        tx.commit();
    } catch (HibernateException e) {
        if (tx != null) {
            tx.rollback();
        }
        e.printStackTrace();
    } finally {
        session.close();
    }
}

[Buggy Hunk]
Session session = factory.openSession();

[Patch]
Session session = HibernateUtil.getSessionFactory().openSession();

[Demonstration 3]

[Buggy Method]
@Override
public void updateStatus(QueryContext context) throws LensException {
    log.debug("GetStatus: {}", context.getQueryHandle());
    if (context.getDriverStatus().isFinished()) {
        return;
    }
    OperationHandle hiveHandle = getHiveHandle(context.getQueryHandle());
    ByteArrayInputStream in = null;
    try {
        // Get operation status from hive server
        log.debug("GetStatus hiveHandle: {}", hiveHandle);
        fetchLogs(hiveHandle);
        OperationStatus opStatus = getClient().getOperationStatus(hiveHandle);
        log.debug("GetStatus on hiveHandle: {} returned state:", hiveHandle, opStatus.getState().name());
        switch(opStatus.getState()) {
            case CANCELED:
                context.getDriverStatus().setState(DriverQueryState.CANCELED);
                context.getDriverStatus().setStatusMessage("Query has been cancelled!");
                break;
            case CLOSED:
                context.getDriverStatus().setState(DriverQueryState.CLOSED);
                context.getDriverStatus().setStatusMessage("Query has been closed!");
                break;
            case ERROR:
                context.getDriverStatus().setState(DriverQueryState.FAILED);
                context.getDriverStatus().setStatusMessage("Query execution failed!");
                context.getDriverStatus().setErrorMessage("Query failed with errorCode:" + opStatus.getOperationException().getErrorCode() + " with errorMessage: " + opStatus.getOperationException().getMessage());
                break;
            case FINISHED:
                context.getDriverStatus().setState(DriverQueryState.SUCCESSFUL);
                context.getDriverStatus().setStatusMessage("Query is successful!");
                context.getDriverStatus().setResultSetAvailable(hiveHandle.hasResultSet());
                break;
            case INITIALIZED:
                context.getDriverStatus().setState(DriverQueryState.INITIALIZED);
                context.getDriverStatus().setStatusMessage("Query is initiazed in HiveServer!");
                break;
            case RUNNING:
                context.getDriverStatus().setState(DriverQueryState.RUNNING);
                context.getDriverStatus().setStatusMessage("Query is running in HiveServer!");
                break;
            case PENDING:
                context.getDriverStatus().setState(DriverQueryState.PENDING);
                context.getDriverStatus().setStatusMessage("Query is pending in HiveServer");
                break;
            case UNKNOWN:
            default:
                throw new LensException("Query is in unknown state at HiveServer");
        }
        float progress = 0f;
        String jsonTaskStatus = opStatus.getTaskStatus();
        String errorMsg = null;
        if (StringUtils.isNotBlank(jsonTaskStatus)) {
            ObjectMapper mapper = new ObjectMapper();
            mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
            in = new ByteArrayInputStream(jsonTaskStatus.getBytes("UTF-8"));
            List<TaskDisplay> taskStatuses = mapper.readValue(in, new TypeReference<List<TaskDisplay>>() {
            });
            int completedTasks = 0;
            StringBuilder errorMessage = new StringBuilder();
            for (TaskDisplay taskStat : taskStatuses) {
                Task.TaskState tstate = taskStat.taskState;
                if (tstate == Task.TaskState.FINISHED) {
                    completedTasks++;
                }
                if ((taskStat.getReturnValue() != null && taskStat.getReturnValue() != 0) || taskStat.getErrorMsg() != null) {
                    appendTaskIds(errorMessage, taskStat);
                    errorMessage.append(" has failed! ");
                }
            }
            progress = taskStatuses.size() == 0 ? 0 : (float) completedTasks / taskStatuses.size();
            errorMsg = errorMessage.toString();
        } else {
            log.warn("Empty task statuses");
        }
        String error = null;
        if (StringUtils.isNotBlank(errorMsg)) {
            error = errorMsg;
        } else if (opStatus.getState().equals(OperationState.ERROR)) {
            error = context.getDriverStatus().getStatusMessage();
        }
        context.getDriverStatus().setErrorMessage(error);
        context.getDriverStatus().setProgressMessage(jsonTaskStatus);
        context.getDriverStatus().setProgress(progress);
        context.getDriverStatus().setDriverStartTime(opStatus.getOperationStarted());
        context.getDriverStatus().setDriverFinishTime(opStatus.getOperationCompleted());
    } catch (Exception e) {
        log.error("Error getting query status", e);
        handleHiveServerError(context, e);
        throw new LensException("Error getting query status", e);
    } finally {
        if (in != null) {
            try {
                in.close();
            } catch (IOException e) {
                log.error("Error closing stream.", e);
            }
        }
    }
}

[Buggy Hunk]
error = context.getDriverStatus().getStatusMessage();

[Patch]
error = context.getDriverStatus().getErrorMessage();