use of io.confluent.ksql.parser.tree.Statement in project ksql by confluentinc.
the class SqlPredicateTest method buildLogicalPlan.
private PlanNode buildLogicalPlan(String queryStr) {
List<Statement> statements = KSQL_PARSER.buildAst(queryStr, metaStore);
// Analyze the query to resolve the references and extract oeprations
Analysis analysis = new Analysis();
Analyzer analyzer = new Analyzer("sqlExpression", analysis, metaStore);
analyzer.process(statements.get(0), new AnalysisContext(null));
AggregateAnalysis aggregateAnalysis = new AggregateAnalysis();
AggregateAnalyzer aggregateAnalyzer = new AggregateAnalyzer(aggregateAnalysis, analysis, functionRegistry);
for (Expression expression : analysis.getSelectExpressions()) {
aggregateAnalyzer.process(expression, new AnalysisContext(null));
}
// Build a logical plan
PlanNode logicalPlan = new LogicalPlanner(analysis, aggregateAnalysis, functionRegistry).buildPlan();
return logicalPlan;
}
use of io.confluent.ksql.parser.tree.Statement in project ksql by confluentinc.
the class KsqlParserTest method testSelectAll.
@Test
public void testSelectAll() throws Exception {
String queryStr = "SELECT * FROM test1 t1;";
Statement statement = KSQL_PARSER.buildAst(queryStr, metaStore).get(0);
Assert.assertTrue("testSelectAll fails", statement instanceof Query);
Query query = (Query) statement;
Assert.assertTrue("testSelectAll fails", query.getQueryBody() instanceof QuerySpecification);
QuerySpecification querySpecification = (QuerySpecification) query.getQueryBody();
Assert.assertTrue("testSelectAll fails", querySpecification.getSelect().getSelectItems().size() == 6);
}
use of io.confluent.ksql.parser.tree.Statement in project ksql by confluentinc.
the class KsqlParserTest method testSelectHoppingWindow.
@Test
public void testSelectHoppingWindow() throws Exception {
String queryStr = "select itemid, sum(orderunits) from orders window HOPPING ( size 30 second, advance by 5" + " seconds) " + "where " + "orderunits" + " > 5 group by itemid;";
Statement statement = KSQL_PARSER.buildAst(queryStr, metaStore).get(0);
assertThat(statement, instanceOf(Query.class));
Query query = (Query) statement;
assertThat(query.getQueryBody(), instanceOf(QuerySpecification.class));
QuerySpecification querySpecification = (QuerySpecification) query.getQueryBody();
assertThat(querySpecification.getSelect().getSelectItems().size(), equalTo(2));
assertThat(querySpecification.getWhere().get().toString(), equalTo("(ORDERS.ORDERUNITS > 5)"));
assertThat(((AliasedRelation) querySpecification.getFrom()).getAlias().toUpperCase(), equalTo("ORDERS"));
Assert.assertTrue("window expression isn't present", querySpecification.getWindowExpression().isPresent());
assertThat(querySpecification.getWindowExpression().get().toString().toUpperCase(), equalTo(" WINDOW STREAMWINDOW HOPPING ( SIZE 30 SECONDS , ADVANCE BY 5 SECONDS ) "));
}
use of io.confluent.ksql.parser.tree.Statement in project ksql by confluentinc.
the class KsqlParserTest method testProjection.
@Test
public void testProjection() throws Exception {
String queryStr = "SELECT col0, col2, col3 FROM test1;";
Statement statement = KSQL_PARSER.buildAst(queryStr, metaStore).get(0);
Assert.assertTrue("testProjection fails", statement instanceof Query);
Query query = (Query) statement;
Assert.assertTrue("testProjection fails", query.getQueryBody() instanceof QuerySpecification);
QuerySpecification querySpecification = (QuerySpecification) query.getQueryBody();
Assert.assertTrue("testProjection fails", querySpecification.getSelect().getSelectItems().size() == 3);
Assert.assertTrue("testProjection fails", querySpecification.getSelect().getSelectItems().get(0) instanceof SingleColumn);
SingleColumn column0 = (SingleColumn) querySpecification.getSelect().getSelectItems().get(0);
Assert.assertTrue("testProjection fails", column0.getAlias().get().equalsIgnoreCase("COL0"));
Assert.assertTrue("testProjection fails", column0.getExpression().toString().equalsIgnoreCase("TEST1.COL0"));
}
use of io.confluent.ksql.parser.tree.Statement in project ksql by confluentinc.
the class KsqlParserTest method testProjectionWithArrayMap.
@Test
public void testProjectionWithArrayMap() throws Exception {
String queryStr = "SELECT col0, col2, col3, col4[0], col5['key1'] FROM test1;";
Statement statement = KSQL_PARSER.buildAst(queryStr, metaStore).get(0);
Assert.assertTrue("testProjectionWithArrayMap fails", statement instanceof Query);
Query query = (Query) statement;
Assert.assertTrue("testProjectionWithArrayMap fails", query.getQueryBody() instanceof QuerySpecification);
QuerySpecification querySpecification = (QuerySpecification) query.getQueryBody();
Assert.assertTrue("testProjectionWithArrayMap fails", querySpecification.getSelect().getSelectItems().size() == 5);
Assert.assertTrue("testProjectionWithArrayMap fails", querySpecification.getSelect().getSelectItems().get(0) instanceof SingleColumn);
SingleColumn column0 = (SingleColumn) querySpecification.getSelect().getSelectItems().get(0);
Assert.assertTrue("testProjectionWithArrayMap fails", column0.getAlias().get().equalsIgnoreCase("COL0"));
Assert.assertTrue("testProjectionWithArrayMap fails", column0.getExpression().toString().equalsIgnoreCase("TEST1.COL0"));
SingleColumn column3 = (SingleColumn) querySpecification.getSelect().getSelectItems().get(3);
SingleColumn column4 = (SingleColumn) querySpecification.getSelect().getSelectItems().get(4);
Assert.assertTrue("testProjectionWithArrayMap fails", column3.getExpression().toString().equalsIgnoreCase("TEST1.COL4[0]"));
Assert.assertTrue("testProjectionWithArrayMap fails", column4.getExpression().toString().equalsIgnoreCase("TEST1.COL5['key1']"));
}
Aggregations