in flink-cdc-connect/flink-cdc-source-connectors/flink-connector-mysql-cdc/src/main/java/io/debezium/connector/mysql/MySqlDefaultValueConverter.java [151:196]
public Object convert(Column column, String value) {
if (value == null) {
return value;
}
// trim non varchar data types before converting
if (TRIM_DATA_TYPES.contains(column.jdbcType())) {
value = value.trim();
}
// strip character set introducer on default value expressions
value = stripCharacterSetIntroducer(value);
// boolean is also INT(1) or TINYINT(1)
if (NUMBER_DATA_TYPES.contains(column.jdbcType())
&& ("true".equalsIgnoreCase(value) || "false".equalsIgnoreCase(value))) {
if (Types.DECIMAL == column.jdbcType() || Types.NUMERIC == column.jdbcType()) {
return convertToDecimal(column, value.equalsIgnoreCase("true") ? "1" : "0");
}
return value.equalsIgnoreCase("true") ? 1 : 0;
}
switch (column.jdbcType()) {
case Types.DATE:
return convertToLocalDate(column, value);
case Types.TIMESTAMP:
return convertToLocalDateTime(column, value);
case Types.TIMESTAMP_WITH_TIMEZONE:
return convertToTimestamp(column, value);
case Types.TIME:
return convertToDuration(column, value);
case Types.BOOLEAN:
return convertToBoolean(value);
case Types.BIT:
return convertToBits(column, value);
case Types.NUMERIC:
case Types.DECIMAL:
return convertToDecimal(column, value);
case Types.FLOAT:
case Types.DOUBLE:
case Types.REAL:
return convertToDouble(value);
}
return value;
}