Fix aligned load fallback corruption test
diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/load/converter/LoadTreeStatementDataTypeConvertExecutionVisitorTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/load/converter/LoadTreeStatementDataTypeConvertExecutionVisitorTest.java index 7cfcfb2..32b15a1 100644 --- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/load/converter/LoadTreeStatementDataTypeConvertExecutionVisitorTest.java +++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/load/converter/LoadTreeStatementDataTypeConvertExecutionVisitorTest.java
@@ -31,6 +31,7 @@ import org.apache.iotdb.rpc.TSStatusCode; import org.apache.tsfile.enums.TSDataType; +import org.apache.tsfile.file.metadata.AbstractAlignedChunkMetadata; import org.apache.tsfile.file.metadata.IChunkMetadata; import org.apache.tsfile.file.metadata.IDeviceID; import org.apache.tsfile.file.metadata.enums.TSEncoding; @@ -51,6 +52,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Optional; public class LoadTreeStatementDataTypeConvertExecutionVisitorTest { @@ -275,7 +277,8 @@ reader.getIChunkMetadataList(deviceId, measurement); Assert.assertFalse(chunkMetadataList.isEmpty()); - final long chunkHeaderOffset = chunkMetadataList.get(0).getOffsetOfChunkHeader(); + final long chunkHeaderOffset = + getTargetChunkMetadata(chunkMetadataList.get(0), measurement).getOffsetOfChunkHeader(); try (final RandomAccessFile randomAccessFile = new RandomAccessFile(file, "rw")) { randomAccessFile.seek(chunkHeaderOffset + 64); randomAccessFile.write(new byte[] {1, 2, 3, 4, 5, 6, 7, 8}); @@ -283,6 +286,23 @@ } } + private IChunkMetadata getTargetChunkMetadata( + final IChunkMetadata chunkMetadata, final String measurement) { + if (!(chunkMetadata instanceof AbstractAlignedChunkMetadata)) { + return chunkMetadata; + } + + final IChunkMetadata valueChunkMetadata = + ((AbstractAlignedChunkMetadata) chunkMetadata) + .getValueChunkMetadataList().stream() + .filter(Objects::nonNull) + .filter(metadata -> measurement.equals(metadata.getMeasurementUid())) + .findFirst() + .orElse(null); + Assert.assertNotNull(valueChunkMetadata); + return valueChunkMetadata; + } + private void assertMeasurementLoadedCompletely( final Map<String, Integer> pointCountByTimeseries, final String device,