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

shuwenwei 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 007e7324755 fix query
007e7324755 is described below

commit 007e7324755d88e4a60a0c77b7a78d9221e626bc
Author: shuwenwei <[email protected]>
AuthorDate: Thu Jul 3 18:29:35 2025 +0800

    fix query
---
 .../src/main/java/org/apache/iotdb/cli/AbstractCli.java    |  1 +
 .../java/org/apache/iotdb/isession/SessionDataSet.java     |  1 +
 .../main/java/org/apache/iotdb/rpc/IoTDBJDBCDataSet.java   |  5 +++++
 .../main/java/org/apache/iotdb/rpc/IoTDBRpcDataSet.java    |  2 ++
 .../src/main/java/org/apache/iotdb/session/Session.java    |  1 +
 .../java/org/apache/iotdb/session/util/SessionUtils.java   |  1 +
 .../queryengine/execution/aggregation/SumAccumulator.java  |  1 +
 .../execution/operator/source/SeriesScanUtil.java          |  1 +
 .../plan/relational/metadata/TableMetadataImpl.java        |  3 +--
 .../plan/relational/planner/RelationPlanner.java           |  2 +-
 .../column/unary/scalar/ReadObjectColumnTransformer.java   | 14 +++++++-------
 .../ReadChunkAlignedSeriesCompactionExecutor.java          |  1 +
 .../executor/readchunk/SingleSeriesCompactionExecutor.java |  1 +
 .../execute/utils/writer/AbstractCompactionWriter.java     |  1 +
 .../dataregion/read/reader/chunk/MemPageReader.java        |  2 ++
 .../java/org/apache/iotdb/db/utils/QueryDataSetUtils.java  |  2 ++
 .../java/org/apache/iotdb/db/utils/TimeValuePairUtils.java |  2 ++
 .../org/apache/iotdb/db/utils/datastructure/TVList.java    |  4 ++++
 18 files changed, 35 insertions(+), 10 deletions(-)

diff --git 
a/iotdb-client/cli/src/main/java/org/apache/iotdb/cli/AbstractCli.java 
b/iotdb-client/cli/src/main/java/org/apache/iotdb/cli/AbstractCli.java
index 50be4ea5d5a..582704bf8ad 100644
--- a/iotdb-client/cli/src/main/java/org/apache/iotdb/cli/AbstractCli.java
+++ b/iotdb-client/cli/src/main/java/org/apache/iotdb/cli/AbstractCli.java
@@ -755,6 +755,7 @@ public abstract class AbstractCli {
       case DOUBLE:
       case TEXT:
       case STRING:
+      case OBJECT:
         return resultSet.getString(columnIndex);
       case BLOB:
         byte[] v = resultSet.getBytes(columnIndex);
diff --git 
a/iotdb-client/isession/src/main/java/org/apache/iotdb/isession/SessionDataSet.java
 
b/iotdb-client/isession/src/main/java/org/apache/iotdb/isession/SessionDataSet.java
index fa67708fed0..bb113680d8e 100644
--- 
a/iotdb-client/isession/src/main/java/org/apache/iotdb/isession/SessionDataSet.java
+++ 
b/iotdb-client/isession/src/main/java/org/apache/iotdb/isession/SessionDataSet.java
@@ -189,6 +189,7 @@ public class SessionDataSet implements ISessionDataSet {
           case TEXT:
           case BLOB:
           case STRING:
+          case OBJECT:
             field.setBinaryV(ioTDBRpcDataSet.getBinary(columnName));
             break;
           default:
diff --git 
a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBJDBCDataSet.java
 
b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBJDBCDataSet.java
index 5bba6d0ea71..3e6de454001 100644
--- 
a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBJDBCDataSet.java
+++ 
b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBJDBCDataSet.java
@@ -184,6 +184,7 @@ public class IoTDBJDBCDataSet {
         case TEXT:
         case BLOB:
         case STRING:
+        case OBJECT:
           values[i] = null;
           break;
         default:
@@ -307,6 +308,7 @@ public class IoTDBJDBCDataSet {
         case TEXT:
         case BLOB:
         case STRING:
+        case OBJECT:
           values[i] = null;
           break;
         default:
@@ -418,6 +420,7 @@ public class IoTDBJDBCDataSet {
           case TEXT:
           case BLOB:
           case STRING:
+          case OBJECT:
             int length = valueBuffer.getInt();
             values[i] = ReadWriteIOUtils.readBytes(valueBuffer, length);
             break;
@@ -595,6 +598,7 @@ public class IoTDBJDBCDataSet {
         return String.valueOf(BytesUtils.bytesToDouble(values[index]));
       case TEXT:
       case STRING:
+      case OBJECT:
         return new String(values[index], StandardCharsets.UTF_8);
       case BLOB:
         return BytesUtils.parseBlobByteArrayToString(values[index]);
@@ -633,6 +637,7 @@ public class IoTDBJDBCDataSet {
         return BytesUtils.bytesToDouble(values[index]);
       case TEXT:
       case STRING:
+      case OBJECT:
         return new String(values[index], StandardCharsets.UTF_8);
       case BLOB:
         return new Binary(values[index]);
diff --git 
a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBRpcDataSet.java
 
b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBRpcDataSet.java
index a40197fac79..e0af4c9691f 100644
--- 
a/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBRpcDataSet.java
+++ 
b/iotdb-client/service-rpc/src/main/java/org/apache/iotdb/rpc/IoTDBRpcDataSet.java
@@ -490,6 +490,7 @@ public class IoTDBRpcDataSet {
         return convertToTimestamp(timestamp, timeFactor);
       case TEXT:
       case STRING:
+      case OBJECT:
         return curTsBlock
             .getColumn(tsBlockColumnIndex)
             .getBinary(tsBlockIndex)
@@ -550,6 +551,7 @@ public class IoTDBRpcDataSet {
         return 
String.valueOf(curTsBlock.getColumn(index).getDouble(tsBlockIndex));
       case TEXT:
       case STRING:
+      case OBJECT:
         return curTsBlock
             .getColumn(index)
             .getBinary(tsBlockIndex)
diff --git 
a/iotdb-client/session/src/main/java/org/apache/iotdb/session/Session.java 
b/iotdb-client/session/src/main/java/org/apache/iotdb/session/Session.java
index e1453c8d29d..610907ceb6f 100644
--- a/iotdb-client/session/src/main/java/org/apache/iotdb/session/Session.java
+++ b/iotdb-client/session/src/main/java/org/apache/iotdb/session/Session.java
@@ -3644,6 +3644,7 @@ public class Session implements ISession {
       case TEXT:
       case BLOB:
       case STRING:
+      case OBJECT:
         Binary[] binaryValues = (Binary[]) valueList;
         Binary[] sortedBinaryValues = new Binary[binaryValues.length];
         for (int i = 0; i < index.length; i++) {
diff --git 
a/iotdb-client/session/src/main/java/org/apache/iotdb/session/util/SessionUtils.java
 
b/iotdb-client/session/src/main/java/org/apache/iotdb/session/util/SessionUtils.java
index 87b30bd2dd3..d49242ee8d5 100644
--- 
a/iotdb-client/session/src/main/java/org/apache/iotdb/session/util/SessionUtils.java
+++ 
b/iotdb-client/session/src/main/java/org/apache/iotdb/session/util/SessionUtils.java
@@ -179,6 +179,7 @@ public class SessionUtils {
           break;
         case TEXT:
         case STRING:
+        case OBJECT:
           res += Integer.BYTES;
           if (values.get(i) instanceof Binary) {
             res += ((Binary) values.get(i)).getValues().length;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/SumAccumulator.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/SumAccumulator.java
index 37daf1a84b1..55abc3d3705 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/SumAccumulator.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/SumAccumulator.java
@@ -61,6 +61,7 @@ public class SumAccumulator implements Accumulator {
       case TIMESTAMP:
       case DATE:
       case STRING:
+      case OBJECT:
       default:
         throw new UnSupportedDataTypeException(
             String.format("Unsupported data type in aggregation AVG : %s", 
seriesDataType));
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/SeriesScanUtil.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/SeriesScanUtil.java
index b9b500ad83e..8c4b7016b1a 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/SeriesScanUtil.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/SeriesScanUtil.java
@@ -960,6 +960,7 @@ public class SeriesScanUtil implements Accountable {
       case TEXT:
       case BLOB:
       case STRING:
+      case OBJECT:
         
builder.getColumnBuilder(0).writeBinary(timeValuePair.getValue().getBinary());
         break;
       case VECTOR:
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/TableMetadataImpl.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/TableMetadataImpl.java
index b9e167d1b43..40ef4c4bb54 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/TableMetadataImpl.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/metadata/TableMetadataImpl.java
@@ -576,8 +576,7 @@ public class TableMetadataImpl implements Metadata {
         .equalsIgnoreCase(functionName)) {
       if (argumentTypes.isEmpty()
           || argumentTypes.size() > 3
-          || !isIntegerNumber(argumentTypes.get(0))
-          //          || !isObjectType(argumentTypes.get(0))
+          || !isObjectType(argumentTypes.get(0))
           || (argumentTypes.size() >= 2 && 
!isIntegerNumber(argumentTypes.get(1)))
           || (argumentTypes.size() >= 3 && 
!isIntegerNumber(argumentTypes.get(2)))) {
         throw new SemanticException(
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/RelationPlanner.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/RelationPlanner.java
index 3274de4c9ac..2a6f6f6cb55 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/RelationPlanner.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/RelationPlanner.java
@@ -1142,7 +1142,7 @@ public class RelationPlanner extends 
AstVisitor<RelationPlan, Void> {
           byte[] content = new byte[value.getLength() - 9];
           System.arraycopy(value.getValues(), 9, content, 0, value.getLength() 
- 9);
           // TODO:[OBJECT] Generate File name
-          String fileName = "/Users/ht/Documents/iotdb/data/object/file1";
+          String fileName = "/Users/shuww/Downloads/test_0703/aaa";
           FileNode fileNode = new FileNode(fileName, isEoF, offset, content);
           fileNodeList.add(fileNode);
           if (isEoF) {
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/scalar/ReadObjectColumnTransformer.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/scalar/ReadObjectColumnTransformer.java
index 15e82be9d8b..51095e725a3 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/scalar/ReadObjectColumnTransformer.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/transformation/dag/column/unary/scalar/ReadObjectColumnTransformer.java
@@ -26,6 +26,7 @@ import org.apache.iotdb.rpc.TSStatusCode;
 
 import org.apache.tsfile.block.column.Column;
 import org.apache.tsfile.block.column.ColumnBuilder;
+import org.apache.tsfile.enums.TSDataType;
 import org.apache.tsfile.read.common.type.Type;
 import org.apache.tsfile.utils.Binary;
 
@@ -37,7 +38,7 @@ import java.nio.file.StandardOpenOption;
 
 public class ReadObjectColumnTransformer extends UnaryColumnTransformer {
 
-  private long offset = -1;
+  private long offset = 0;
   private long length = -1;
 
   public ReadObjectColumnTransformer(Type type, ColumnTransformer 
childColumnTransformer) {
@@ -80,11 +81,10 @@ public class ReadObjectColumnTransformer extends 
UnaryColumnTransformer {
   }
 
   private void transform(Column column, ColumnBuilder columnBuilder, int i) {
-    //    if (TSDataType.OBJECT.equals(column.getDataType())) {
-    //      Binary binary = column.getBinary(i);
-    //      columnBuilder.writeBinary(readObject(binary));
-    //    }
-    columnBuilder.writeBinary(readObject(new Binary(new byte[0])));
+    if (TSDataType.TEXT == column.getDataType()) {
+      Binary binary = column.getBinary(i);
+      columnBuilder.writeBinary(readObject(binary));
+    }
   }
 
   private Binary readObject(Binary binary) {
@@ -94,7 +94,7 @@ public class ReadObjectColumnTransformer extends 
UnaryColumnTransformer {
     if (offset >= fileSize) {
       throw new UnsupportedOperationException("offset is greater than object 
size");
     }
-    long actualReadSize = Math.min(length, fileSize - offset);
+    long actualReadSize = Math.min(length < 0 ? fileSize : length, fileSize - 
offset);
     if (actualReadSize > Integer.MAX_VALUE) {
       throw new UnsupportedOperationException("Read object size is too large 
(size > 2G)");
     }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/ReadChunkAlignedSeriesCompactionExecutor.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/ReadChunkAlignedSeriesCompactionExecutor.java
index e6891199bb4..4bca1c83ab0 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/ReadChunkAlignedSeriesCompactionExecutor.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/ReadChunkAlignedSeriesCompactionExecutor.java
@@ -563,6 +563,7 @@ public class ReadChunkAlignedSeriesCompactionExecutor {
         case TEXT:
         case STRING:
         case BLOB:
+        case OBJECT:
           size = pageLoader.getHeader().getUncompressedSize();
           break;
         default:
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/SingleSeriesCompactionExecutor.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/SingleSeriesCompactionExecutor.java
index 69ce89d5af3..e7c27be8e0a 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/SingleSeriesCompactionExecutor.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/executor/readchunk/SingleSeriesCompactionExecutor.java
@@ -317,6 +317,7 @@ public class SingleSeriesCompactionExecutor {
       case TEXT:
       case BLOB:
       case STRING:
+      case OBJECT:
         chunkWriter.write(timeValuePair.getTimestamp(), 
timeValuePair.getValue().getBinary());
         break;
       case FLOAT:
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/AbstractCompactionWriter.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/AbstractCompactionWriter.java
index 364e21e2273..849c3a9031c 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/AbstractCompactionWriter.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/AbstractCompactionWriter.java
@@ -135,6 +135,7 @@ public abstract class AbstractCompactionWriter implements 
AutoCloseable {
         case TEXT:
         case STRING:
         case BLOB:
+        case OBJECT:
           chunkWriterImpl.write(timestamp, value.getBinary());
           break;
         case DOUBLE:
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemPageReader.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemPageReader.java
index 90231d1bedf..687a3d7a529 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemPageReader.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/read/reader/chunk/MemPageReader.java
@@ -105,6 +105,7 @@ public class MemPageReader implements IPageReader {
           case TEXT:
           case STRING:
           case BLOB:
+          case OBJECT:
             batchData.putBinary(
                 tsBlock.getTimeColumn().getLong(i), 
tsBlock.getColumn(0).getBinary(i));
             break;
@@ -266,6 +267,7 @@ public class MemPageReader implements IPageReader {
         case TEXT:
         case BLOB:
         case STRING:
+        case OBJECT:
           for (int i = 0; i < tsBlock.getPositionCount(); i++) {
             statistics.update(tsBlock.getTimeByIndex(i), 
tsBlock.getColumn(0).getBinary(i));
           }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/QueryDataSetUtils.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/QueryDataSetUtils.java
index 8b914d6ab0d..fed80815f69 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/QueryDataSetUtils.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/QueryDataSetUtils.java
@@ -236,6 +236,7 @@ public class QueryDataSetUtils {
           case TEXT:
           case BLOB:
           case STRING:
+          case OBJECT:
             for (int i = 0; i < currentCount; i++) {
               rowCount++;
               if (column.isNull(i)) {
@@ -379,6 +380,7 @@ public class QueryDataSetUtils {
         case TEXT:
         case BLOB:
         case STRING:
+        case OBJECT:
           doWithTextColumn(
               rowCount,
               column,
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/TimeValuePairUtils.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/TimeValuePairUtils.java
index e11b586e7e4..a66e7d7b856 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/TimeValuePairUtils.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/TimeValuePairUtils.java
@@ -62,6 +62,7 @@ public class TimeValuePairUtils {
       case TEXT:
       case BLOB:
       case STRING:
+      case OBJECT:
         to.getValue().setBinary(from.getValue().getBinary());
         break;
       case BOOLEAN:
@@ -89,6 +90,7 @@ public class TimeValuePairUtils {
       case TEXT:
       case BLOB:
       case STRING:
+      case OBJECT:
         return new TimeValuePair(0, new TsBinary(new Binary("", 
TSFileConfig.STRING_CHARSET)));
       default:
         throw new UnsupportedOperationException("Unrecognized datatype: " + 
dataType);
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/TVList.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/TVList.java
index 5e50efd25c0..1ec8e6bcc1f 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/TVList.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/datastructure/TVList.java
@@ -112,6 +112,7 @@ public abstract class TVList implements WALEntryValue {
       case TEXT:
       case BLOB:
       case STRING:
+      case OBJECT:
         return BinaryTVList.newList();
       case FLOAT:
         return FloatTVList.newList();
@@ -601,6 +602,7 @@ public abstract class TVList implements WALEntryValue {
       case TEXT:
       case BLOB:
       case STRING:
+      case OBJECT:
         return BinaryTVList.deserializeWithoutBitMap(stream);
       case FLOAT:
         return FloatTVList.deserializeWithoutBitMap(stream);
@@ -821,6 +823,7 @@ public abstract class TVList implements WALEntryValue {
         case TEXT:
         case BLOB:
         case STRING:
+        case OBJECT:
           while (index < rows && builder.getPositionCount() < 
maxNumberOfPointsInPage) {
             long time = getTime(index);
             if (!isNullValue(getValueIndex(index))
@@ -891,6 +894,7 @@ public abstract class TVList implements WALEntryValue {
           case TEXT:
           case BLOB:
           case STRING:
+          case OBJECT:
             Binary value = getBinary(index);
             chunkWriterImpl.write(time, value);
             encodeInfo.dataSizeInChunk += 8L + getBinarySize(value);

Reply via email to