This is an automated email from the ASF dual-hosted git repository. jt2594838 pushed a commit to branch add_flat_device in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 74cb02ac21009b5e7b82d2dd7870c571eca1ae26 Author: Tian Jiang <[email protected]> AuthorDate: Wed Sep 23 16:17:10 2026 +0800 tmp --- .../operator/source/AlignedSeriesScanUtil.java | 9 --------- .../tablemodel/FlatDeviceCompactionTest.java | 20 +++++++++----------- 2 files changed, 9 insertions(+), 20 deletions(-) diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/AlignedSeriesScanUtil.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/AlignedSeriesScanUtil.java index 3907ca3029e..ea5f00a5ace 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/AlignedSeriesScanUtil.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/AlignedSeriesScanUtil.java @@ -27,7 +27,6 @@ import org.apache.iotdb.db.storageengine.dataregion.read.reader.common.AlignedDe import org.apache.iotdb.db.storageengine.dataregion.read.reader.common.AlignedPriorityMergeReader; import org.apache.iotdb.db.storageengine.dataregion.read.reader.common.DescPriorityMergeReader; import org.apache.iotdb.db.storageengine.dataregion.read.reader.common.FlatDeviceDescPriorityMergeReader; -import org.apache.iotdb.db.storageengine.dataregion.read.reader.common.FlatDevicePointReader; import org.apache.iotdb.db.storageengine.dataregion.read.reader.common.FlatDevicePriorityMergeReader; import org.apache.iotdb.db.storageengine.dataregion.read.reader.common.PriorityMergeReader; import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource; @@ -40,7 +39,6 @@ import org.apache.tsfile.read.reader.IPointReader; import org.apache.tsfile.write.schema.IMeasurementSchema; import java.io.IOException; -import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @@ -146,13 +144,6 @@ public class AlignedSeriesScanUtil extends SeriesScanUtil { @Override protected IPointReader getPointReader(TsBlock tsBlock) { - if (rowKeyColumnIndices.length > 0) { - return new FlatDevicePointReader( - tsBlock, - dataTypes, - Arrays.stream(rowKeyColumnIndices).boxed().collect(Collectors.toList()), - orderUtils.getAscending()); - } return tsBlock.getTsBlockAlignedRowIterator(); } diff --git a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/tablemodel/FlatDeviceCompactionTest.java b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/tablemodel/FlatDeviceCompactionTest.java index 202f9ac7287..6f4da013a8e 100644 --- a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/tablemodel/FlatDeviceCompactionTest.java +++ b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/compaction/tablemodel/FlatDeviceCompactionTest.java @@ -132,22 +132,18 @@ public class FlatDeviceCompactionTest extends AbstractCompactionTest { public void testFastInnerUnseqCompactionWithEarlierRowsInNewerFlatDeviceFile() throws Exception { // File version order differs from time order. The newer file both backfills earlier data // and overwrites (3, a, x); (3, b, x) and (3, c, x) must remain distinct rows. - long[][] timestamps = {{3, 3, 4, 5}, {1, 3, 3, 6}}; - String[][] firstTags = {{"a", "b", "a", "a"}, {"a", "a", "c", "a"}}; + long[][] timestamps = {{3, 4, 5, 3}, {1, 3, 6, 3}}; + String[][] firstTags = {{"a", "a", "a", "b"}, {"a", "a", "a", "c"}}; + long[][] fields = {{10, 12, 13, 11}, {20, 21, 23, 22}}; for (int file = 0; file < timestamps.length; file++) { TsFileResource source = createEmptyFileAndResource(false); unseqResources.add(source); - long fieldOffset = (file + 1) * 10L; try (CompactionTableModelTestFileWriter writer = new CompactionTableModelTestFileWriter(source)) { writer.registerFlatDeviceSchema("flat_table"); writer.startChunkGroup("flat_table", Collections.emptyList()); writer.generateFlatDeviceAlignedRows( - timestamps[file], - firstTags[file], - new long[] {fieldOffset, fieldOffset + 1, fieldOffset + 2, fieldOffset + 3}, - new String[] {"x", "x", "x", "x"}, - 2); + timestamps[file], firstTags[file], fields[file], new String[] {"x", "x", "x", "x"}, 2); writer.endChunkGroup(); writer.endFile(); } @@ -261,8 +257,8 @@ public class FlatDeviceCompactionTest extends AbstractCompactionTest { TsFileResource source = createEmptyFileAndResource(false); unseqResources.add(source); List<Long> keys = new ArrayList<>(); - for (long time = file * 11L; time < file * 11L + timesPerFile; time++) { - for (int device = 0; device < deviceCount; device++) { + for (int device = 0; device < deviceCount; device++) { + for (long time = file * 11L; time < file * 11L + timesPerFile; time++) { // Deterministic gaps emulate unequal client progress without making a source unsorted. if (sparse && (time + device * 7L + file * 3L) % 13 < 5) { continue; @@ -368,7 +364,9 @@ public class FlatDeviceCompactionTest extends AbstractCompactionTest { RepairDataFileScanUtil scan = new RepairDataFileScanUtil(resource); scan.scanTsFile(checkResource); Assert.assertFalse(scan.isBrokenFile()); - Assert.assertEquals("m".equals(secondTag), scan.hasUnsortedDataOrWrongStatistics()); + // Both a regressing TAG and a duplicate full row key violate TAG-first ordering. + Assert.assertEquals( + secondTag, "m".compareTo(secondTag) >= 0, scan.hasUnsortedDataOrWrongStatistics()); } } }
