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
  • Field Details

    • LOGGER

      private static final org.slf4j.Logger LOGGER
    • INT16_FALLBACK

      private static final Short INT16_FALLBACK
    • FLOAT32_FALLBACK

      private static final Float FLOAT32_FALLBACK
    • FLOAT64_FALLBACK

      private static final Double FLOAT64_FALLBACK
    • SELECTOR_BOOLEAN_PROPERTY

      public static final String SELECTOR_BOOLEAN_PROPERTY
      See Also:
    • SELECTOR_REAL_PROPERTY

      public static final String SELECTOR_REAL_PROPERTY
      See Also:
    • SELECTOR_STRING_PROPERTY

      public static final String SELECTOR_STRING_PROPERTY
      See Also:
    • TREAT_REAL_AS_DOUBLE

      public static final String TREAT_REAL_AS_DOUBLE
      See Also:
    • selectorBoolean

      private Predicate<io.debezium.spi.converter.RelationalColumn> selectorBoolean
    • selectorReal

      private Predicate<io.debezium.spi.converter.RelationalColumn> selectorReal
    • selectorString

      private Predicate<io.debezium.spi.converter.RelationalColumn> selectorString
    • treatRealAsDouble

      private boolean treatRealAsDouble
  • Constructor Details

    • JdbcSinkDataTypesConverter

      public JdbcSinkDataTypesConverter()
  • Method Details

    • configure

      public void configure(Properties props)
      Specified by:
      configure in interface io.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 interface io.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

      private static short toTinyInt(Boolean value)