use of io.confluent.ksql.GenericKey in project ksql by confluentinc.
the class SourceBuilderTest method shouldHandleMultiKeyField.
@Test
public void shouldHandleMultiKeyField() {
// Given:
givenMultiColumnSourceTable();
final List<ValueTransformerWithKey<GenericKey, GenericRow, GenericRow>> transformers = getTransformersFromTableSource(tableSource);
final GenericKey key = GenericKey.genericKey(1d, 2d);
// When:
final GenericRow withKeyAndPseudoCols = applyAllTransformers(key, transformers, row);
// Then:
assertThat(withKeyAndPseudoCols, equalTo(GenericRow.genericRow("baz", 123, HEADER_A, HEADER_B, null, A_ROWTIME, A_ROWPARTITION, A_ROWOFFSET, 1d, 2d)));
}
use of io.confluent.ksql.GenericKey in project ksql by confluentinc.
the class StepSchemaResolverTest method shouldResolveSchemaForStreamSelectKeyV2.
@Test
public void shouldResolveSchemaForStreamSelectKeyV2() {
// Given:
final UnqualifiedColumnReferenceExp keyExpression1 = new UnqualifiedColumnReferenceExp(ColumnName.of("ORANGE"));
final UnqualifiedColumnReferenceExp keyExpression2 = new UnqualifiedColumnReferenceExp(ColumnName.of("APPLE"));
final StreamSelectKey<GenericKey> step = new StreamSelectKey<>(PROPERTIES, streamSource, ImmutableList.of(keyExpression1, keyExpression2));
// When:
final LogicalSchema result = resolver.resolve(step, SCHEMA);
// Then:
assertThat(result, is(LogicalSchema.builder().keyColumn(keyExpression1.getColumnName(), SqlTypes.INTEGER).keyColumn(keyExpression2.getColumnName(), SqlTypes.BIGINT).valueColumns(SCHEMA.value()).build()));
}
use of io.confluent.ksql.GenericKey in project ksql by confluentinc.
the class StepSchemaResolverTest method shouldResolveSchemaForTableSelectKey.
@Test
public void shouldResolveSchemaForTableSelectKey() {
// Given:
final UnqualifiedColumnReferenceExp keyExpression1 = new UnqualifiedColumnReferenceExp(ColumnName.of("ORANGE"));
final UnqualifiedColumnReferenceExp keyExpression2 = new UnqualifiedColumnReferenceExp(ColumnName.of("APPLE"));
final TableSelectKey<GenericKey> step = new TableSelectKey<>(PROPERTIES, tableSource, formats, ImmutableList.of(keyExpression1, keyExpression2));
// When:
final LogicalSchema result = resolver.resolve(step, SCHEMA);
// Then:
assertThat(result, is(LogicalSchema.builder().keyColumn(keyExpression1.getColumnName(), SqlTypes.INTEGER).keyColumn(keyExpression2.getColumnName(), SqlTypes.BIGINT).valueColumns(SCHEMA.value()).build()));
}
use of io.confluent.ksql.GenericKey in project ksql by confluentinc.
the class PartitionByParamsFactoryTest method shouldAppendNewKeyColumnsToValueIfPartitioningByMixOfColumnsAndExpressions.
@Test
public void shouldAppendNewKeyColumnsToValueIfPartitioningByMixOfColumnsAndExpressions() {
// Given:
final Mapper<GenericKey> mapper = partitionBy(ImmutableList.of(new ArithmeticBinaryExpression(Operator.ADD, new UnqualifiedColumnReferenceExp(COL0), new StringLiteral("-foo")), new UnqualifiedColumnReferenceExp(COL1), new FunctionCall(CONSTANT_UDF_NAME, ImmutableList.of(new UnqualifiedColumnReferenceExp(COL1))))).getMapper();
final ImmutableList<Object> originals = ImmutableList.copyOf(value.values());
// When:
final KeyValue<GenericKey, GenericRow> result = mapper.apply(key, value);
// Then:
assertThat(result.value, is(GenericRow.fromList(originals).append(OLD_KEY + "-foo").append(ConstantUdf.VALUE)));
}
use of io.confluent.ksql.GenericKey in project ksql by confluentinc.
the class PartitionByParamsFactoryTest method shouldPropagateNullValueWhenPartitioningByMixOfKeyAndNonKeyExpressions.
@Test
public void shouldPropagateNullValueWhenPartitioningByMixOfKeyAndNonKeyExpressions() {
// Given:
final Mapper<GenericKey> mapper = partitionBy(ImmutableList.of(new ArithmeticBinaryExpression(Operator.ADD, new UnqualifiedColumnReferenceExp(COL0), new StringLiteral("-foo")), new UnqualifiedColumnReferenceExp(COL1))).getMapper();
// When:
final KeyValue<GenericKey, GenericRow> result = mapper.apply(key, null);
// Then:
assertThat(result.key, is(genericKey(OLD_KEY + "-foo", null)));
assertThat(result.value, is(nullValue()));
}
Aggregations