Class JdbcSinkDataTypesConverter
java.lang.Object
io.debezium.connector.mysql.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
Modifier and TypeFieldDescriptionprivate static final Float
private static final Double
private static final Short
private static final org.slf4j.Logger
static final String
static final String
static final String
private Predicate<io.debezium.spi.converter.RelationalColumn>
private Predicate<io.debezium.spi.converter.RelationalColumn>
private Predicate<io.debezium.spi.converter.RelationalColumn>
static final String
private boolean
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
configure
(Properties props) void
converterFor
(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.Converter
getBooleanConverter
(io.debezium.spi.converter.RelationalColumn field) private io.debezium.spi.converter.CustomConverter.Converter
getRealConverterDouble
(io.debezium.spi.converter.RelationalColumn field) private io.debezium.spi.converter.CustomConverter.Converter
getRealConverterFloat
(io.debezium.spi.converter.RelationalColumn field) private io.debezium.spi.converter.CustomConverter.Converter
getStringConverter
(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:
configure
in 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:
converterFor
in 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
-