public QueryParseResult parse(String sql, @Nonnull SqlSecurityContext ssc) {
        try {
            return parse0(sql, ssc);
        } catch (QueryException e) {
            throw e;
        } catch (Exception e) {
            String message;
            // Check particular type of exception which causes typical long multiline error messages.
            if (e instanceof SqlParseException && e.getCause() instanceof ParseException) {
                message = trimMessage(e.getMessage());
            } else {
                message = e.getMessage();
            }
            throw QueryException.error(SqlErrorCode.PARSING, message, e);
        }
    }
@Test
    public void unsupportedKeywordTest() {
        assertThatThrownBy(() -> parser.parse("show tables"))
                .isInstanceOf(QueryException.class)
                .hasMessageContaining("Encountered \"show tables\" at line 1, column 1.");
    }