protected Node visitCreateTable(final CreateTable node, final Object context) { return new CreateTable(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) ))); }
@Override protected Void visitCreateTable(final CreateTable node, final Integer indent) { builder.append("CREATE TABLE "); if (node.isNotExists()) { builder.append("IF NOT EXISTS "); builder.append(node.getName()) .append(" "); if (!node.getElements().isEmpty()) { builder.append("("); boolean addComma = false; for (final TableElement tableElement: node.getElements()) { if (addComma) { builder.append(", "); for (final Map.Entry property: node.getProperties().entrySet()) { if (addComma) { builder.append(", ");
@Test public void testCreateTableWithTopic() { final String queryStr = "CREATE TABLE users (usertime bigint, userid varchar, regionid varchar, gender varchar) WITH (registered_topic = 'users_topic', key='userid', statestore='user_statestore');"; 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("testRegisterTopic failed.", rewrittenStatement instanceof CreateTable); final CreateTable createTable = (CreateTable)rewrittenStatement; assertThat(createTable.getName().toString(), equalTo("USERS")); assertThat(createTable.getElements().size(), equalTo(4)); assertThat(createTable.getElements().get(0).getName(), equalTo("USERTIME")); assertThat(createTable.getProperties().get(DdlConfig.TOPIC_NAME_PROPERTY).toString(), equalTo("'users_topic'")); }
private CommandId getTopicTableCommandId(final CreateTable createTable) { return getTableCommandId(createTable.getName().toString()); }
@Override public AbstractStreamCreateStatement copyWith(final List<TableElement> elements, final Map<String, Expression> properties) { return new CreateTable(name, elements, notExists, properties); }
@Test public void testCreateTable() { final String queryStr = "CREATE TABLE users (usertime bigint, userid varchar, regionid varchar, gender varchar) " + "WITH (kafka_topic = 'users_topic', value_format='json', key = 'userid');"; 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("testRegisterTopic failed.", rewrittenStatement instanceof CreateTable); final CreateTable createTable = (CreateTable)rewrittenStatement; assertThat(createTable.getName().toString(), equalTo("USERS")); assertThat(createTable.getElements().size(), equalTo(4)); assertThat(createTable.getElements().get(0).getName(), equalTo("USERTIME")); assertThat(createTable.getProperties().get(DdlConfig.KAFKA_TOPIC_NAME_PROPERTY) .toString(), equalTo("'users_topic'")); assertThat(createTable.getProperties().get(DdlConfig.VALUE_FORMAT_PROPERTY) .toString(), equalTo("'json'")); }
@Test public void shouldRunCtStatement() { // Given: final PreparedStatement<CreateTable> ct = new PreparedStatement<>("CT", new CreateTable(SOME_NAME, emptyList(), false, emptyMap())); when(engine.parseStatements(anyString())).thenReturn(ImmutableList.of(ct)); // When: standaloneExecutor.start(); // Then: verify(engine).execute(ct, ksqlConfig, emptyMap()); }
@Test public void testCreateTableWithTopic() { final String queryStr = "CREATE TABLE users (usertime bigint, userid varchar, regionid varchar, gender varchar) WITH (registered_topic = 'users_topic', key='userid', statestore='user_statestore');"; final Statement statement = KSQL_PARSER.buildAst(queryStr, metaStore).get(0).getStatement(); Assert.assertTrue("testRegisterTopic failed.", statement instanceof CreateTable); final CreateTable createTable = (CreateTable)statement; Assert.assertTrue("testCreateTable failed.", createTable.getName().toString().equalsIgnoreCase("USERS")); Assert.assertTrue("testCreateTable failed.", createTable.getElements().size() == 4); Assert.assertTrue("testCreateTable failed.", createTable.getElements().get(0).getName().toString().equalsIgnoreCase("usertime")); Assert.assertTrue("testCreateTable failed.", createTable.getProperties().get(DdlConfig.TOPIC_NAME_PROPERTY).toString().equalsIgnoreCase("'users_topic'")); }
@Override public Node visitCreateTable(final SqlBaseParser.CreateTableContext context) { return new CreateTable( Optional.of(getLocation(context)), getQualifiedName(context.qualifiedName()), visit(context.tableElement(), TableElement.class), context.EXISTS() != null, processTableProperties(context.tableProperties()) ); }
@Test public void testCreateTable() { final String queryStr = "CREATE TABLE users (usertime bigint, userid varchar, regionid varchar, gender varchar) " + "WITH (kafka_topic = 'users_topic', value_format='json', key = 'userid');"; final Statement statement = KSQL_PARSER.buildAst(queryStr, metaStore).get(0).getStatement(); Assert.assertTrue("testRegisterTopic failed.", statement instanceof CreateTable); final CreateTable createTable = (CreateTable)statement; Assert.assertTrue("testCreateTable failed.", createTable.getName().toString().equalsIgnoreCase("USERS")); Assert.assertTrue("testCreateTable failed.", createTable.getElements().size() == 4); Assert.assertTrue("testCreateTable failed.", createTable.getElements().get(0).getName().toString().equalsIgnoreCase("usertime")); Assert.assertTrue("testCreateTable failed.", createTable.getProperties().get(DdlConfig.KAFKA_TOPIC_NAME_PROPERTY) .toString().equalsIgnoreCase("'users_topic'")); Assert.assertTrue("testCreateTable failed.", createTable.getProperties().get(DdlConfig.VALUE_FORMAT_PROPERTY) .toString().equalsIgnoreCase("'json'")); }