This is an automated email from the ASF dual-hosted git repository. jt2594838 pushed a commit to branch add_interfaces_for_type in repository https://gitbox.apache.org/repos/asf/tsfile.git
commit b9033a72bd0916ecb938513091830b3d1da927ea Author: Tian Jiang <[email protected]> AuthorDate: Mon Jul 20 14:13:46 2026 +0800 refactor isNumeric --- .../java/org/apache/tsfile/enums/TSDataType.java | 56 ++++++++++------------ 1 file changed, 25 insertions(+), 31 deletions(-) diff --git a/java/common/src/main/java/org/apache/tsfile/enums/TSDataType.java b/java/common/src/main/java/org/apache/tsfile/enums/TSDataType.java index 002d56487..285971374 100644 --- a/java/common/src/main/java/org/apache/tsfile/enums/TSDataType.java +++ b/java/common/src/main/java/org/apache/tsfile/enums/TSDataType.java @@ -39,52 +39,56 @@ import java.util.Set; public enum TSDataType { /** BOOLEAN. */ - BOOLEAN((byte) 0, 1, TSDataType::castIdenticalSingleValue, TSDataType::castIdenticalArray), + BOOLEAN((byte) 0, 1, false, TSDataType::castIdenticalSingleValue, TSDataType::castIdenticalArray), /** INT32. */ - INT32((byte) 1, 4, TSDataType::castIdenticalSingleValue, TSDataType::castIdenticalArray), + INT32((byte) 1, 4, true, TSDataType::castIdenticalSingleValue, TSDataType::castIdenticalArray), /** INT64. */ - INT64((byte) 2, 8, TSDataType::castToLongSingleValue, TSDataType::castToLongArray), + INT64((byte) 2, 8, true, TSDataType::castToLongSingleValue, TSDataType::castToLongArray), /** FLOAT. */ - FLOAT((byte) 3, 4, TSDataType::castToFloatSingleValue, TSDataType::castToFloatArray), + FLOAT((byte) 3, 4, true, TSDataType::castToFloatSingleValue, TSDataType::castToFloatArray), /** DOUBLE. */ - DOUBLE((byte) 4, 8, TSDataType::castToDoubleSingleValue, TSDataType::castToDoubleArray), + DOUBLE((byte) 4, 8, true, TSDataType::castToDoubleSingleValue, TSDataType::castToDoubleArray), /** TEXT. */ - TEXT((byte) 5, 8, TSDataType::castToTextSingleValue, TSDataType::castToTextArray), + TEXT((byte) 5, 8, false, TSDataType::castToTextSingleValue, TSDataType::castToTextArray), /** VECTOR. */ - VECTOR((byte) 6, 8, TSDataType::unsupportedSingleValueCast, TSDataType::unsupportedArrayCast), + VECTOR( + (byte) 6, 8, false, TSDataType::unsupportedSingleValueCast, TSDataType::unsupportedArrayCast), /** UNKNOWN. */ UNKNOWN( (byte) 7, TSDataType.UNSUPPORTED_DATA_TYPE_SIZE, + false, TSDataType::unsupportedSingleValueCast, TSDataType::unsupportedArrayCast), /** TIMESTAMP. */ - TIMESTAMP((byte) 8, 8, TSDataType::castToTimestampSingleValue, TSDataType::castToTimestampArray), + TIMESTAMP( + (byte) 8, 8, false, TSDataType::castToTimestampSingleValue, TSDataType::castToTimestampArray), /** DATE. */ - DATE((byte) 9, 4, TSDataType::castIdenticalSingleValue, TSDataType::castIdenticalArray), + DATE((byte) 9, 4, false, TSDataType::castIdenticalSingleValue, TSDataType::castIdenticalArray), /** BLOB. */ - BLOB((byte) 10, 8, TSDataType::castToBlobSingleValue, TSDataType::castToBlobArray), + BLOB((byte) 10, 8, false, TSDataType::castToBlobSingleValue, TSDataType::castToBlobArray), /** STRING */ - STRING((byte) 11, 8, TSDataType::castToTextSingleValue, TSDataType::castToTextArray), + STRING((byte) 11, 8, false, TSDataType::castToTextSingleValue, TSDataType::castToTextArray), /** OBJECT */ - OBJECT((byte) 12, 8, TSDataType::castIdenticalSingleValue, TSDataType::castIdenticalArray); + OBJECT((byte) 12, 8, false, TSDataType::castIdenticalSingleValue, TSDataType::castIdenticalArray); private static final int UNSUPPORTED_DATA_TYPE_SIZE = -1; private static final Object UNSUPPORTED_CAST = new Object(); private final byte type; private final int dataTypeSize; + private final boolean numeric; private final SingleValueCaster singleValueCaster; private final ArrayCaster arrayCaster; private static final Map<TSDataType, Set<TSDataType>> compatibleTypes; @@ -157,9 +161,14 @@ public enum TSDataType { } TSDataType( - byte type, int dataTypeSize, SingleValueCaster singleValueCaster, ArrayCaster arrayCaster) { + byte type, + int dataTypeSize, + boolean numeric, + SingleValueCaster singleValueCaster, + ArrayCaster arrayCaster) { this.type = type; this.dataTypeSize = dataTypeSize; + this.numeric = numeric; this.singleValueCaster = singleValueCaster; this.arrayCaster = arrayCaster; } @@ -495,25 +504,10 @@ public enum TSDataType { * @throws UnSupportedDataTypeException when meets unSupported DataType */ public boolean isNumeric() { - switch (this) { - case INT32: - case INT64: - case FLOAT: - case DOUBLE: - return true; - // For text: return the size of reference here - case BLOB: - case TIMESTAMP: - case DATE: - case STRING: - case BOOLEAN: - case TEXT: - case VECTOR: - case OBJECT: - return false; - default: - throw new UnSupportedDataTypeException(this.toString()); + if (this == UNKNOWN) { + throw new UnSupportedDataTypeException(this.toString()); } + return numeric; } /**
