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

shuwenwei pushed a commit to branch serializePlainDeviceTimeIndex
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit d0aa2cf57cece32a5a16e0d7e774c607193f9a1f
Author: shuwenwei <[email protected]>
AuthorDate: Wed Mar 11 19:03:38 2026 +0800

    support serializing plain device time index
---
 .../tsfile/timeindex/ArrayDeviceTimeIndex.java     |  2 +-
 .../tsfile/timeindex/PlainDeviceTimeIndex.java     |  6 -----
 .../repair/RepairUnsortedFileCompactionTest.java   | 26 ++++++++++++++++++++++
 3 files changed, 27 insertions(+), 7 deletions(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/ArrayDeviceTimeIndex.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/ArrayDeviceTimeIndex.java
index 8499b6d6b3d..fb29083a737 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/ArrayDeviceTimeIndex.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/ArrayDeviceTimeIndex.java
@@ -95,7 +95,7 @@ public class ArrayDeviceTimeIndex implements ITimeIndex {
 
   @Override
   public void serialize(OutputStream outputStream) throws IOException {
-    ReadWriteIOUtils.write(getTimeIndexType(), outputStream);
+    ReadWriteIOUtils.write(ARRAY_DEVICE_TIME_INDEX_TYPE, outputStream);
     int deviceNum = deviceToIndex.size();
 
     ReadWriteIOUtils.write(deviceNum, outputStream);
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/PlainDeviceTimeIndex.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/PlainDeviceTimeIndex.java
index 309067d1672..785407ca40f 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/PlainDeviceTimeIndex.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/timeindex/PlainDeviceTimeIndex.java
@@ -28,18 +28,12 @@ import org.apache.tsfile.utils.ReadWriteIOUtils;
 
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.OutputStream;
 import java.nio.ByteBuffer;
 import java.util.HashSet;
 import java.util.Set;
 
 public class PlainDeviceTimeIndex extends ArrayDeviceTimeIndex implements 
ITimeIndex {
 
-  @Override
-  public void serialize(OutputStream outputStream) throws IOException {
-    throw new UnsupportedOperationException();
-  }
-
   @Override
   public PlainDeviceTimeIndex deserialize(
       InputStream inputStream, IDeviceID.Deserializer deserializer) throws 
IOException {
diff --git 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairUnsortedFileCompactionTest.java
 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairUnsortedFileCompactionTest.java
index f2e39d8f866..7774bbb609b 100644
--- 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairUnsortedFileCompactionTest.java
+++ 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/repair/RepairUnsortedFileCompactionTest.java
@@ -65,7 +65,9 @@ import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mockito;
 
+import java.io.File;
 import java.io.IOException;
+import java.nio.file.Files;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -104,6 +106,30 @@ public class RepairUnsortedFileCompactionTest extends 
AbstractRepairDataTest {
     super.tearDown();
   }
 
+  @Test
+  public void testMoveOldVersionResourceFile() throws IOException {
+    String pathStr =
+        
this.getClass().getClassLoader().getResource("v3tsfile/compaction-test-tsfile").getFile();
+    File v3TsFile = new File(pathStr);
+    File v3TsFileResource = new File(pathStr + "-resource");
+    TsFileResource resource1 = createEmptyFileAndResource(true);
+    Files.copy(v3TsFile.toPath(), resource1.getTsFile().toPath());
+    Files.copy(
+        v3TsFileResource.toPath(), new File(resource1.getTsFilePath() + 
".resource").toPath());
+    resource1.deserialize();
+    resource1.setTsFileRepairStatus(TsFileRepairStatus.NEED_TO_REPAIR_BY_MOVE);
+
+    RepairUnsortedFileCompactionTask task =
+        new RepairUnsortedFileCompactionTask(0, tsFileManager, resource1, 
true, 0);
+    Assert.assertTrue(task.start());
+
+    TsFileResource resource2 =
+        new 
TsFileResource(tsFileManager.getTsFileList(false).get(0).getTsFile());
+    resource2.deserialize();
+    Assert.assertEquals(
+        ArrayDeviceTimeIndex.ARRAY_DEVICE_TIME_INDEX_TYPE, 
resource2.getTimeIndexType());
+  }
+
   @Test
   public void testRepairUnsortedDataBetweenPageWithNonAlignedSeries() throws 
IOException {
     TsFileResource resource = createEmptyFileAndResource(true);

Reply via email to