Package io.debezium.connector.mysql
Class MySqlDefaultValueConverter
- java.lang.Object
-
- io.debezium.connector.mysql.MySqlDefaultValueConverter
-
- All Implemented Interfaces:
DefaultValueConverter
@Immutable public class MySqlDefaultValueConverter extends Object implements DefaultValueConverter
This class is used by a DDL parser to convert the string default value to a Java type recognized by value converters for a subset of types. The functionality is kept separate from the main converters to centralize the formatting logic if necessary.- Author:
- Jiri Pechanec
- See Also:
AbstractRowsEventDataDeserializer
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface io.debezium.relational.DefaultValueConverter
DefaultValueConverter.DefaultValueMapper
-
-
Field Summary
Fields Modifier and Type Field Description private MySqlValueConvertersconvertersprivate static StringEPOCH_DATEprivate static PatternEPOCH_EQUIVALENT_DATEprivate static PatternEPOCH_EQUIVALENT_TIMESTAMPprivate static StringEPOCH_TIMESTAMPprivate static DateTimeFormatterISO_LOCAL_DATE_WITH_OPTIONAL_TIMEprivate static org.slf4j.LoggerLOGGERprivate static PatternTIMESTAMP_PATTERNprivate static Set<Integer>TRIM_DATA_TYPES
-
Constructor Summary
Constructors Constructor Description MySqlDefaultValueConverter(MySqlValueConverters converters)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private StringcleanTimestamp(String s)Clean input timestamp to yyyy-mm-dd hh:mm:ss[.fffffffff] formatObjectconvert(Column column, String value)Converts a default value from the expected format to a logical object acceptable by the main JDBC converter.private ObjectconvertToBit(String value)private ObjectconvertToBits(Column column, String value)Converts a string object for an expected JDBC type ofTypes.BIT.private ObjectconvertToBits(String value)private ObjectconvertToBoolean(String value)Converts a string object for an expected JDBC type ofTypes.BOOLEAN.private ObjectconvertToDecimal(Column column, String value)Converts a string object for an expected JDBC type ofTypes.DECIMAL.private ObjectconvertToDouble(String value)Converts a string object for an expected JDBC type ofTypes.DOUBLE.private ObjectconvertToDuration(Column column, String value)Converts a string object for an object type ofDuration.private ObjectconvertToLocalDate(Column column, String value)Converts a string object for an object type ofLocalDateorLocalDateTimein case of MySql Date type.private ObjectconvertToLocalDateTime(Column column, String value)Converts a string object for an object type ofLocalDateTime.private ObjectconvertToTimestamp(Column column, String value)Converts a string object for an object type ofTimestamp.Optional<Object>parseDefaultValue(Column column, String defaultValueExpression)This interface is used by a DDL parser to convert the string default value to a Java type recognized by value converters for a subset of types.private StringreplaceFirstNonNumericSubstring(String s, int startIndex, char c)Replace the first non-numeric substringprivate DateTimeFormattertimestampFormat(int length)
-
-
-
Field Detail
-
LOGGER
private static final org.slf4j.Logger LOGGER
-
EPOCH_EQUIVALENT_TIMESTAMP
private static final Pattern EPOCH_EQUIVALENT_TIMESTAMP
-
EPOCH_EQUIVALENT_DATE
private static final Pattern EPOCH_EQUIVALENT_DATE
-
EPOCH_TIMESTAMP
private static final String EPOCH_TIMESTAMP
- See Also:
- Constant Field Values
-
EPOCH_DATE
private static final String EPOCH_DATE
- See Also:
- Constant Field Values
-
TIMESTAMP_PATTERN
private static final Pattern TIMESTAMP_PATTERN
-
TRIM_DATA_TYPES
@Immutable private static final Set<Integer> TRIM_DATA_TYPES
-
ISO_LOCAL_DATE_WITH_OPTIONAL_TIME
private static final DateTimeFormatter ISO_LOCAL_DATE_WITH_OPTIONAL_TIME
-
converters
private final MySqlValueConverters converters
-
-
Constructor Detail
-
MySqlDefaultValueConverter
public MySqlDefaultValueConverter(MySqlValueConverters converters)
-
-
Method Detail
-
parseDefaultValue
public Optional<Object> parseDefaultValue(Column column, String defaultValueExpression)
This interface is used by a DDL parser to convert the string default value to a Java type recognized by value converters for a subset of types.- Specified by:
parseDefaultValuein interfaceDefaultValueConverter- Parameters:
column- the column definition describing thedatavalue; never nulldefaultValueExpression- the default value literal; may be null- Returns:
- value converted to a Java type; optional
-
convert
public Object convert(Column column, String value)
Converts a default value from the expected format to a logical object acceptable by the main JDBC converter.- Parameters:
column- column definitionvalue- string formatted default value- Returns:
- value converted to a Java type
-
convertToLocalDate
private Object convertToLocalDate(Column column, String value)
Converts a string object for an object type ofLocalDateorLocalDateTimein case of MySql Date type. If the column definition allows null and default value is 0000-00-00, we need return null; else 0000-00-00 will be replaced with 1970-01-01;- Parameters:
column- the column definition describing thedatavalue; never nullvalue- the string object to be converted into aLocalDatetype orLocalDateTimein case of MySql Date type;- Returns:
- the converted value;
-
convertToLocalDateTime
private Object convertToLocalDateTime(Column column, String value)
Converts a string object for an object type ofLocalDateTime. If the column definition allows null and default value is 0000-00-00 00:00:00, we need return null, else 0000-00-00 00:00:00 will be replaced with 1970-01-01 00:00:00;- Parameters:
column- the column definition describing thedatavalue; never nullvalue- the string object to be converted into aLocalDateTimetype;- Returns:
- the converted value;
-
convertToTimestamp
private Object convertToTimestamp(Column column, String value)
Converts a string object for an object type ofTimestamp. If the column definition allows null and default value is 0000-00-00 00:00:00, we need return null, else 0000-00-00 00:00:00 will be replaced with 1970-01-01 00:00:00;- Parameters:
column- the column definition describing thedatavalue; never nullvalue- the string object to be converted into aTimestamptype;- Returns:
- the converted value;
-
convertToDuration
private Object convertToDuration(Column column, String value)
Converts a string object for an object type ofDuration.- Parameters:
column- the column definition describing thedatavalue; never nullvalue- the string object to be converted into aDurationtype;- Returns:
- the converted value;
-
convertToDouble
private Object convertToDouble(String value)
Converts a string object for an expected JDBC type ofTypes.DOUBLE.- Parameters:
value- the string object to be converted into aTypes.DOUBLEtype;- Returns:
- the converted value;
-
convertToDecimal
private Object convertToDecimal(Column column, String value)
Converts a string object for an expected JDBC type ofTypes.DECIMAL.- Parameters:
column- the column definition describing thedatavalue; never nullvalue- the string object to be converted into aTypes.DECIMALtype;- Returns:
- the converted value;
-
convertToBits
private Object convertToBits(Column column, String value)
Converts a string object for an expected JDBC type ofTypes.BIT.- Parameters:
column- the column definition describing thedatavalue; never nullvalue- the string object to be converted into aTypes.BITtype;- Returns:
- the converted value;
-
convertToBoolean
private Object convertToBoolean(String value)
Converts a string object for an expected JDBC type ofTypes.BOOLEAN.- Parameters:
value- the string object to be converted into aTypes.BOOLEANtype;- Returns:
- the converted value;
-
timestampFormat
private DateTimeFormatter timestampFormat(int length)
-
cleanTimestamp
private String cleanTimestamp(String s)
Clean input timestamp to yyyy-mm-dd hh:mm:ss[.fffffffff] format- Parameters:
s- input timestamp- Returns:
- cleaned timestamp
-
-