return SchemaBuilder.bool();
case PgOid.BIT_ARRAY: case PgOid.VARBIT: return column.length() > 1 ? Bits.builder(column.length()) : SchemaBuilder.bool(); case PgOid.INTERVAL: return MicroDuration.builder();
@Test public void shouldHaveSchemaForSource() { Schema schema = source.schema(); assertThat(schema.name()).isNotEmpty(); assertThat(schema.version()).isNotNull(); assertThat(schema.field(SourceInfo.SERVER_NAME).schema()).isEqualTo(Schema.STRING_SCHEMA); assertThat(schema.field(SourceInfo.REPLICA_SET_NAME).schema()).isEqualTo(Schema.STRING_SCHEMA); assertThat(schema.field(SourceInfo.NAMESPACE).schema()).isEqualTo(Schema.STRING_SCHEMA); assertThat(schema.field(SourceInfo.TIMESTAMP).schema()).isEqualTo(Schema.INT32_SCHEMA); assertThat(schema.field(SourceInfo.ORDER).schema()).isEqualTo(Schema.INT32_SCHEMA); assertThat(schema.field(SourceInfo.OPERATION_ID).schema()).isEqualTo(Schema.OPTIONAL_INT64_SCHEMA); assertThat(schema.field(SourceInfo.INITIAL_SYNC).schema()).isEqualTo(SchemaBuilder.bool().optional().defaultValue(false).build()); }
return new SchemaAndValue(SchemaBuilder.int32().optional(), value == null ? null : new Integer(((char) value))); } else if (cls.isAssignableFrom(Boolean.class)) { return new SchemaAndValue(SchemaBuilder.bool().optional(), value); } else if (cls.isAssignableFrom(Float.class)) { return new SchemaAndValue(SchemaBuilder.float32().optional(), value);
private SchemaBuilder convertFieldType(Schema.Type type) { switch (type) { case INT8: return SchemaBuilder.int8(); case INT16: return SchemaBuilder.int16(); case INT32: return SchemaBuilder.int32(); case INT64: return SchemaBuilder.int64(); case FLOAT32: return SchemaBuilder.float32(); case FLOAT64: return SchemaBuilder.float64(); case BOOLEAN: return SchemaBuilder.bool(); case STRING: return SchemaBuilder.string(); default: throw new DataException("Unexpected type in Cast transformation: " + type); } }
@TestFactory @DisplayName("tests for boolean field conversions") public List<DynamicTest> testBooleanFieldConverter() { SinkFieldConverter converter = new BooleanFieldConverter(); List<DynamicTest> tests = new ArrayList<>(); new ArrayList<>(Arrays.asList(true,false)).forEach(el -> { tests.add(dynamicTest("conversion with " + converter.getClass().getSimpleName() + " for "+el, () -> assertEquals(el, ((BsonBoolean)converter.toBson(el)).getValue()) )); }); tests.add(dynamicTest("optional type conversion checks", () -> { Schema valueOptionalDefault = SchemaBuilder.bool().optional().defaultValue(true); assertAll("", () -> assertThrows(DataException.class, () -> converter.toBson(null, Schema.BOOLEAN_SCHEMA)), () -> assertEquals(new BsonNull(), converter.toBson(null, Schema.OPTIONAL_BOOLEAN_SCHEMA)), () -> assertEquals(valueOptionalDefault.defaultValue(), converter.toBson(null, valueOptionalDefault).asBoolean().getValue()) ); })); return tests; }
@Test(expected = ConversionConnectException.class) public void testBadDecimal() { final String fieldName = "Decimal"; Schema kafkaConnectTestSchema = SchemaBuilder .struct() .field(fieldName, SchemaBuilder.bool().name(Decimal.LOGICAL_NAME)) .build(); new BigQuerySchemaConverter(false).convertSchema(kafkaConnectTestSchema); }
@Test(expected = ConversionConnectException.class) public void testBadTimestamp() { final String fieldName = "Timestamp"; Schema kafkaConnectTestSchema = SchemaBuilder .struct() .field(fieldName, SchemaBuilder.bool().name(Timestamp.LOGICAL_NAME)) .build(); new BigQuerySchemaConverter(false).convertSchema(kafkaConnectTestSchema); }
@Test public void testNullableStruct() { final String nullableFieldName = "nullableStruct"; final Map<String, Object> bigQueryExpectedRecord = new HashMap<>(); Schema kafkaConnectSchema = SchemaBuilder .struct() .field(nullableFieldName, SchemaBuilder.struct().field("foobar", SchemaBuilder.bool().build()).optional().build()) .build(); Struct kafkaConnectStruct = new Struct(kafkaConnectSchema); kafkaConnectStruct.put(nullableFieldName, null); SinkRecord kafkaConnectRecord = spoofSinkRecord(kafkaConnectSchema, kafkaConnectStruct); Map<String, Object> bigQueryTestRecord = new BigQueryRecordConverter(SHOULD_CONVERT_DOUBLE).convertRecord(kafkaConnectRecord); assertEquals(bigQueryExpectedRecord, bigQueryTestRecord); }
return SchemaBuilder.bool();
builder = SchemaBuilder.bool(); break;
case PgOid.BIT_ARRAY: case PgOid.VARBIT: return column.length() > 1 ? Bits.builder(column.length()) : SchemaBuilder.bool(); case PgOid.INTERVAL: return MicroDuration.builder();