@Override
    public QueryActionStats execute(Statement statement, QueryStage queryStage)
    {
        return execute(statement, queryStage, new NoResultStatementExecutor<>());
    }
@Test
    public void testQueryFailed()
    {
        try {
            prestoAction.execute(
                    sqlParser.createStatement("SELECT * FROM test_table", PARSING_OPTIONS),
                    QUERY_STAGE);
            fail("Expect QueryException");
        }
        catch (PrestoQueryException e) {
            assertFalse(e.isRetryable());
            assertEquals(e.getErrorCodeName(), "PRESTO(SYNTAX_ERROR)");
            assertTrue(e.getQueryActionStats().getQueryStats().isPresent());
            assertEquals(e.getQueryActionStats().getQueryStats().map(QueryStats::getState).orElse(null), FAILED.name());

            QueryFailure queryFailure = getOnlyElement(verificationContext.getQueryFailures());
            assertEquals(queryFailure.getClusterType(), CONTROL.name());
            assertEquals(queryFailure.getQueryStage(), QUERY_STAGE.name());
            assertEquals(queryFailure.getErrorCode(), "PRESTO(SYNTAX_ERROR)");
            assertFalse(queryFailure.isRetryable());
            assertNotNull(queryFailure.getPrestoQueryId());
        }
    }