Skip to content

Commit 87a4da5

Browse files
committed
In order to avoid get chunkMetadata of other index in the array, wish to get chunkMetadata current index itself, when execute query statement.
Place null value that when chunkMetaData is not compatible with chunkMetadData of target data type
1 parent 9ba0fda commit 87a4da5

File tree

3 files changed

+8
-11
lines changed

3 files changed

+8
-11
lines changed

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/schemaregion/utils/ResourceByPathUtils.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -552,7 +552,7 @@ public ITimeSeriesMetadata generateTimeSeriesMetadata(
552552
chunkMetadata.setModified(true);
553553
}
554554
if (!useFakeStatistics) {
555-
if (targetDataType.isCompatible(chunkMetadata.getDataType())) {
555+
if (chunkMetadata != null && targetDataType.isCompatible(chunkMetadata.getDataType())) {
556556
seriesStatistics.mergeStatistics(chunkMetadata.getStatistics());
557557
}
558558
continue;

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/SchemaUtils.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -404,14 +404,17 @@ public static AbstractAlignedChunkMetadata rewriteAlignedChunkMetadataStatistics
404404
AbstractAlignedChunkMetadata alignedChunkMetadata, TSDataType targetDataType) {
405405
List<IChunkMetadata> newValueChunkMetadataList = new ArrayList<>();
406406
for (IChunkMetadata valueChunkMetadata : alignedChunkMetadata.getValueChunkMetadataList()) {
407-
if (targetDataType.isCompatible(valueChunkMetadata.getDataType())) {
407+
if (valueChunkMetadata != null
408+
&& targetDataType.isCompatible(valueChunkMetadata.getDataType())) {
408409
Statistics<?> statistics = Statistics.getStatsByType(targetDataType);
409410
statistics = getNewStatistics(valueChunkMetadata, targetDataType, statistics);
410411

411412
ChunkMetadata newChunkMetadata = (ChunkMetadata) valueChunkMetadata;
412413
newChunkMetadata.setTsDataType(targetDataType);
413414
newChunkMetadata.setStatistics(statistics);
414415
newValueChunkMetadataList.add(newChunkMetadata);
416+
} else {
417+
newValueChunkMetadataList.add(null);
415418
}
416419
}
417420
return new AlignedChunkMetadata(
@@ -420,7 +423,7 @@ public static AbstractAlignedChunkMetadata rewriteAlignedChunkMetadataStatistics
420423

421424
public static void rewriteNonAlignedChunkMetadataStatistics(
422425
ChunkMetadata chunkMetadata, TSDataType targetDataType) {
423-
if (targetDataType.isCompatible(chunkMetadata.getDataType())) {
426+
if (chunkMetadata != null && targetDataType.isCompatible(chunkMetadata.getDataType())) {
424427
Statistics<?> statistics = Statistics.getStatsByType(targetDataType);
425428
statistics = getNewStatistics(chunkMetadata, targetDataType, statistics);
426429

iotdb-core/datanode/src/test/java/org/apache/iotdb/db/utils/SchemaUtilsTest.java

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -171,10 +171,7 @@ public void mergeMetadataStatistics() throws Exception {
171171
s3.update(
172172
new long[] {1, 2},
173173
new Binary[] {
174-
new Binary("3", StandardCharsets.UTF_8),
175-
new Binary("4", StandardCharsets.UTF_8),
176-
new Binary("3", StandardCharsets.UTF_8),
177-
new Binary("4", StandardCharsets.UTF_8)
174+
new Binary("3", StandardCharsets.UTF_8), new Binary("4", StandardCharsets.UTF_8),
178175
},
179176
2);
180177
}
@@ -185,10 +182,7 @@ public void mergeMetadataStatistics() throws Exception {
185182
s4.update(
186183
new long[] {1, 2},
187184
new Binary[] {
188-
new Binary("5", StandardCharsets.UTF_8),
189-
new Binary("6", StandardCharsets.UTF_8),
190-
new Binary("5", StandardCharsets.UTF_8),
191-
new Binary("6", StandardCharsets.UTF_8)
185+
new Binary("5", StandardCharsets.UTF_8), new Binary("6", StandardCharsets.UTF_8),
192186
},
193187
2);
194188
}

0 commit comments

Comments
 (0)