Class JdbcSinkDataTypesConverter
java.lang.Object
io.debezium.connector.binlog.converters.JdbcSinkDataTypesConverter
- All Implemented Interfaces:
io.debezium.spi.converter.CustomConverter<org.apache.kafka.connect.data.SchemaBuilder,io.debezium.spi.converter.RelationalColumn>
public class JdbcSinkDataTypesConverter
extends Object
implements io.debezium.spi.converter.CustomConverter<org.apache.kafka.connect.data.SchemaBuilder,io.debezium.spi.converter.RelationalColumn>
MySQL handles several data types differently between streaming and snapshot and its important
that data types be handled consistently across both phases for JDBC sink connectors to create
the sink tables properly that adhere to the data provided in both phases.
This converter specific makes the following changes:
-
BOOLEAN columns always emitted as INT16 schema types, true=1 and false=0.
- REAL columns always emitted as FLOAT64 schema types.
- String-based columns always emitted with "__debezium.source.column.character_set" parameter.- Author:
- Chris Cranford
-
Nested Class Summary
Nested classes/interfaces inherited from interface io.debezium.spi.converter.CustomConverter
io.debezium.spi.converter.CustomConverter.Converter, io.debezium.spi.converter.CustomConverter.ConverterRegistration<S extends Object> -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final Floatprivate static final Doubleprivate static final Shortprivate static final org.slf4j.Loggerstatic final Stringstatic final Stringstatic final Stringprivate Predicate<io.debezium.spi.converter.RelationalColumn>private Predicate<io.debezium.spi.converter.RelationalColumn>private Predicate<io.debezium.spi.converter.RelationalColumn>static final Stringprivate boolean -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidconfigure(Properties props) voidconverterFor(io.debezium.spi.converter.RelationalColumn field, io.debezium.spi.converter.CustomConverter.ConverterRegistration<org.apache.kafka.connect.data.SchemaBuilder> registration) private io.debezium.spi.converter.CustomConverter.ConvertergetBooleanConverter(io.debezium.spi.converter.RelationalColumn field) private io.debezium.spi.converter.CustomConverter.ConvertergetRealConverterDouble(io.debezium.spi.converter.RelationalColumn field) private io.debezium.spi.converter.CustomConverter.ConvertergetRealConverterFloat(io.debezium.spi.converter.RelationalColumn field) private io.debezium.spi.converter.CustomConverter.ConvertergetStringConverter(io.debezium.spi.converter.RelationalColumn field) private static short
-
Field Details
-
LOGGER
private static final org.slf4j.Logger LOGGER -
INT16_FALLBACK
-
FLOAT32_FALLBACK
-
FLOAT64_FALLBACK
-
SELECTOR_BOOLEAN_PROPERTY
- See Also:
-
SELECTOR_REAL_PROPERTY
- See Also:
-
SELECTOR_STRING_PROPERTY
- See Also:
-
TREAT_REAL_AS_DOUBLE
- See Also:
-
selectorBoolean
-
selectorReal
-
selectorString
-
treatRealAsDouble
private boolean treatRealAsDouble
-
-
Constructor Details
-
JdbcSinkDataTypesConverter
public JdbcSinkDataTypesConverter()
-
-
Method Details
-
configure
- Specified by:
configurein interfaceio.debezium.spi.converter.CustomConverter<org.apache.kafka.connect.data.SchemaBuilder,io.debezium.spi.converter.RelationalColumn>
-
converterFor
public void converterFor(io.debezium.spi.converter.RelationalColumn field, io.debezium.spi.converter.CustomConverter.ConverterRegistration<org.apache.kafka.connect.data.SchemaBuilder> registration) - Specified by:
converterForin interfaceio.debezium.spi.converter.CustomConverter<org.apache.kafka.connect.data.SchemaBuilder,io.debezium.spi.converter.RelationalColumn>
-
getBooleanConverter
private io.debezium.spi.converter.CustomConverter.Converter getBooleanConverter(io.debezium.spi.converter.RelationalColumn field) -
getRealConverterDouble
private io.debezium.spi.converter.CustomConverter.Converter getRealConverterDouble(io.debezium.spi.converter.RelationalColumn field) -
getRealConverterFloat
private io.debezium.spi.converter.CustomConverter.Converter getRealConverterFloat(io.debezium.spi.converter.RelationalColumn field) -
getStringConverter
private io.debezium.spi.converter.CustomConverter.Converter getStringConverter(io.debezium.spi.converter.RelationalColumn field) -
toTinyInt
-