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]);