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 7ac9af8591fcb732f6aba4c1779e4161c195b24b Author: Tian Jiang <[email protected]> AuthorDate: Tue Sep 8 09:29:56 2026 +0800 tmp --- .../compaction/execute/utils/CompactionTableSchema.java | 11 +++++++++++ .../execute/utils/CompactionTableSchemaCollector.java | 6 ++++++ .../utils/writer/AbstractCrossCompactionWriter.java | 15 ++++++++++++++- .../utils/writer/AbstractInnerCompactionWriter.java | 12 ++++++++++++ 4 files changed, 43 insertions(+), 1 deletion(-) diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/CompactionTableSchema.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/CompactionTableSchema.java index 9a79a2db839..61892177ad3 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/CompactionTableSchema.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/CompactionTableSchema.java @@ -30,10 +30,20 @@ import java.util.ArrayList; import java.util.List; public class CompactionTableSchema extends TableSchema { + private boolean flatDevice; + public CompactionTableSchema(String tableName) { super(tableName); } + public boolean isFlatDevice() { + return flatDevice; + } + + public void setFlatDevice(boolean flatDevice) { + this.flatDevice = flatDevice; + } + public boolean merge(TableSchema tableSchema) { if (tableSchema == null) { return true; @@ -81,6 +91,7 @@ public class CompactionTableSchema extends TableSchema { public CompactionTableSchema copy() { CompactionTableSchema tableSchema = new CompactionTableSchema(this.tableName); + tableSchema.flatDevice = this.flatDevice; tableSchema.measurementSchemas = new ArrayList<>(this.measurementSchemas); tableSchema.columnCategories = new ArrayList<>(this.columnCategories); return tableSchema; diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/CompactionTableSchemaCollector.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/CompactionTableSchemaCollector.java index 55640c3fcfa..8de65140f2e 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/CompactionTableSchemaCollector.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/CompactionTableSchemaCollector.java @@ -19,6 +19,7 @@ package org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils; +import org.apache.iotdb.commons.schema.table.TsFileTableSchemaUtil; import org.apache.iotdb.db.storageengine.dataregion.tsfile.TsFileResource; import org.apache.tsfile.file.metadata.TableSchema; @@ -98,6 +99,9 @@ public class CompactionTableSchemaCollector { collectedTableSchema = new CompactionTableSchema(tableName); targetTableSchemaMap.put(tableName, collectedTableSchema); } + collectedTableSchema.setFlatDevice( + collectedTableSchema.isFlatDevice() + || TsFileTableSchemaUtil.isFlatDevice(reader.getTsFileProperties(), tableName)); boolean canMerge = collectedTableSchema.merge(currentTableSchema); if (!canMerge) { // mark resources with deprecated table schema @@ -108,6 +112,8 @@ public class CompactionTableSchemaCollector { } // replace old table schema in targetTableSchemaMap collectedTableSchema = new CompactionTableSchema(tableName); + collectedTableSchema.setFlatDevice( + TsFileTableSchemaUtil.isFlatDevice(reader.getTsFileProperties(), tableName)); collectedTableSchema.merge(currentTableSchema); targetTableSchemaMap.put(tableName, collectedTableSchema); } diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/AbstractCrossCompactionWriter.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/AbstractCrossCompactionWriter.java index ac4120614de..ad5e6e53c64 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/AbstractCrossCompactionWriter.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/AbstractCrossCompactionWriter.java @@ -19,8 +19,10 @@ package org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.writer; +import org.apache.iotdb.commons.schema.table.TsFileTableSchemaUtil; import org.apache.iotdb.commons.utils.TestOnly; import org.apache.iotdb.db.conf.IoTDBDescriptor; +import org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.CompactionTableSchema; import org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.CompactionUtils; import org.apache.iotdb.db.storageengine.dataregion.compaction.io.CompactionTsFileWriter; import org.apache.iotdb.db.storageengine.dataregion.compaction.schedule.constant.CompactionType; @@ -270,7 +272,18 @@ public abstract class AbstractCrossCompactionWriter extends AbstractCompactionWr @Override public void setSchemaForAllTargetFile(List<Schema> schemas) { for (int i = 0; i < targetFileWriters.size(); i++) { - targetFileWriters.get(i).setSchema(schemas.get(i)); + final CompactionTsFileWriter targetFileWriter = targetFileWriters.get(i); + targetFileWriter.setSchema(schemas.get(i)); + schemas + .get(i) + .getTableSchemaMap() + .forEach( + (tableName, tableSchema) -> + TsFileTableSchemaUtil.addFlatDeviceProperty( + targetFileWriter, + tableName, + tableSchema instanceof CompactionTableSchema compactionTableSchema + && compactionTableSchema.isFlatDevice())); } } diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/AbstractInnerCompactionWriter.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/AbstractInnerCompactionWriter.java index c59c658708c..4e840a83687 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/AbstractInnerCompactionWriter.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/compaction/execute/utils/writer/AbstractInnerCompactionWriter.java @@ -19,8 +19,10 @@ package org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.writer; +import org.apache.iotdb.commons.schema.table.TsFileTableSchemaUtil; import org.apache.iotdb.commons.utils.TestOnly; import org.apache.iotdb.db.conf.IoTDBDescriptor; +import org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.CompactionTableSchema; import org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.CompactionTableSchemaCollector; import org.apache.iotdb.db.storageengine.dataregion.compaction.execute.utils.CompactionUtils; import org.apache.iotdb.db.storageengine.dataregion.compaction.io.CompactionTsFileWriter; @@ -126,6 +128,16 @@ public abstract class AbstractInnerCompactionWriter extends AbstractCompactionWr targetResources.get(currentFileIndex), fileWriter.getTableSizeMap()); } fileWriter.setSchema(CompactionTableSchemaCollector.copySchema(schemas.get(0))); + schemas + .get(0) + .getTableSchemaMap() + .forEach( + (tableName, tableSchema) -> + TsFileTableSchemaUtil.addFlatDeviceProperty( + fileWriter, + tableName, + tableSchema instanceof CompactionTableSchema compactionTableSchema + && compactionTableSchema.isFlatDevice())); } @Override
