Package io.debezium.connector.mysql
Class MySqlDefaultValueConverter
- java.lang.Object
-
- io.debezium.connector.mysql.MySqlDefaultValueConverter
-
@Immutable public class MySqlDefaultValueConverter extends Object
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
-
-
Field Summary
Fields Modifier and Type Field Description private MySqlValueConverters
converters
private static String
EPOCH_DATE
private static Pattern
EPOCH_EQUIVALENT_DATE
private static Pattern
EPOCH_EQUIVALENT_TIMESTAMP
private static String
EPOCH_TIMESTAMP
private static DateTimeFormatter
ISO_LOCAL_DATE_WITH_OPTIONAL_TIME
-
Constructor Summary
Constructors Constructor Description MySqlDefaultValueConverter(MySqlValueConverters converters)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private String
cleanTimestamp(String s)
Clean input timestamp to yyyy-mm-dd hh:mm:ss[.fffffffff] formatObject
convert(Column column, String value)
Converts a default value from the expected format to a logical object acceptable by the main JDBC converter.private Object
convertToBit(String value)
private Object
convertToBits(Column column, String value)
Converts a string object for an expected JDBC type ofTypes.BIT
.private Object
convertToBits(String value)
private Object
convertToBoolean(String value)
Converts a string object for an expected JDBC type ofTypes.BOOLEAN
.private Object
convertToDecimal(Column column, String value)
Converts a string object for an expected JDBC type ofTypes.DECIMAL
.private Object
convertToDouble(String value)
Converts a string object for an expected JDBC type ofTypes.DOUBLE
.private Object
convertToDuration(Column column, String value)
Converts a string object for an object type ofDuration
.private Object
convertToLocalDate(Column column, String value)
Converts a string object for an object type ofLocalDate
orLocalDateTime
in case of MySql Date type.private Object
convertToLocalDateTime(Column column, String value)
Converts a string object for an object type ofLocalDateTime
.private Object
convertToTimestamp(Column column, String value)
Converts a string object for an object type ofTimestamp
.private String
replaceFirstNonNumericSubstring(String s, int startIndex, char c)
Replace the first non-numeric substringColumnEditor
setColumnDefaultValue(ColumnEditor columnEditor)
private DateTimeFormatter
timestampFormat(int length)
-
-
-
Field Detail
-
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
-
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
-
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 ofLocalDate
orLocalDateTime
in 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 thedata
value; never nullvalue
- the string object to be converted into aLocalDate
type orLocalDateTime
in 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 thedata
value; never nullvalue
- the string object to be converted into aLocalDateTime
type;- 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 thedata
value; never nullvalue
- the string object to be converted into aTimestamp
type;- 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 thedata
value; never nullvalue
- the string object to be converted into aDuration
type;- 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.DOUBLE
type;- 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 thedata
value; never nullvalue
- the string object to be converted into aTypes.DECIMAL
type;- 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 thedata
value; never nullvalue
- the string object to be converted into aTypes.BIT
type;- 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.BOOLEAN
type;- 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
-
replaceFirstNonNumericSubstring
private String replaceFirstNonNumericSubstring(String s, int startIndex, char c)
Replace the first non-numeric substring- Parameters:
s
- the original stringstartIndex
- the beginning index, inclusivec
- the new character- Returns:
-
setColumnDefaultValue
public ColumnEditor setColumnDefaultValue(ColumnEditor columnEditor)
-
-