@Override protected R visitQuery(final Query node, final C context) { process(node.getQueryBody(), context); return null; }
protected Node visitQuery(final Query node, final Object context) { return new Query((QueryBody) process(node.getQueryBody(), context), node.getLimit()); }
@Override public int hashCode() { return query.hashCode(); } }
@Override protected Node visitQuery(final Query node, final Node parent) { node.setParent(parent); process(node.getQueryBody(), node); return null; }
@Override protected Void visitQuery(final Query node, final Integer indent) { processRelation(node.getQueryBody(), indent); if (node.getLimit().isPresent()) { append(indent, "LIMIT " + node.getLimit().get()) .append('\n'); } return null; }
@Before public void setUp() { query = new Query(queryBody, Optional.empty()); when(session.getId()).thenReturn("session-id"); when(statementParser.parseSingleStatement(anyString())) .thenAnswer(invocation -> new PreparedStatement<>(invocation.getArgument(0).toString(), query)); when(serviceContext.getSchemaRegistryClient()).thenReturn(schemaRegistryClient); when(serviceContext.getTopicClient()).thenReturn(topicClient); when(ksqlEngine.isAcceptingStatements()).thenReturn(true); givenRequest(VALID_REQUEST); wsQueryEndpoint = new WSQueryEndpoint( ksqlConfig, OBJECT_MAPPER, statementParser, ksqlEngine, serviceContext, commandQueue, exec, queryPublisher, topicPublisher, activenessRegistrar, COMMAND_QUEUE_CATCHUP_TIMEOUT); }
private Query mockCSASQuery(final String name) { final Query mockQuery = mock(Query.class); final QuerySpecification mockQuerySpec = mock(QuerySpecification.class); final Table mockRelation = mock(Table.class); expect(mockQuery.getQueryBody()).andStubReturn(mockQuerySpec); expect(mockQuery.getLimit()).andStubReturn(Optional.empty()); expect(mockQuerySpec.getInto()).andStubReturn(mockRelation); expect(mockRelation.getName()).andStubReturn(QualifiedName.of(name)); return mockQuery; }
return new Query( getLocation(context), term,
@Override protected R visitQuery(final Query node, final C context) { process(node.getQueryBody(), context); return null; }
@Override public Node visitQuery(final SqlBaseParser.QueryContext context) { final Query body = (Query) visit(context.queryNoWith()); return new Query( getLocation(context), body.getQueryBody(), body.getLimit() ); }
@Override public int hashCode() { return query.hashCode(); } }
private QuerySpecification getQuerySpecification(final Statement statement) { assertThat(statement, instanceOf(Query.class)); final Query query = (Query) statement; assertThat(query.getQueryBody(), instanceOf(QuerySpecification.class)); return (QuerySpecification) query.getQueryBody(); }
@Override public int hashCode() { return subquery.hashCode(); } }
@Test public void shouldSetParentsCorrectlyForSimpleQuery() { final Statement statement = getAstWithParent("SELECT col0, col2, col3 FROM test1 WHERE col0 > 100;"); Assert.assertFalse(statement.getParent().isPresent()); assertThat(statement, instanceOf(Query.class)); final Query query = (Query) statement; Assert.assertTrue(query.getQueryBody().getParent().isPresent()); assertThat(query.getQueryBody().getParent().get(), equalTo(query)); assertThat(query.getQueryBody(), instanceOf(QuerySpecification.class)); final QuerySpecification querySpecification = (QuerySpecification) query.getQueryBody(); final Select select = querySpecification.getSelect(); assertThat(select.getParent().get(), equalTo(querySpecification)); }
@Test public void shouldSetParentsCorrectlyForQueryWithUDF() { final Statement statement = getAstWithParent("SELECT lcase(col1), concat(col2,'hello'), floor(abs(col3)) FROM test1 t1;"); final Query query = (Query) statement; final QuerySpecification querySpecification = (QuerySpecification) query.getQueryBody(); final SingleColumn firstSelectItem = (SingleColumn) querySpecification.getSelect().getSelectItems().get(0); final FunctionCall functionCall = (FunctionCall) firstSelectItem.getExpression(); assertThat(functionCall.getParent().get(), equalTo(firstSelectItem)); assertThat(functionCall.getArguments().get(0).getParent().get(), equalTo(functionCall)); }
@Test public void testSelectAll() { final String queryStr = "SELECT * FROM test1 t1;"; final Statement statement = KSQL_PARSER.buildAst(queryStr, metaStore).get(0).getStatement(); final StatementRewriter statementRewriter = new StatementRewriter(); final Statement rewrittenStatement = (Statement) statementRewriter.process(statement, null); assertThat(rewrittenStatement, instanceOf(Query.class)); final Query query = (Query) rewrittenStatement; assertThat(query.getQueryBody(), instanceOf(QuerySpecification.class)); final QuerySpecification querySpecification = (QuerySpecification)query.getQueryBody(); assertThat(querySpecification.getSelect().getSelectItems().size(), equalTo(8)); }
@Test public void shouldSetParentsCorrectlyForCreateStreamAsSelect() { final Statement statement = getAstWithParent("CREATE STREAM bigorders_json WITH (value_format = 'json', " + "kafka_topic='bigorders_topic') AS SELECT * FROM orders WHERE orderunits > 5 ;"); final CreateStreamAsSelect createStreamAsSelect = (CreateStreamAsSelect) statement; final Query query = createStreamAsSelect.getQuery(); final QuerySpecification querySpecification = (QuerySpecification) query.getQueryBody(); assertThat(querySpecification.getWhere().get().getParent().get(), equalTo(querySpecification)); assertThat(querySpecification.getFrom().getParent().get(), equalTo(querySpecification)); }
@Test public void testBinaryExpression() { final String queryStr = "SELECT col0+10, col2, col3-col1 FROM test1;"; final Statement statement = KSQL_PARSER.buildAst(queryStr, metaStore).get(0).getStatement(); final StatementRewriter statementRewriter = new StatementRewriter(); final Statement rewrittenStatement = (Statement) statementRewriter.process(statement, null); assertThat(rewrittenStatement, instanceOf(Query.class)); final Query query = (Query) rewrittenStatement; assertThat(query.getQueryBody(), instanceOf(QuerySpecification.class)); final QuerySpecification querySpecification = (QuerySpecification)query.getQueryBody(); final SingleColumn column0 = (SingleColumn)querySpecification.getSelect().getSelectItems().get(0); assertThat(column0.getAlias().get(), equalTo("KSQL_COL_0")); assertThat(column0.getExpression().toString(), equalTo("(TEST1.COL0 + 10)")); }
@Test public void testProjectFilter() { final String queryStr = "SELECT col0, col2, col3 FROM test1 WHERE col0 > 100;"; final Statement statement = KSQL_PARSER.buildAst(queryStr, metaStore).get(0).getStatement(); final StatementRewriter statementRewriter = new StatementRewriter(); final Statement rewrittenStatement = (Statement) statementRewriter.process(statement, null); assertThat(rewrittenStatement, instanceOf(Query.class)); final Query query = (Query) rewrittenStatement; assertThat("testProjectFilter fails", query.getQueryBody(), instanceOf(QuerySpecification.class)); final QuerySpecification querySpecification = (QuerySpecification)query.getQueryBody(); assertThat("testProjectFilter fails", querySpecification.getWhere().get(), instanceOf(ComparisonExpression.class)); final ComparisonExpression comparisonExpression = (ComparisonExpression)querySpecification.getWhere().get(); assertThat("testProjectFilter fails", comparisonExpression.toString(), equalTo("(TEST1.COL0 > 100)")); assertThat("testProjectFilter fails", querySpecification.getSelect().getSelectItems().size(), equalTo(3)); }
private static SearchedCaseExpression getSearchedCaseExpressionFromCsas(final Statement statement) { final Query query = ((CreateStreamAsSelect) statement).getQuery(); final QuerySpecification querySpecification = (QuerySpecification) query.getQueryBody(); final Expression caseExpression = ((SingleColumn) querySpecification.getSelect().getSelectItems().get(0)).getExpression(); return (SearchedCaseExpression) caseExpression; }