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

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

commit b24941f5c2fe07229d1f3f40b41e8dab0baa0d02
Author: shuwenwei <[email protected]>
AuthorDate: Tue Feb 3 10:10:51 2026 +0800

    Fix value and time chunk misalignment when rewriting with time deletion
---
 .../compaction/CompactionDataTypeAlterTest.java    | 55 ++++++++++++++++++++++
 pom.xml                                            |  2 +-
 2 files changed, 56 insertions(+), 1 deletion(-)

diff --git 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/CompactionDataTypeAlterTest.java
 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/CompactionDataTypeAlterTest.java
index 0d08ca7832c..42c5e30d1e8 100644
--- 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/CompactionDataTypeAlterTest.java
+++ 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/CompactionDataTypeAlterTest.java
@@ -19,12 +19,16 @@
 
 package org.apache.iotdb.db.storageengine.dataregion.compaction;
 
+import org.apache.iotdb.commons.exception.IllegalPathException;
 import org.apache.iotdb.commons.exception.MetadataException;
+import org.apache.iotdb.commons.path.MeasurementPath;
 import org.apache.iotdb.db.exception.StorageEngineException;
 import 
org.apache.iotdb.db.storageengine.dataregion.compaction.execute.performer.impl.FastCompactionPerformer;
 import 
org.apache.iotdb.db.storageengine.dataregion.compaction.execute.performer.impl.ReadChunkCompactionPerformer;
 import 
org.apache.iotdb.db.storageengine.dataregion.compaction.execute.performer.impl.ReadPointCompactionPerformer;
 import 
org.apache.iotdb.db.storageengine.dataregion.compaction.execute.task.InnerSpaceCompactionTask;
+import 
org.apache.iotdb.db.storageengine.dataregion.modification.ModificationFile;
+import 
org.apache.iotdb.db.storageengine.dataregion.modification.TreeDeletionEntry;
 import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource;
 import 
org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResourceStatus;
 import org.apache.iotdb.db.storageengine.dataregion.utils.TsFileResourceUtils;
@@ -319,4 +323,55 @@ public class CompactionDataTypeAlterTest extends 
AbstractCompactionTest {
     resource2.serialize();
     seqResources.add(resource2);
   }
+
+  @Test
+  public void testAlterDataTypeWithAlignedSeriesWithTimeDeletion()
+      throws IOException, WriteProcessException, IllegalPathException {
+    List<IMeasurementSchema> measurementSchemas1 = new ArrayList<>();
+    measurementSchemas1.add(new MeasurementSchema("s1", TSDataType.INT32));
+    measurementSchemas1.add(new MeasurementSchema("s2", TSDataType.INT32));
+
+    TsFileResource resource1 = createEmptyFileAndResource(true);
+    resource1.setStatusForTest(TsFileResourceStatus.COMPACTING);
+    try (TsFileWriter writer = new TsFileWriter(resource1.getTsFile())) {
+      writer.registerAlignedTimeseries(new Path(device), measurementSchemas1);
+      for (int i = 0; i < 100; i++) {
+        TSRecord record = new TSRecord(device, i);
+        record.addTuple(new IntDataPoint("s1", 0));
+        record.addTuple(new IntDataPoint("s2", 1));
+        writer.writeRecord(record);
+      }
+      writer.flush();
+    }
+    resource1.updateStartTime(device, 1);
+    resource1.updateEndTime(device, 1);
+    resource1.serialize();
+    ModificationFile modFile = resource1.getExclusiveModFile();
+    modFile.write(new TreeDeletionEntry(new MeasurementPath(device + ".*"), 0, 
40));
+    modFile.close();
+    seqResources.add(resource1);
+
+    List<IMeasurementSchema> measurementSchemas2 = new ArrayList<>();
+    measurementSchemas2.add(new MeasurementSchema("s1", TSDataType.DOUBLE));
+    measurementSchemas2.add(new MeasurementSchema("s2", TSDataType.DOUBLE));
+    TsFileResource resource2 = createEmptyFileAndResource(true);
+    resource2.setStatusForTest(TsFileResourceStatus.COMPACTING);
+    try (TsFileWriter writer = new TsFileWriter(resource2.getTsFile())) {
+      writer.registerAlignedTimeseries(new Path(device), measurementSchemas2);
+      TSRecord record = new TSRecord(device, 2);
+      record.addTuple(new DoubleDataPoint("s1", 2.0));
+      record.addTuple(new DoubleDataPoint("s2", 3.0));
+      writer.writeRecord(record);
+      writer.flush();
+    }
+    resource2.updateStartTime(device, 2);
+    resource2.updateEndTime(device, 2);
+    resource2.serialize();
+    seqResources.add(resource2);
+
+    InnerSpaceCompactionTask task =
+        new InnerSpaceCompactionTask(
+            0, tsFileManager, seqResources, true, new 
ReadChunkCompactionPerformer(), 0);
+    Assert.assertTrue(task.start());
+  }
 }
diff --git a/pom.xml b/pom.xml
index 3b2133c0334..240202f34c1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -173,7 +173,7 @@
         <thrift.version>0.14.1</thrift.version>
         <xz.version>1.9</xz.version>
         <zstd-jni.version>1.5.6-3</zstd-jni.version>
-        <tsfile.version>2.2.1-260130-SNAPSHOT</tsfile.version>
+        <tsfile.version>2.2.1-260203-SNAPSHOT</tsfile.version>
     </properties>
     <!--
     if we claim dependencies in dependencyManagement, then we do not claim

Reply via email to