fix(sync): 修复null字符串=null的识别

This commit is contained in:
v-zhangjc9
2024-06-17 18:48:49 +08:00
parent ef983f9eb7
commit 4ffcfe3ab5
2 changed files with 16 additions and 22 deletions

View File

@@ -136,41 +136,23 @@ public class TypeConverterV2 implements TypeConverter {
private Object covertValue(Schema schema, String name, Object value) {
try {
if (ObjectUtil.isNull(value)) {
return value;
if (isNullValue(value)) {
return null;
} else if (NULLABLE_BOOLEAN_SCHEMA.equals(schema) || BOOLEAN_SCHEMA.equals(schema)) {
if (isNullValue(value)) {
return null;
}
return value instanceof String ? Boolean.valueOf((String) value) : value;
} else if (NULLABLE_INT_SCHEMA.equals(schema) || INT_SCHEMA.equals(schema)) {
if (isNullValue(value)) {
return null;
}
return value instanceof String ? Integer.valueOf((String) value) : value;
} else if (NULLABLE_LONG_SCHEMA.equals(schema) || LONG_SCHEMA.equals(schema)) {
if (isNullValue(value)) {
return null;
}
return value instanceof String ? Long.valueOf((String) value) : value;
} else if (NULLABLE_FLOAT_SCHEMA.equals(schema) || FLOAT_SCHEMA.equals(schema)) {
if (isNullValue(value)) {
return null;
}
return value instanceof String ? Float.valueOf((String) value) : value;
} else if (NULLABLE_DOUBLE_SCHEMA.equals(schema) || DOUBLE_SCHEMA.equals(schema)) {
if (isNullValue(value)) {
return null;
}
return value instanceof String ? Double.valueOf((String) value) : value;
} else if (NULLABLE_STRING_SCHEMA.equals(schema) || STRING_SCHEMA.equals(schema)) {
return StringData.fromString((String) value);
} else {
for (Schema type : schema.getTypes()) {
if (type.getLogicalType() instanceof LogicalTypes.Decimal) {
if (isNullValue(value)) {
return null;
}
LogicalTypes.Decimal decimalType = (LogicalTypes.Decimal) type.getLogicalType();
int precision = decimalType.getPrecision();
int scala = decimalType.getScale();
@@ -188,6 +170,6 @@ public class TypeConverterV2 implements TypeConverter {
}
private boolean isNullValue(Object value) {
return StrUtil.isBlankIfStr(value) || (value instanceof String ? "null".equalsIgnoreCase((String) value) : value == null);
return ObjectUtil.isNull(value) || StrUtil.isBlankIfStr(value) || (value instanceof String && StrUtil.equalsAny((String) value, "null", "NULL"));
}
}