use of io.confluent.ksql.parser.tree.Query in project ksql by confluentinc.
the class KsqlParserTest method testBooleanExpression.
@Test
public void testBooleanExpression() throws Exception {
String queryStr = "SELECT col0 = 10, col2, col3 > col1 FROM test1;";
Statement statement = KSQL_PARSER.buildAst(queryStr, metaStore).get(0);
Assert.assertTrue("testBooleanExpression fails", statement instanceof Query);
Query query = (Query) statement;
Assert.assertTrue("testProjection fails", query.getQueryBody() instanceof QuerySpecification);
QuerySpecification querySpecification = (QuerySpecification) query.getQueryBody();
SingleColumn column0 = (SingleColumn) querySpecification.getSelect().getSelectItems().get(0);
Assert.assertTrue("testBooleanExpression fails", column0.getAlias().get().equalsIgnoreCase("KSQL_COL_0"));
Assert.assertTrue("testBooleanExpression fails", column0.getExpression().toString().equalsIgnoreCase("(TEST1.COL0 = 10)"));
}
use of io.confluent.ksql.parser.tree.Query in project ksql by confluentinc.
the class KsqlEngine method terminateQueryForEntity.
@Override
public void terminateQueryForEntity(final String entity) {
final Optional<PersistentQueryMetadata> query = persistentQueries.values().stream().filter(persistentQueryMetadata -> persistentQueryMetadata.getEntity().equalsIgnoreCase(entity)).findFirst();
if (query.isPresent()) {
final PersistentQueryMetadata metadata = query.get();
log.info("Terminating persistent query {}", metadata.getId());
metadata.close();
persistentQueries.remove(metadata.getId());
livePersistentQueries.remove(metadata);
allLiveQueries.remove(metadata);
}
}
use of io.confluent.ksql.parser.tree.Query in project ksql by confluentinc.
the class QueryEngine method buildLogicalPlans.
List<Pair<String, PlanNode>> buildLogicalPlans(final MetaStore metaStore, final List<Pair<String, Statement>> statementList) {
List<Pair<String, PlanNode>> logicalPlansList = new ArrayList<>();
// TODO: the purpose of tempMetaStore here
MetaStore tempMetaStore = metaStore.clone();
for (Pair<String, Statement> statementQueryPair : statementList) {
if (statementQueryPair.getRight() instanceof Query) {
PlanNode logicalPlan = buildQueryLogicalPlan(statementQueryPair.getLeft(), (Query) statementQueryPair.getRight(), tempMetaStore);
logicalPlansList.add(new Pair<>(statementQueryPair.getLeft(), logicalPlan));
} else {
logicalPlansList.add(new Pair<>(statementQueryPair.getLeft(), null));
}
log.info("Build logical plan for {}.", statementQueryPair.getLeft());
}
return logicalPlansList;
}
use of io.confluent.ksql.parser.tree.Query 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.Query 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 ) "));
}
Aggregations