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