Skip to content

Commit 5f01dd5

Browse files
committed
add side table bigDecimal data type
1 parent 7caa315 commit 5f01dd5

1 file changed

Lines changed: 16 additions & 1 deletion

File tree

core/src/main/java/com/dtstack/flink/sql/side/AbstractSideTableInfo.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,17 @@
2525
import org.apache.flink.api.common.typeinfo.TypeInformation;
2626
import org.apache.flink.api.java.typeutils.RowTypeInfo;
2727
import org.apache.flink.table.runtime.typeutils.BaseRowTypeInfo;
28+
import org.apache.flink.table.types.DataType;
29+
import org.apache.flink.table.types.logical.DecimalType;
2830
import org.apache.flink.table.types.logical.LogicalType;
31+
import org.apache.flink.table.types.utils.ClassDataTypeConverter;
2932
import org.apache.flink.table.types.utils.TypeConversions;
3033

3134
import java.io.Serializable;
35+
import java.math.BigDecimal;
3236
import java.util.List;
3337
import java.util.Objects;
38+
import java.util.Optional;
3439

3540
/**
3641
* Reason:
@@ -104,7 +109,17 @@ public BaseRowTypeInfo getBaseRowTypeInfo(){
104109
Class[] fieldClass = getFieldClasses();
105110
LogicalType[] logicalTypes = new LogicalType[fieldClass.length];
106111
for (int i = 0; i < fieldClass.length; i++) {
107-
logicalTypes[i] = TypeConversions.fromLegacyInfoToDataType(TypeInformation.of(fieldClass[i])).getLogicalType();
112+
if(fieldClass[i].getName().equals(BigDecimal.class.getName())){
113+
logicalTypes[i] = new DecimalType(DecimalType.MAX_PRECISION, 18);
114+
continue;
115+
}
116+
117+
Optional<DataType> optionalDataType = ClassDataTypeConverter.extractDataType(fieldClass[i]);
118+
if(!optionalDataType.isPresent()){
119+
throw new RuntimeException(String.format("not support table % field %s type %s", getName(), fieldNames[i], fieldClass[i]));
120+
}
121+
122+
logicalTypes[i] = optionalDataType.get().getLogicalType();
108123
}
109124

110125
return new BaseRowTypeInfo(logicalTypes, fieldNames);

0 commit comments

Comments
 (0)