You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tsfile.apache.org by ji...@apache.org on 2026/07/21 02:09:01 UTC
(tsfile) 08/08: refactor public boolean isComparable() {
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 <jt...@163.com>
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() {