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

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

commit 67bc84578aefef56db6abac881170f27bad53bc3
Author: Tian Jiang <[email protected]>
AuthorDate: Wed Dec 24 18:57:40 2025 +0800

    add EvolvedSchema.toSchemaEvolutions
---
 .../dataregion/tsfile/evolution/ColumnRename.java     |  1 +
 .../dataregion/tsfile/evolution/EvolvedSchema.java    | 19 +++++++++++++++++++
 .../tsfile/evolution/EvolvedSchemaTest.java           | 18 ++++++++++++++++++
 3 files changed, 38 insertions(+)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/evolution/ColumnRename.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/evolution/ColumnRename.java
index 80ff4b0f3ba..9d13ce4f7e6 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/evolution/ColumnRename.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/evolution/ColumnRename.java
@@ -34,6 +34,7 @@ public class ColumnRename implements SchemaEvolution {
   private String tableName;
   private String nameBefore;
   private String nameAfter;
+  // to judge if the Object directories should be renamed
   private TSDataType dataType;
 
   // for deserialization
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/evolution/EvolvedSchema.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/evolution/EvolvedSchema.java
index 8913d795eb3..9a8d2cda88a 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/evolution/EvolvedSchema.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/evolution/EvolvedSchema.java
@@ -19,6 +19,8 @@
 
 package org.apache.iotdb.db.storageengine.dataregion.tsfile.evolution;
 
+import java.util.ArrayList;
+import java.util.List;
 import org.apache.tsfile.file.metadata.IDeviceID;
 import org.apache.tsfile.file.metadata.IDeviceID.Factory;
 
@@ -103,6 +105,23 @@ public class EvolvedSchema {
         + '}';
   }
 
+  public List<SchemaEvolution> toSchemaEvolutions() {
+      List<SchemaEvolution> schemaEvolutions = new ArrayList<>();
+      originalTableNames.forEach((finalTableName, originalTableName) -> {
+        if (!originalTableName.isEmpty()) {
+          schemaEvolutions.add(new TableRename(originalTableName, 
finalTableName));
+        }
+      });
+      originalColumnNames.forEach((finalTableName, originalColumnNameMap) -> {
+        originalColumnNameMap.forEach((finalColumnName, originalColumnName) -> 
{
+          if (!originalColumnName.isEmpty()) {
+            schemaEvolutions.add(new ColumnRename(finalTableName, 
originalColumnName, finalColumnName, null));
+          }
+        });
+      });
+      return schemaEvolutions;
+  }
+
   public IDeviceID rewriteDeviceId(IDeviceID deviceID) {
     String tableName = deviceID.getTableName();
     String originalTableName = getOriginalTableName(tableName);
diff --git 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/evolution/EvolvedSchemaTest.java
 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/evolution/EvolvedSchemaTest.java
index 5f4f7e8280d..488971cc8c9 100644
--- 
a/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/evolution/EvolvedSchemaTest.java
+++ 
b/iotdb-core/datanode/src/test/java/org/apache/iotdb/db/storageengine/dataregion/tsfile/evolution/EvolvedSchemaTest.java
@@ -56,4 +56,22 @@ public class EvolvedSchemaTest {
 
     assertEquals(allSchema, mergedShema);
   }
+
+  @Test
+  public void testCovert() {
+    // t1 -> t2, t2.s1 -> t2.s2, t3 -> t1
+    List<SchemaEvolution> schemaEvolutionList =
+        Arrays.asList(
+            new TableRename("t1", "t2"),
+            new ColumnRename("t2", "s1", "s2", TSDataType.INT32),
+            new TableRename("t3", "t1"));
+    EvolvedSchema oldSchema = new EvolvedSchema();
+    schemaEvolutionList.forEach(schemaEvolution -> 
schemaEvolution.applyTo(oldSchema));
+
+    List<SchemaEvolution> convertedSchemaEvolutions = 
oldSchema.toSchemaEvolutions();
+    EvolvedSchema newSchema = new EvolvedSchema();
+    convertedSchemaEvolutions.forEach(schemaEvolution -> 
schemaEvolution.applyTo(newSchema));
+
+    assertEquals(oldSchema, newSchema);
+  }
 }

Reply via email to