use of io.confluent.ksql.execution.streams.materialization.Row in project ksql by confluentinc.
the class KsMaterializationFunctionalTest method shouldQueryMaterializedTableForAggregatedStream.
@Test
public void shouldQueryMaterializedTableForAggregatedStream() {
// Given:
final PersistentQueryMetadata query = executeQuery("CREATE TABLE " + output + " AS" + " SELECT USERID, COUNT(*) AS COUNT FROM " + USER_STREAM + " GROUP BY USERID;");
final LogicalSchema schema = schema("COUNT", SqlTypes.BIGINT);
final Map<String, GenericRow> rows = waitForUniqueUserRows(STRING_DESERIALIZER, schema);
// When:
final Materialization materialization = query.getMaterialization(queryId, contextStacker).get();
// Then:
assertThat(materialization.windowType(), is(Optional.empty()));
final MaterializedTable table = materialization.nonWindowed();
rows.forEach((rowKey, value) -> {
final GenericKey key = genericKey(rowKey);
final Iterator<Row> rowIterator = withRetry(() -> table.get(key, PARTITION));
assertThat(rowIterator.hasNext(), is(true));
final Row row = rowIterator.next();
assertThat(row.schema(), is(schema));
assertThat(row.key(), is(key));
assertThat(row.value(), is(value));
});
final GenericKey key = genericKey("Won't find me");
assertThat("unknown key", withRetry(() -> table.get(key, PARTITION)).hasNext(), is(false));
}
use of io.confluent.ksql.execution.streams.materialization.Row in project ksql by confluentinc.
the class KsMaterializationFunctionalTest method shouldQueryMaterializedTableWithMultipleAggregationColumns.
@Test
public void shouldQueryMaterializedTableWithMultipleAggregationColumns() {
// Given:
final PersistentQueryMetadata query = executeQuery("CREATE TABLE " + output + " AS" + " SELECT USERID, COUNT(1) AS COUNT, SUM(REGISTERTIME) AS SUM FROM " + USER_TABLE + " GROUP BY USERID;");
final LogicalSchema schema = schema("COUNT", SqlTypes.BIGINT, "SUM", SqlTypes.BIGINT);
final Map<String, GenericRow> rows = waitForUniqueUserRows(STRING_DESERIALIZER, schema);
// When:
final Materialization materialization = query.getMaterialization(queryId, contextStacker).get();
// Then:
assertThat(materialization.windowType(), is(Optional.empty()));
final MaterializedTable table = materialization.nonWindowed();
rows.forEach((rowKey, value) -> {
final GenericKey key = genericKey(rowKey);
final List<Row> rowList = withRetry(() -> Lists.newArrayList(table.get(key, PARTITION)));
assertThat(rowList.size(), is(1));
assertThat(rowList.get(0).schema(), is(schema));
assertThat(rowList.get(0).key(), is(key));
assertThat(rowList.get(0).value(), is(value));
});
}
Aggregations