You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ji...@apache.org on 2026/10/12 06:50:41 UTC
(iotdb) 06/38: tmp
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 <jt...@163.com>
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