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

jiangtian pushed a commit to branch rc/1.3.3
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/rc/1.3.3 by this push:
     new 17d5f0fbfc2 fix last time check (#13480)
17d5f0fbfc2 is described below

commit 17d5f0fbfc235cb615166d26901b1b58813c1186
Author: shuwenwei <[email protected]>
AuthorDate: Thu Sep 12 10:12:53 2024 +0800

    fix last time check (#13480)
---
 .../ReadChunkAlignedSeriesCompactionExecutor.java  |  8 ++++--
 ...nkCompactionPerformerWithAlignedSeriesTest.java | 32 ++++++++++++++++++++++
 2 files changed, 38 insertions(+), 2 deletions(-)

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 61c85a4bd47..e0d8785ab32 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
@@ -255,7 +255,9 @@ public class ReadChunkAlignedSeriesCompactionExecutor {
       throws IOException {
     writer.markStartingWritingAligned();
     
checkAndUpdatePreviousTimestamp(timeChunk.getChunkMetadata().getStartTime());
-    checkAndUpdatePreviousTimestamp(timeChunk.getChunkMetadata().getEndTime());
+    if (timeChunk.getChunkMetadata().getStartTime() != 
timeChunk.getChunkMetadata().getEndTime()) {
+      
checkAndUpdatePreviousTimestamp(timeChunk.getChunkMetadata().getEndTime());
+    }
     writer.writeChunk(timeChunk.getChunk(), timeChunk.getChunkMetadata());
     timeChunk.clear();
     int nonEmptyChunkNum = 1;
@@ -335,7 +337,9 @@ public class ReadChunkAlignedSeriesCompactionExecutor {
       throws PageException, IOException {
     int nonEmptyPage = 1;
     checkAndUpdatePreviousTimestamp(timePage.getHeader().getStartTime());
-    checkAndUpdatePreviousTimestamp(timePage.getHeader().getEndTime());
+    if (timePage.getHeader().getStartTime() != 
timePage.getHeader().getEndTime()) {
+      checkAndUpdatePreviousTimestamp(timePage.getHeader().getEndTime());
+    }
     timePage.flushToTimeChunkWriter(chunkWriter);
     for (int i = 0; i < valuePageLoaders.size(); i++) {
       PageLoader valuePage = valuePageLoaders.get(i);
diff --git 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/NewReadChunkCompactionPerformerWithAlignedSeriesTest.java
 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/NewReadChunkCompactionPerformerWithAlignedSeriesTest.java
index cbf105aed4a..5c6ad69a7c8 100644
--- 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/NewReadChunkCompactionPerformerWithAlignedSeriesTest.java
+++ 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/inner/NewReadChunkCompactionPerformerWithAlignedSeriesTest.java
@@ -570,6 +570,38 @@ public class 
NewReadChunkCompactionPerformerWithAlignedSeriesTest extends Abstra
                 Collections.singletonList(targetResource), 
Collections.emptyList())));
   }
 
+  @Test
+  public void testCompactOnePoint() throws Exception {
+    long targetChunkSize = 
IoTDBDescriptor.getInstance().getConfig().getTargetChunkSize();
+    IoTDBDescriptor.getInstance().getConfig().setTargetChunkSize(1);
+    try {
+      TsFileResource seqResource1 =
+          generateSingleAlignedSeriesFile(
+              "d0",
+              Arrays.asList("s0", "s1", "s2"),
+              new TimeRange[] {new TimeRange(1, 1)},
+              TSEncoding.PLAIN,
+              CompressionType.LZ4,
+              Arrays.asList(false, false, false),
+              true);
+      seqResources.add(seqResource1);
+
+      CompactionTaskSummary summary = new CompactionTaskSummary();
+      TsFileResource targetResource = performCompaction(summary);
+      Assert.assertEquals(4, summary.getDirectlyFlushChunkNum());
+      Assert.assertEquals(0, summary.getDirectlyFlushPageCount());
+      Assert.assertEquals(0, summary.getRewritePointNum());
+      TsFileResourceUtils.validateTsFileDataCorrectness(targetResource);
+      Assert.assertTrue(
+          CompactionCheckerUtils.compareSourceDataAndTargetData(
+              CompactionCheckerUtils.getAllDataByQuery(seqResources, 
unseqResources),
+              CompactionCheckerUtils.getAllDataByQuery(
+                  Collections.singletonList(targetResource), 
Collections.emptyList())));
+    } finally {
+      
IoTDBDescriptor.getInstance().getConfig().setTargetChunkSize(targetChunkSize);
+    }
+  }
+
   @Test
   public void testCompactionWithDifferentCompressionTypeOrEncoding() throws 
Exception {
     TsFileResource seqResource1 =

Reply via email to