protected Node visitCreateStream(final CreateStream node, final Object context) { return new CreateStream( node.getLocation(), node.getName(), node.getElements().stream() .map(tableElement -> (TableElement) process(tableElement, context)) .collect(Collectors.toList()), node.isNotExists(), node.getProperties().entrySet().stream() .collect(Collectors.toMap( Map.Entry::getKey, e -> (Expression) process(e.getValue(), context) )) ); }
if (!node.getElements().isEmpty()) { builder.append("("); boolean addComma = false; for (final TableElement tableElement : node.getElements()) { if (addComma) { builder.append(", ");
@Test public void testCreateStreamWithTopic() { final String queryStr = "CREATE STREAM orders (ordertime bigint, orderid varchar, itemid varchar, orderunits " + "double) WITH (registered_topic = 'orders_topic' , key='ordertime');"; 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(CreateStream.class)); final CreateStream createStream = (CreateStream)rewrittenStatement; assertThat(createStream.getName().toString(), equalTo("ORDERS")); assertThat(createStream.getElements().size(), equalTo(4)); assertThat(createStream.getElements().get(0).getName(), equalTo("ORDERTIME")); assertThat(createStream.getProperties().get(DdlConfig.TOPIC_NAME_PROPERTY).toString(), equalTo("'orders_topic'")); }
@Test public void testCreateStreamWithTopicWithStruct() throws Exception { final String queryStr = "CREATE STREAM orders (ordertime bigint, orderid varchar, itemid varchar, orderunits " + "double, arraycol array<double>, mapcol map<varchar, double>, " + "order_address STRUCT< number VARCHAR, street VARCHAR, zip INTEGER, city " + "VARCHAR, state VARCHAR >) WITH (registered_topic = 'orders_topic' , key='ordertime');"; 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(CreateStream.class)); final CreateStream createStream = (CreateStream)rewrittenStatement; assertThat(createStream.getName().toString().toUpperCase(), equalTo("ORDERS")); assertThat(createStream.getElements().size(), equalTo(7)); assertThat(createStream.getElements().get(0).getName().toLowerCase(), equalTo("ordertime")); assertThat(createStream.getElements().get(6).getType().getKsqlType(), equalTo(Type.KsqlType.STRUCT)); final Struct struct = (Struct) createStream.getElements().get(6).getType(); assertThat(struct.getItems().size(), equalTo(5)); assertThat(struct.getItems().get(0).getRight().getKsqlType(), equalTo(Type.KsqlType.STRING)); assertThat(createStream.getProperties().get(DdlConfig.TOPIC_NAME_PROPERTY).toString().toLowerCase(), equalTo("'orders_topic'")); }
@Test public void testCreateStream() throws Exception { final String queryStr = "CREATE STREAM orders (ordertime bigint, orderid varchar, itemid varchar, orderunits " + "double) WITH (value_format = 'avro', " + "avroschemafile='/Users/hojjat/avro_order_schema.avro',kafka_topic='orders_topic');"; 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(CreateStream.class)); final CreateStream createStream = (CreateStream)rewrittenStatement; assertThat(createStream.getName().toString(), equalTo("ORDERS")); assertThat(createStream.getElements().size(), equalTo(4)); assertThat(createStream.getElements().get(0).getName(), equalTo("ORDERTIME")); assertThat(createStream.getProperties().get(DdlConfig.KAFKA_TOPIC_NAME_PROPERTY).toString(), equalTo("'orders_topic'")); assertThat(createStream.getProperties().get(DdlConfig .VALUE_FORMAT_PROPERTY).toString(), equalTo("'avro'")); assertThat(createStream.getProperties().get(DdlConfig.AVRO_SCHEMA_FILE).toString(), equalTo("'/Users/hojjat/avro_order_schema.avro'")); }
@Test public void testCreateStreamWithTopic() { final String queryStr = "CREATE STREAM orders (ordertime bigint, orderid varchar, itemid varchar, orderunits " + "double) WITH (registered_topic = 'orders_topic' , key='ordertime');"; final Statement statement = KSQL_PARSER.buildAst(queryStr, metaStore).get(0).getStatement(); Assert.assertTrue("testCreateStream failed.", statement instanceof CreateStream); final CreateStream createStream = (CreateStream)statement; Assert.assertTrue("testCreateStream failed.", createStream.getName().toString().equalsIgnoreCase("ORDERS")); Assert.assertTrue("testCreateStream failed.", createStream.getElements().size() == 4); Assert.assertTrue("testCreateStream failed.", createStream.getElements().get(0).getName().toString().equalsIgnoreCase("ordertime")); Assert.assertTrue("testCreateStream failed.", createStream.getProperties().get(DdlConfig.TOPIC_NAME_PROPERTY).toString().equalsIgnoreCase("'orders_topic'")); }
@Test public void testCreateStreamWithTopicWithStruct() throws Exception { final String queryStr = "CREATE STREAM orders (ordertime bigint, orderid varchar, itemid varchar, orderunits " + "double, arraycol array<double>, mapcol map<varchar, double>, " + "order_address STRUCT< number VARCHAR, street VARCHAR, zip INTEGER, city " + "VARCHAR, state VARCHAR >) WITH (registered_topic = 'orders_topic' , key='ordertime');"; final Statement statement = KSQL_PARSER.buildAst(queryStr, metaStore).get(0).getStatement(); Assert.assertTrue("testCreateStream failed.", statement instanceof CreateStream); final CreateStream createStream = (CreateStream)statement; assertThat(createStream.getName().toString().toUpperCase(), equalTo("ORDERS")); assertThat(createStream.getElements().size(), equalTo(7)); assertThat(createStream.getElements().get(0).getName().toString().toLowerCase(), equalTo("ordertime")); assertThat(createStream.getElements().get(6).getType().getKsqlType(), equalTo(Type.KsqlType.STRUCT)); final Struct struct = (Struct) createStream.getElements().get(6).getType(); assertThat(struct.getItems().size(), equalTo(5)); assertThat(struct.getItems().get(0).getRight().getKsqlType(), equalTo(Type.KsqlType.STRING)); assertThat(createStream.getProperties().get(DdlConfig.TOPIC_NAME_PROPERTY).toString().toLowerCase(), equalTo("'orders_topic'")); }
@Test public void testCreateStream() throws Exception { final String queryStr = "CREATE STREAM orders (ordertime bigint, orderid varchar, itemid varchar, orderunits " + "double) WITH (value_format = 'avro', " + "avroschemafile='/Users/hojjat/avro_order_schema.avro',kafka_topic='orders_topic');"; final Statement statement = KSQL_PARSER.buildAst(queryStr, metaStore).get(0).getStatement(); Assert.assertTrue("testCreateStream failed.", statement instanceof CreateStream); final CreateStream createStream = (CreateStream)statement; Assert.assertTrue("testCreateStream failed.", createStream.getName().toString().equalsIgnoreCase("ORDERS")); Assert.assertTrue("testCreateStream failed.", createStream.getElements().size() == 4); Assert.assertTrue("testCreateStream failed.", createStream.getElements().get(0).getName().toString().equalsIgnoreCase("ordertime")); Assert.assertTrue("testCreateStream failed.", createStream.getProperties().get(DdlConfig.KAFKA_TOPIC_NAME_PROPERTY).toString().equalsIgnoreCase("'orders_topic'")); Assert.assertTrue("testCreateStream failed.", createStream.getProperties().get(DdlConfig .VALUE_FORMAT_PROPERTY).toString().equalsIgnoreCase("'avro'")); Assert.assertTrue("testCreateStream failed.", createStream.getProperties().get(DdlConfig.AVRO_SCHEMA_FILE).toString().equalsIgnoreCase("'/Users/hojjat/avro_order_schema.avro'")); }