private CommandId getSelectStreamCommandId(final CreateStreamAsSelect createStreamAsSelect) { return getStreamCommandId(createStreamAsSelect.getName().toString()); }
@Override protected Void visitCreateStreamAsSelect(final CreateStreamAsSelect node, final Integer indent) { builder.append("CREATE STREAM "); if (node.isNotExists()) { builder.append("IF NOT EXISTS "); } builder.append(node.getName()); if (!node.getProperties().isEmpty()) { builder.append(" WITH ("); Joiner.on(", ") .appendTo(builder, transform( node.getProperties().entrySet(), entry -> entry.getKey() + " = " + ExpressionFormatter .formatExpression(entry.getValue()))); builder.append(")"); } builder.append(" AS "); process(node.getQuery(), indent); return null; }
protected Node visitCreateStreamAsSelect(final CreateStreamAsSelect node, final Object context) { return new CreateStreamAsSelect( node.getLocation(), node.getName(), (Query) process(node.getQuery(), context), node.isNotExists(), node.getProperties().entrySet().stream() .collect(Collectors.toMap( Map.Entry::getKey, e -> (Expression) process(e.getValue(), context) )), node.getPartitionByColumn().isPresent() ? Optional.ofNullable( (Expression) process(node.getPartitionByColumn().get(), context)) : Optional.empty() ); }
private CreateStreamAsSelect mockCSAS(final String name) { final CreateStreamAsSelect mockStatement = mock(CreateStreamAsSelect.class); expect(mockStatement.getName()).andStubReturn(QualifiedName.of(name)); expect(mockStatement.getQuery()).andStubReturn(mockCSASQuery(name)); expect(mockStatement.getProperties()).andStubReturn(Collections.emptyMap()); expect(mockStatement.getPartitionByColumn()).andStubReturn(Optional.empty()); return mockStatement; }
@Test public void testCreateStreamAsSelect() { final String queryStr = "CREATE STREAM bigorders_json WITH (value_format = 'json', " + "kafka_topic='bigorders_topic') AS SELECT * FROM orders WHERE orderunits > 5 ;"; 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("testCreateStreamAsSelect failed.", rewrittenStatement instanceof CreateStreamAsSelect); final CreateStreamAsSelect createStreamAsSelect = (CreateStreamAsSelect)rewrittenStatement; assertThat(createStreamAsSelect.getName().toString(), equalTo("BIGORDERS_JSON")); assertThat(createStreamAsSelect.getQuery().getQueryBody(), instanceOf(QuerySpecification.class)); final QuerySpecification querySpecification = (QuerySpecification) createStreamAsSelect.getQuery().getQueryBody(); assertThat(querySpecification.getSelect().getSelectItems().size(), equalTo(8)); assertThat(querySpecification.getWhere().get().toString(), equalTo("(ORDERS.ORDERUNITS > 5)")); assertThat(((AliasedRelation)querySpecification.getFrom()).getAlias(), equalTo("ORDERS")); }
@Test public void testCreateStreamAsSelect() { final String queryStr = "CREATE STREAM bigorders_json WITH (value_format = 'json', " + "kafka_topic='bigorders_topic') AS SELECT * FROM orders WHERE orderunits > 5 ;"; final Statement statement = KSQL_PARSER.buildAst(queryStr, metaStore).get(0).getStatement(); assertThat( statement, instanceOf(CreateStreamAsSelect.class)); final CreateStreamAsSelect createStreamAsSelect = (CreateStreamAsSelect)statement; assertThat(createStreamAsSelect.getName().toString().toLowerCase(), equalTo("bigorders_json")); assertThat(createStreamAsSelect.getQuery().getQueryBody(), instanceOf(QuerySpecification.class)); final QuerySpecification querySpecification = (QuerySpecification) createStreamAsSelect.getQuery().getQueryBody(); assertThat(querySpecification.getSelect().getSelectItems().size(), equalTo(8)); assertThat(querySpecification.getWhere().get().toString().toUpperCase(), equalTo("(ORDERS.ORDERUNITS > 5)")); assertThat(((AliasedRelation)querySpecification.getFrom()).getAlias().toUpperCase(), equalTo("ORDERS")); }