in eventmesh-connectors/eventmesh-connector-canal/src/main/java/org/apache/eventmesh/connector/canal/SqlUtils.java [528:578]
public static String convertToString(Object value) {
if (value == null) {
return null;
}
if (value instanceof String) {
return (String) value;
}
if (value instanceof BigInteger) {
return value.toString();
}
if (value instanceof BigDecimal) {
return ((BigDecimal) value).toPlainString();
}
if (value instanceof Number) {
return new BigDecimal(value.toString()).toPlainString();
}
if (value instanceof Boolean) {
return Boolean.TRUE.equals(value) ? "1" : "0";
}
if (value instanceof byte[]) {
return "0x" + bytes2hex((byte[]) value);
}
if (value instanceof Timestamp) {
long nanos = ((Timestamp) value).getNanos();
value = Instant.ofEpochMilli(((Timestamp) value).getTime() - (nanos / 1000000)).plusNanos(nanos).atZone(ZoneId.systemDefault())
.toLocalDateTime();
} else if (value instanceof Date) {
value = ((Date) value).toLocalDate().atTime(0, 0);
} else if (value instanceof Time) {
value = LocalDateTime.of(LocalDate.of(1970, 1, 1),
Instant.ofEpochMilli(((Time) value).getTime()).atZone(ZoneId.systemDefault()).toLocalTime());
} else if (value instanceof java.util.Date) {
value = ((java.util.Date) value).toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
}
if (value instanceof LocalDateTime) {
return coverLocalDateTime2String((LocalDateTime) value);
} else if (value instanceof OffsetDateTime) {
OffsetDateTime zone = (OffsetDateTime) value;
String datetimeStr = coverLocalDateTime2String(zone.toLocalDateTime());
String zonedStr = zone.getOffset().toString();
if ("Z".equals(zonedStr)) {
return datetimeStr + "+00:00";
}
return datetimeStr + zonedStr;
} else if (!(value instanceof LocalTime)) {
return value.toString();
} else {
LocalTime local3 = (LocalTime) value;
return String.format("%02d:%02d:%02d", local3.getHour(), local3.getMinute(), local3.getSecond());
}
}