in eventmesh-connectors/eventmesh-connector-jdbc/src/main/java/org/apache/eventmesh/connector/jdbc/table/catalog/mysql/MysqlDefaultValueConvertorImpl.java [62:111]
public Object parseDefaultValue(Column<?> column, String defaultValueExpression) {
if (defaultValueExpression == null) {
return null;
}
defaultValueExpression = defaultValueExpression.trim();
if (NUMBER_DATA_TYPES.contains(column.getJdbcType()) && StringUtils.equalsAnyIgnoreCase(defaultValueExpression, Boolean.TRUE.toString(),
Boolean.FALSE.toString())) {
/*
* These types are synonyms for DECIMAL: DEC[(M[,D])] [UNSIGNED] [ZEROFILL], NUMERIC[(M[,D])] [UNSIGNED] [ZEROFILL], FIXED[(M[,D])]
* [UNSIGNED] [ZEROFILL]
*/
if (column.getJdbcType() == JDBCType.DECIMAL || column.getJdbcType() == JDBCType.NUMERIC) {
return convert2Decimal(column, defaultValueExpression);
}
return StringUtils.equalsIgnoreCase(Boolean.TRUE.toString(), defaultValueExpression) ? 1 : 0;
}
if (BINARY_DATA_TYPES.contains(column.getJdbcType()) && column.getDefaultValueExpression() != null) {
// https://dev.mysql.com/doc/refman/8.0/en/binary-varbinary.html
String cleanedDefaultValueExpression = StringUtils.replace(column.getDefaultValueExpression(), "\\0", "");
return ByteArrayUtils.bytesToHexString(cleanedDefaultValueExpression.getBytes(Constants.DEFAULT_CHARSET));
}
switch (column.getDataType().getSQLType()) {
case DATE:
return convert2LocalDate(column, defaultValueExpression);
case TIMESTAMP:
return convertToLocalDateTime(column, defaultValueExpression);
case TIMESTAMP_WITH_TIMEZONE:
return convertToTimestamp(column, defaultValueExpression);
case TIME:
return convertToLocalTime(column, defaultValueExpression);
case BOOLEAN:
return convert2Boolean(column, defaultValueExpression);
case BIT:
return convertToBits(column, defaultValueExpression);
case NUMERIC:
case DECIMAL:
return convert2Decimal(column, defaultValueExpression);
case FLOAT:
case DOUBLE:
case REAL:
return Double.parseDouble(defaultValueExpression);
default:
}
return defaultValueExpression;
}