use of io.confluent.ksql.parser.tree.Node in project ksql by confluentinc.
the class KsqlParser method buildAst.
/**
* Builds an AST from the given query string.
*/
public List<Statement> buildAst(String sql, MetaStore metaStore) {
try {
ParserRuleContext tree = getParseTree(sql);
SqlBaseParser.StatementsContext statementsContext = (SqlBaseParser.StatementsContext) tree;
List<Statement> astNodes = new ArrayList<>();
for (SqlBaseParser.SingleStatementContext statementContext : statementsContext.singleStatement()) {
DataSourceExtractor dataSourceExtractor = new DataSourceExtractor(metaStore);
dataSourceExtractor.extractDataSources(statementContext);
Node root = new AstBuilder(dataSourceExtractor).visit(statementContext);
Statement statement = (Statement) root;
astNodes.add(statement);
}
return astNodes;
} catch (Exception e) {
// if we fail, parse with LL mode
throw new ParseFailedException(e.getMessage(), e);
}
}
use of io.confluent.ksql.parser.tree.Node in project ksql by confluentinc.
the class KsqlParser method prepareStatement.
public Pair<Statement, DataSourceExtractor> prepareStatement(SqlBaseParser.SingleStatementContext statementContext, MetaStore metaStore) {
DataSourceExtractor dataSourceExtractor = new DataSourceExtractor(metaStore);
dataSourceExtractor.extractDataSources(statementContext);
AstBuilder astBuilder = new AstBuilder(dataSourceExtractor);
Node root = astBuilder.visit(statementContext);
Statement statement = (Statement) root;
return new Pair<>(statement, dataSourceExtractor);
}
Aggregations