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 8ad7980725c13dc4d7e169d225308caee395598b
Author: Tian Jiang <[email protected]>
AuthorDate: Mon Jul 20 17:20:22 2026 +0800

    refactor   public boolean isComparable() {
---
 .../java/org/apache/tsfile/enums/TSDataType.java   | 83 ++++++++++++++--------
 1 file changed, 54 insertions(+), 29 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 285971374..eaa09be73 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,56 +39,93 @@ import java.util.Set;
 
 public enum TSDataType {
   /** BOOLEAN. */
-  BOOLEAN((byte) 0, 1, false, TSDataType::castIdenticalSingleValue, 
TSDataType::castIdenticalArray),
+  BOOLEAN(
+      (byte) 0,
+      1,
+      false,
+      true,
+      TSDataType::castIdenticalSingleValue,
+      TSDataType::castIdenticalArray),
 
   /** INT32. */
-  INT32((byte) 1, 4, true, TSDataType::castIdenticalSingleValue, 
TSDataType::castIdenticalArray),
+  INT32(
+      (byte) 1,
+      4,
+      true,
+      true,
+      TSDataType::castIdenticalSingleValue,
+      TSDataType::castIdenticalArray),
 
   /** INT64. */
-  INT64((byte) 2, 8, true, TSDataType::castToLongSingleValue, 
TSDataType::castToLongArray),
+  INT64((byte) 2, 8, true, true, TSDataType::castToLongSingleValue, 
TSDataType::castToLongArray),
 
   /** FLOAT. */
-  FLOAT((byte) 3, 4, true, TSDataType::castToFloatSingleValue, 
TSDataType::castToFloatArray),
+  FLOAT((byte) 3, 4, true, true, TSDataType::castToFloatSingleValue, 
TSDataType::castToFloatArray),
 
   /** DOUBLE. */
-  DOUBLE((byte) 4, 8, true, TSDataType::castToDoubleSingleValue, 
TSDataType::castToDoubleArray),
+  DOUBLE(
+      (byte) 4, 8, true, true, TSDataType::castToDoubleSingleValue, 
TSDataType::castToDoubleArray),
 
   /** TEXT. */
-  TEXT((byte) 5, 8, false, TSDataType::castToTextSingleValue, 
TSDataType::castToTextArray),
+  TEXT((byte) 5, 8, false, true, TSDataType::castToTextSingleValue, 
TSDataType::castToTextArray),
 
   /** VECTOR. */
   VECTOR(
-      (byte) 6, 8, false, TSDataType::unsupportedSingleValueCast, 
TSDataType::unsupportedArrayCast),
+      (byte) 6,
+      8,
+      false,
+      false,
+      TSDataType::unsupportedSingleValueCast,
+      TSDataType::unsupportedArrayCast),
 
   /** UNKNOWN. */
   UNKNOWN(
       (byte) 7,
       TSDataType.UNSUPPORTED_DATA_TYPE_SIZE,
       false,
+      false,
       TSDataType::unsupportedSingleValueCast,
       TSDataType::unsupportedArrayCast),
 
   /** TIMESTAMP. */
   TIMESTAMP(
-      (byte) 8, 8, false, TSDataType::castToTimestampSingleValue, 
TSDataType::castToTimestampArray),
+      (byte) 8,
+      8,
+      false,
+      true,
+      TSDataType::castToTimestampSingleValue,
+      TSDataType::castToTimestampArray),
 
   /** DATE. */
-  DATE((byte) 9, 4, false, TSDataType::castIdenticalSingleValue, 
TSDataType::castIdenticalArray),
+  DATE(
+      (byte) 9,
+      4,
+      false,
+      true,
+      TSDataType::castIdenticalSingleValue,
+      TSDataType::castIdenticalArray),
 
   /** BLOB. */
-  BLOB((byte) 10, 8, false, TSDataType::castToBlobSingleValue, 
TSDataType::castToBlobArray),
+  BLOB((byte) 10, 8, false, false, TSDataType::castToBlobSingleValue, 
TSDataType::castToBlobArray),
 
   /** STRING */
-  STRING((byte) 11, 8, false, TSDataType::castToTextSingleValue, 
TSDataType::castToTextArray),
+  STRING((byte) 11, 8, false, true, TSDataType::castToTextSingleValue, 
TSDataType::castToTextArray),
 
   /** OBJECT */
-  OBJECT((byte) 12, 8, false, TSDataType::castIdenticalSingleValue, 
TSDataType::castIdenticalArray);
+  OBJECT(
+      (byte) 12,
+      8,
+      false,
+      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 boolean comparable;
   private final SingleValueCaster singleValueCaster;
   private final ArrayCaster arrayCaster;
   private static final Map<TSDataType, Set<TSDataType>> compatibleTypes;
@@ -164,11 +201,13 @@ public enum TSDataType {
       byte type,
       int dataTypeSize,
       boolean numeric,
+      boolean comparable,
       SingleValueCaster singleValueCaster,
       ArrayCaster arrayCaster) {
     this.type = type;
     this.dataTypeSize = dataTypeSize;
     this.numeric = numeric;
+    this.comparable = comparable;
     this.singleValueCaster = singleValueCaster;
     this.arrayCaster = arrayCaster;
   }
@@ -517,24 +556,10 @@ public enum TSDataType {
    * @throws UnSupportedDataTypeException when meets unSupported DataType
    */
   public boolean isComparable() {
-    switch (this) {
-      case INT32:
-      case INT64:
-      case FLOAT:
-      case DOUBLE:
-      case TEXT:
-      case BOOLEAN:
-      case TIMESTAMP:
-      case DATE:
-      case STRING:
-        return true;
-      case VECTOR:
-      case BLOB:
-      case OBJECT:
-        return false;
-      default:
-        throw new UnSupportedDataTypeException(this.toString());
+    if (this == UNKNOWN) {
+      throw new UnSupportedDataTypeException(this.toString());
     }
+    return comparable;
   }
 
   public boolean isBinary() {

Reply via email to