This is an automated email from the ASF dual-hosted git repository.
jackietien pushed a commit to branch object_type
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/object_type by this push:
new 95cc48b8ab9 fix serde bug for object type
95cc48b8ab9 is described below
commit 95cc48b8ab90277d9e41b8f4c84ffd1c93c93d2e
Author: JackieTien97 <[email protected]>
AuthorDate: Mon Jul 7 18:42:50 2025 +0800
fix serde bug for object type
---
.../plan/relational/type/InternalTypeManager.java | 4 ++++
.../db/queryengine/plan/relational/utils/TypeUtil.java | 13 ++++++++++++-
2 files changed, 16 insertions(+), 1 deletion(-)
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/type/InternalTypeManager.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/type/InternalTypeManager.java
index 51506ed9fa0..dbb7a771ce8 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/type/InternalTypeManager.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/type/InternalTypeManager.java
@@ -35,6 +35,7 @@ import static
org.apache.tsfile.read.common.type.DoubleType.DOUBLE;
import static org.apache.tsfile.read.common.type.FloatType.FLOAT;
import static org.apache.tsfile.read.common.type.IntType.INT32;
import static org.apache.tsfile.read.common.type.LongType.INT64;
+import static org.apache.tsfile.read.common.type.ObjectType.OBJECT;
import static org.apache.tsfile.read.common.type.StringType.STRING;
import static org.apache.tsfile.read.common.type.TimestampType.TIMESTAMP;
import static org.apache.tsfile.read.common.type.UnknownType.UNKNOWN;
@@ -52,6 +53,7 @@ public class InternalTypeManager implements TypeManager {
types.put(new
TypeSignature(TypeEnum.TEXT.name().toLowerCase(Locale.ENGLISH)), TEXT);
types.put(new
TypeSignature(TypeEnum.STRING.name().toLowerCase(Locale.ENGLISH)), STRING);
types.put(new
TypeSignature(TypeEnum.BLOB.name().toLowerCase(Locale.ENGLISH)), BLOB);
+ types.put(new
TypeSignature(TypeEnum.OBJECT.name().toLowerCase(Locale.ENGLISH)), OBJECT);
types.put(new
TypeSignature(TypeEnum.DATE.name().toLowerCase(Locale.ENGLISH)), DATE);
types.put(new
TypeSignature(TypeEnum.TIMESTAMP.name().toLowerCase(Locale.ENGLISH)),
TIMESTAMP);
types.put(new
TypeSignature(TypeEnum.UNKNOWN.name().toLowerCase(Locale.ENGLISH)), UNKNOWN);
@@ -136,6 +138,8 @@ public class InternalTypeManager implements TypeManager {
return BLOB;
case STRING:
return STRING;
+ case OBJECT:
+ return OBJECT;
default:
throw new IllegalArgumentException();
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/utils/TypeUtil.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/utils/TypeUtil.java
index 0cc31381072..fe951d1e4ce 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/utils/TypeUtil.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/utils/TypeUtil.java
@@ -28,6 +28,7 @@ import org.apache.tsfile.read.common.type.BinaryType;
import org.apache.tsfile.read.common.type.BlobType;
import org.apache.tsfile.read.common.type.DoubleType;
import org.apache.tsfile.read.common.type.FloatType;
+import org.apache.tsfile.read.common.type.ObjectType;
import org.apache.tsfile.read.common.type.RowType;
import org.apache.tsfile.read.common.type.StringType;
import org.apache.tsfile.read.common.type.TimestampType;
@@ -116,6 +117,8 @@ public class TypeUtil {
return TimestampType.TIMESTAMP;
case DATE:
return DATE;
+ case OBJECT:
+ return ObjectType.OBJECT;
case ROW:
return RowType.anonymous(subTypes);
default:
@@ -123,7 +126,6 @@ public class TypeUtil {
}
}
- // TODO move these methods into each Type to avoid branch miss
public static boolean isFlatVariableWidth(Type type) {
switch (type.getTypeEnum()) {
case BOOLEAN:
@@ -137,6 +139,7 @@ public class TypeUtil {
case TEXT:
case STRING:
case BLOB:
+ case OBJECT:
return true;
default:
throw new UnsupportedOperationException();
@@ -160,6 +163,7 @@ public class TypeUtil {
case TEXT:
case STRING:
case BLOB:
+ case OBJECT:
return 16;
default:
throw new UnsupportedOperationException();
@@ -179,6 +183,7 @@ public class TypeUtil {
case TEXT:
case STRING:
case BLOB:
+ case OBJECT:
return column.isNull(position) ? 0 :
column.getBinary(position).getLength();
default:
throw new UnsupportedOperationException();
@@ -198,6 +203,7 @@ public class TypeUtil {
case TEXT:
case STRING:
case BLOB:
+ case OBJECT:
int result = 0;
for (int i = 0; i < position.length; i++) {
if (!column.isNull(i)) {
@@ -237,6 +243,7 @@ public class TypeUtil {
case TEXT:
case STRING:
case BLOB:
+ case OBJECT:
int length = bytesToInt(fixedChunk, fixedOffset);
byte[] result = new byte[length];
if (length <= 12) {
@@ -282,6 +289,7 @@ public class TypeUtil {
case TEXT:
case STRING:
case BLOB:
+ case OBJECT:
byte[] value = column.getBinary(position).getValues();
intToBytes(value.length, fixedChunk, fixedOffset);
if (value.length <= 12) {
@@ -320,6 +328,7 @@ public class TypeUtil {
case TEXT:
case STRING:
case BLOB:
+ case OBJECT:
int leftLength = bytesToInt(fixedChunk, fixedOffset);
byte[] leftValue = new byte[leftLength];
byte[] rightValue = column.getBinary(position).getValues();
@@ -414,6 +423,7 @@ public class TypeUtil {
case TEXT:
case STRING:
case BLOB:
+ case OBJECT:
int length = bytesToInt(fixedChunk, fixedOffset);
byte[] values = new byte[length];
@@ -490,6 +500,7 @@ public class TypeUtil {
case TEXT:
case STRING:
case BLOB:
+ case OBJECT:
return XxHash64.hash(column.getBinary(position).getValues());
default:
throw new UnsupportedOperationException();