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

Reply via email to