This is an automated email from the ASF dual-hosted git repository.

haonan pushed a commit to branch object_type
in repository https://gitbox.apache.org/repos/asf/tsfile.git


The following commit(s) were added to refs/heads/object_type by this push:
     new 28775e6a object type query
28775e6a is described below

commit 28775e6a97c35945b281cd5f11bd7fa234bc0966
Author: shuwenwei <[email protected]>
AuthorDate: Thu Jul 3 15:00:34 2025 +0800

    object type query
---
 .../org/apache/tsfile/read/common/BatchData.java   |  6 ++
 .../apache/tsfile/read/common/block/TsBlock.java   |  1 +
 .../tsfile/read/common/block/TsBlockBuilder.java   |  2 +
 .../read/common/block/column/ColumnFactory.java    |  1 +
 .../read/common/block/column/NullColumn.java       |  1 +
 .../apache/tsfile/read/common/type/ObjectType.java | 79 ++++++++++++++++++++++
 .../apache/tsfile/read/common/type/TypeEnum.java   |  3 +-
 .../tsfile/read/common/type/TypeFactory.java       |  2 +
 .../query/dataset/DataSetWithoutTimeGenerator.java |  1 +
 .../apache/tsfile/read/reader/page/PageReader.java |  2 +
 .../tsfile/read/reader/page/ValuePageReader.java   |  6 ++
 .../chunk/NonAlignedChunkGroupWriterImpl.java      |  1 +
 12 files changed, 104 insertions(+), 1 deletion(-)

diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/BatchData.java 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/BatchData.java
index 504f7a9c..1a7e080b 100644
--- a/java/tsfile/src/main/java/org/apache/tsfile/read/common/BatchData.java
+++ b/java/tsfile/src/main/java/org/apache/tsfile/read/common/BatchData.java
@@ -144,6 +144,7 @@ public class BatchData {
       case TEXT:
       case BLOB:
       case STRING:
+      case OBJECT:
         return getBinary();
       case VECTOR:
         return getVector();
@@ -169,6 +170,7 @@ public class BatchData {
       case TEXT:
       case BLOB:
       case STRING:
+      case OBJECT:
         return new TsBinary(getBinary());
       case VECTOR:
         return new TsVector(getVector());
@@ -231,6 +233,7 @@ public class BatchData {
       case TEXT:
       case BLOB:
       case STRING:
+      case OBJECT:
         binaryRet = new ArrayList<>();
         binaryRet.add(new Binary[capacity]);
         break;
@@ -575,6 +578,7 @@ public class BatchData {
       case TEXT:
       case BLOB:
       case STRING:
+      case OBJECT:
         putBinary(t, (Binary) v);
         break;
       case VECTOR:
@@ -699,6 +703,7 @@ public class BatchData {
       case TEXT:
       case BLOB:
       case STRING:
+      case OBJECT:
         for (int i = 0; i < length(); i++) {
           outputStream.writeLong(getTimeByIndex(i));
           Binary binary = getBinaryByIndex(i);
@@ -744,6 +749,7 @@ public class BatchData {
                 case TEXT:
                 case BLOB:
                 case STRING:
+                case OBJECT:
                   Binary binary = value.getBinary();
                   outputStream.writeInt(binary.getLength());
                   outputStream.write(binary.getValues());
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/TsBlock.java 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/TsBlock.java
index b5224580..7e31d5d4 100644
--- a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/TsBlock.java
+++ b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/TsBlock.java
@@ -592,6 +592,7 @@ public class TsBlock {
         case TEXT:
         case BLOB:
         case STRING:
+        case OBJECT:
           valueColumns[i].isNull()[updateIdx] = false;
           valueColumns[i].getBinaries()[updateIdx] =
               sourceTsBlock.getValueColumns()[i].getBinary(sourceIndex);
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/TsBlockBuilder.java
 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/TsBlockBuilder.java
index 028bffc9..f8b4b558 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/TsBlockBuilder.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/TsBlockBuilder.java
@@ -135,6 +135,7 @@ public class TsBlockBuilder {
         case TEXT:
         case BLOB:
         case STRING:
+        case OBJECT:
           valueColumnBuilders[i] =
               new BinaryColumnBuilder(
                   tsBlockBuilderStatus.createColumnBuilderStatus(), 
initialExpectedEntries);
@@ -205,6 +206,7 @@ public class TsBlockBuilder {
         case TEXT:
         case BLOB:
         case STRING:
+        case OBJECT:
           valueColumnBuilders[i] =
               new BinaryColumnBuilder(
                   tsBlockBuilderStatus.createColumnBuilderStatus(), 
initialExpectedEntries);
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/ColumnFactory.java
 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/ColumnFactory.java
index 88a40113..fc9774a1 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/ColumnFactory.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/ColumnFactory.java
@@ -35,6 +35,7 @@ public class ColumnFactory {
       case TEXT:
       case STRING:
       case BLOB:
+      case OBJECT:
         return new BinaryColumn(initialCapacity);
       case INT32:
       case DATE:
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/NullColumn.java
 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/NullColumn.java
index d91359ca..30031822 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/NullColumn.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/NullColumn.java
@@ -154,6 +154,7 @@ public class NullColumn implements Column {
       case TEXT:
       case BLOB:
       case STRING:
+      case OBJECT:
         return new 
RunLengthEncodedColumn(BinaryColumnBuilder.NULL_VALUE_BLOCK, positionCount);
       default:
         throw new IllegalArgumentException("Unknown data type: " + dataType);
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/ObjectType.java 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/ObjectType.java
new file mode 100644
index 00000000..13bde6d8
--- /dev/null
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/ObjectType.java
@@ -0,0 +1,79 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.tsfile.read.common.type;
+
+import org.apache.tsfile.block.column.Column;
+import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.read.common.block.column.BinaryColumnBuilder;
+import org.apache.tsfile.utils.Binary;
+
+import java.util.Collections;
+import java.util.List;
+
+public class ObjectType extends AbstractType {
+
+  public static final ObjectType OBJECT = new ObjectType();
+
+  private ObjectType() {}
+
+  @Override
+  public Binary getBinary(Column c, int position) {
+    return c.getBinary(position);
+  }
+
+  @Override
+  public void writeBinary(ColumnBuilder builder, Binary value) {
+    builder.writeBinary(value);
+  }
+
+  @Override
+  public ColumnBuilder createColumnBuilder(int expectedEntries) {
+    return new BinaryColumnBuilder(null, expectedEntries);
+  }
+
+  @Override
+  public TypeEnum getTypeEnum() {
+    return TypeEnum.OBJECT;
+  }
+
+  @Override
+  public String getDisplayName() {
+    return "OBJECT";
+  }
+
+  @Override
+  public boolean isComparable() {
+    return true;
+  }
+
+  @Override
+  public boolean isOrderable() {
+    return true;
+  }
+
+  @Override
+  public List<Type> getTypeParameters() {
+    return Collections.emptyList();
+  }
+
+  public static ObjectType getInstance() {
+    return OBJECT;
+  }
+}
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/TypeEnum.java 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/TypeEnum.java
index 184a64af..52db17a3 100644
--- a/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/TypeEnum.java
+++ b/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/TypeEnum.java
@@ -38,5 +38,6 @@ public enum TypeEnum {
   TIMESTAMP,
   DATE,
   BLOB,
-  STRING
+  STRING,
+  OBJECT
 }
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/TypeFactory.java 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/TypeFactory.java
index 41474542..cf23572d 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/TypeFactory.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/type/TypeFactory.java
@@ -49,6 +49,8 @@ public class TypeFactory {
         return StringType.getInstance();
       case BLOB:
         return BlobType.getInstance();
+      case OBJECT:
+        return ObjectType.getInstance();
       default:
         throw new UnsupportedOperationException(
             String.format("Invalid TSDataType for TypeFactory: %s", 
tsDataType));
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/read/query/dataset/DataSetWithoutTimeGenerator.java
 
b/java/tsfile/src/main/java/org/apache/tsfile/read/query/dataset/DataSetWithoutTimeGenerator.java
index 02f8ffd4..20df8887 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/read/query/dataset/DataSetWithoutTimeGenerator.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/read/query/dataset/DataSetWithoutTimeGenerator.java
@@ -179,6 +179,7 @@ public class DataSetWithoutTimeGenerator extends 
QueryDataSet {
       case TEXT:
       case BLOB:
       case STRING:
+      case OBJECT:
         field.setBinaryV(col.getBinary());
         break;
       case VECTOR:
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/read/reader/page/PageReader.java 
b/java/tsfile/src/main/java/org/apache/tsfile/read/reader/page/PageReader.java
index ee74f815..163a00d5 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/read/reader/page/PageReader.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/read/reader/page/PageReader.java
@@ -196,6 +196,7 @@ public class PageReader implements IPageReader {
         case TEXT:
         case BLOB:
         case STRING:
+        case OBJECT:
           Binary aBinary = valueDecoder.readBinary(valueBuffer);
           if (!isDeleted(timestamp)
               && (allSatisfy || recordFilter.satisfyBinary(timestamp, 
aBinary))) {
@@ -339,6 +340,7 @@ public class PageReader implements IPageReader {
       case TEXT:
       case BLOB:
       case STRING:
+      case OBJECT:
         while (timeDecoder.hasNext(timeBuffer)) {
           long timestamp = timeDecoder.readLong(timeBuffer);
           Binary aBinary = valueDecoder.readBinary(valueBuffer);
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/read/reader/page/ValuePageReader.java
 
b/java/tsfile/src/main/java/org/apache/tsfile/read/reader/page/ValuePageReader.java
index fc9dd375..b8de4bcb 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/read/reader/page/ValuePageReader.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/read/reader/page/ValuePageReader.java
@@ -158,6 +158,7 @@ public class ValuePageReader {
         case TEXT:
         case BLOB:
         case STRING:
+        case OBJECT:
           Binary aBinary = valueDecoder.readBinary(valueBuffer);
           if (!isDeleted(timestamp)
               && (filter == null || filter.satisfyBinary(timestamp, aBinary))) 
{
@@ -213,6 +214,7 @@ public class ValuePageReader {
       case TEXT:
       case BLOB:
       case STRING:
+      case OBJECT:
         Binary aBinary = valueDecoder.readBinary(valueBuffer);
         if (!isDeleted(timestamp)) {
           resultValue = new TsPrimitiveType.TsBinary(aBinary);
@@ -275,6 +277,7 @@ public class ValuePageReader {
         case TEXT:
         case BLOB:
         case STRING:
+        case OBJECT:
           Binary aBinary = valueDecoder.readBinary(valueBuffer);
           if (!isDeleted(timeBatch[i])) {
             valueBatch[i] = new TsPrimitiveType.TsBinary(aBinary);
@@ -362,6 +365,7 @@ public class ValuePageReader {
         case TEXT:
         case BLOB:
         case STRING:
+        case OBJECT:
           Binary aBinary = valueDecoder.readBinary(valueBuffer);
           if (keepCurrentRow[i]) {
             if (isDeleted[i]) {
@@ -431,6 +435,7 @@ public class ValuePageReader {
         case TEXT:
         case BLOB:
         case STRING:
+        case OBJECT:
           Binary aBinary = valueDecoder.readBinary(valueBuffer);
           if (keepCurrentRow[i]) {
             columnBuilder.writeBinary(aBinary);
@@ -546,6 +551,7 @@ public class ValuePageReader {
       case TEXT:
       case BLOB:
       case STRING:
+      case OBJECT:
         // skip useless data
         for (int i = 0; i < readStartIndex; i++) {
           if (((bitmap[i / 8] & 0xFF) & (MASK >>> (i % 8))) == 0) {
diff --git 
a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/NonAlignedChunkGroupWriterImpl.java
 
b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/NonAlignedChunkGroupWriterImpl.java
index 58de2ffb..10e66b9a 100644
--- 
a/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/NonAlignedChunkGroupWriterImpl.java
+++ 
b/java/tsfile/src/main/java/org/apache/tsfile/write/chunk/NonAlignedChunkGroupWriterImpl.java
@@ -163,6 +163,7 @@ public class NonAlignedChunkGroupWriterImpl implements 
IChunkGroupWriter {
           case TEXT:
           case BLOB:
           case STRING:
+          case OBJECT:
             chunkWriters
                 .get(measurementId)
                 .write(time, ((Binary[]) tablet.getValues()[column])[row]);

Reply via email to