Java 类com.facebook.presto.sql.tree.ExplainFormat 实例源码

项目:presto    文件:TestSqlParser.java   
@Test
public void testExplain()
        throws Exception
{
    assertStatement("EXPLAIN SELECT * FROM t",
            new Explain(simpleQuery(selectList(new AllColumns()), table(QualifiedName.of("t"))), ImmutableList.of()));
    assertStatement("EXPLAIN (TYPE LOGICAL) SELECT * FROM t",
            new Explain(
                    simpleQuery(selectList(new AllColumns()), table(QualifiedName.of("t"))),
                    ImmutableList.of(new ExplainType(ExplainType.Type.LOGICAL))));
    assertStatement("EXPLAIN (TYPE LOGICAL, FORMAT TEXT) SELECT * FROM t",
            new Explain(
                    simpleQuery(selectList(new AllColumns()), table(QualifiedName.of("t"))),
                    ImmutableList.of(
                            new ExplainType(ExplainType.Type.LOGICAL),
                            new ExplainFormat(ExplainFormat.Type.TEXT))));
}
项目:presto-query-formatter    文件:StatementFormatter.java   
@Override
protected Void visitExplain(Explain node, Integer indent)
{
    builder.append("EXPLAIN ");
    if (node.isAnalyze()) {
        builder.append("ANALYZE ");
    }

    List<String> options = new ArrayList<>();

    for (ExplainOption option : node.getOptions()) {
        if (option instanceof ExplainType) {
            options.add("TYPE " + ((ExplainType) option).getType());
        }
        else if (option instanceof ExplainFormat) {
            options.add("FORMAT " + ((ExplainFormat) option).getType());
        }
        else {
            throw new UnsupportedOperationException("unhandled explain option: " + option);
        }
    }

    if (!options.isEmpty()) {
        builder.append("(");
        Joiner.on(", ").appendTo(builder, options);
        builder.append(")");
    }

    builder.append("\n");

    process(node.getStatement(), indent);

    return null;
}
项目:presto    文件:StatementAnalyzer.java   
private String getQueryPlan(Explain node, ExplainType.Type planType, ExplainFormat.Type planFormat)
        throws IllegalArgumentException
{
    switch (planFormat) {
        case GRAPHVIZ:
            return queryExplainer.get().getGraphvizPlan(session, node.getStatement(), planType);
        case TEXT:
            return queryExplainer.get().getPlan(session, node.getStatement(), planType);
    }
    throw new IllegalArgumentException("Invalid Explain Format: " + planFormat.toString());
}
项目:presto    文件:SqlFormatter.java   
@Override
protected Void visitExplain(Explain node, Integer indent)
{
    builder.append("EXPLAIN ");

    List<String> options = new ArrayList<>();

    for (ExplainOption option : node.getOptions()) {
        if (option instanceof ExplainType) {
            options.add("TYPE " + ((ExplainType) option).getType());
        }
        else if (option instanceof ExplainFormat) {
            options.add("FORMAT " + ((ExplainFormat) option).getType());
        }
        else {
            throw new UnsupportedOperationException("unhandled explain option: " + option);
        }
    }

    if (!options.isEmpty()) {
        builder.append("(");
        Joiner.on(", ").appendTo(builder, options);
        builder.append(")");
    }

    builder.append("\n");

    process(node.getStatement(), indent);

    return null;
}
项目:presto    文件:AstBuilder.java   
@Override
public Node visitExplainFormat(SqlBaseParser.ExplainFormatContext context)
{
    switch (context.value.getType()) {
        case SqlBaseLexer.GRAPHVIZ:
            return new ExplainFormat(getLocation(context), ExplainFormat.Type.GRAPHVIZ);
        case SqlBaseLexer.TEXT:
            return new ExplainFormat(getLocation(context), ExplainFormat.Type.TEXT);
    }

    throw new IllegalArgumentException("Unsupported EXPLAIN format: " + context.value.getText());
}
项目:EchoQuery    文件:SqlFormatter.java   
@Override
protected Void visitExplain(Explain node, Integer indent)
{
    builder.append("EXPLAIN ");

    List<String> options = new ArrayList<>();

    for (ExplainOption option : node.getOptions()) {
        if (option instanceof ExplainType) {
            options.add("TYPE " + ((ExplainType) option).getType());
        }
        else if (option instanceof ExplainFormat) {
            options.add("FORMAT " + ((ExplainFormat) option).getType());
        }
        else {
            throw new UnsupportedOperationException("unhandled explain option: " + option);
        }
    }

    if (!options.isEmpty()) {
        builder.append("(");
        Joiner.on(", ").appendTo(builder, options);
        builder.append(")");
    }

    builder.append("\n");

    process(node.getStatement(), indent);

    return null;
}