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

justinchen pushed a commit to branch fix-alter-column-type
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit fdb73f817aa9ab749a3220c88c0f1f7f72a63e82
Author: Caideyipi <[email protected]>
AuthorDate: Wed Apr 15 10:51:12 2026 +0800

    fix
---
 .../consensus/request/ConfigPhysicalPlanType.java         |  1 +
 .../request/write/table/AlterColumnDataTypePlan.java      |  4 ----
 ...nDataTypePlan.java => PreAlterColumnDataTypePlan.java} | 15 +++++----------
 .../confignode/manager/schema/ClusterSchemaManager.java   |  8 ++++++--
 .../persistence/executor/ConfigPlanExecutor.java          |  3 +++
 .../confignode/persistence/schema/ClusterSchemaInfo.java  | 10 ++++++----
 .../schema/table/AlterTableColumnDataTypeProcedure.java   |  3 ++-
 7 files changed, 23 insertions(+), 21 deletions(-)

diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlanType.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlanType.java
index 371435c9175..fe04b93d9ad 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlanType.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlanType.java
@@ -230,6 +230,7 @@ public enum ConfigPhysicalPlanType {
   PreDeleteView((short) 876),
   RenameViewColumn((short) 877),
   AlterColumnDataType((short) 878),
+  PreAlterColumnDataType((short) 879),
 
   /** Deprecated types for sync, restored them for upgrade. */
   @Deprecated
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/table/AlterColumnDataTypePlan.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/table/AlterColumnDataTypePlan.java
index 8382e7830f0..7404a7690bc 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/table/AlterColumnDataTypePlan.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/table/AlterColumnDataTypePlan.java
@@ -53,10 +53,6 @@ public class AlterColumnDataTypePlan extends 
AbstractTableColumnPlan {
     newType = TSDataType.deserializeFrom(buffer);
   }
 
-  public void setNewType(TSDataType newType) {
-    this.newType = newType;
-  }
-
   public TSDataType getNewType() {
     return newType;
   }
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/table/AlterColumnDataTypePlan.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/table/PreAlterColumnDataTypePlan.java
similarity index 81%
copy from 
iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/table/AlterColumnDataTypePlan.java
copy to 
iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/table/PreAlterColumnDataTypePlan.java
index 8382e7830f0..ed52a553225 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/table/AlterColumnDataTypePlan.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/table/PreAlterColumnDataTypePlan.java
@@ -27,17 +27,16 @@ import java.io.DataOutputStream;
 import java.io.IOException;
 import java.nio.ByteBuffer;
 
-public class AlterColumnDataTypePlan extends AbstractTableColumnPlan {
-
+public class PreAlterColumnDataTypePlan extends AbstractTableColumnPlan {
   private TSDataType newType;
 
-  public AlterColumnDataTypePlan() {
-    super(ConfigPhysicalPlanType.AlterColumnDataType);
+  public PreAlterColumnDataTypePlan() {
+    super(ConfigPhysicalPlanType.PreAlterColumnDataType);
   }
 
-  public AlterColumnDataTypePlan(
+  public PreAlterColumnDataTypePlan(
       String database, String tableName, String columnName, TSDataType 
newType) {
-    super(ConfigPhysicalPlanType.AlterColumnDataType, database, tableName, 
columnName);
+    super(ConfigPhysicalPlanType.PreAlterColumnDataType, database, tableName, 
columnName);
     this.newType = newType;
   }
 
@@ -53,10 +52,6 @@ public class AlterColumnDataTypePlan extends 
AbstractTableColumnPlan {
     newType = TSDataType.deserializeFrom(buffer);
   }
 
-  public void setNewType(TSDataType newType) {
-    this.newType = newType;
-  }
-
   public TSDataType getNewType() {
     return newType;
   }
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/schema/ClusterSchemaManager.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/schema/ClusterSchemaManager.java
index 1ea8528213b..f823f9177ac 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/schema/ClusterSchemaManager.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/schema/ClusterSchemaManager.java
@@ -65,6 +65,7 @@ import 
org.apache.iotdb.confignode.consensus.request.write.database.SetDataRepli
 import 
org.apache.iotdb.confignode.consensus.request.write.database.SetSchemaReplicationFactorPlan;
 import 
org.apache.iotdb.confignode.consensus.request.write.database.SetTimePartitionIntervalPlan;
 import 
org.apache.iotdb.confignode.consensus.request.write.pipe.payload.PipeEnrichedPlan;
+import 
org.apache.iotdb.confignode.consensus.request.write.table.PreAlterColumnDataTypePlan;
 import 
org.apache.iotdb.confignode.consensus.request.write.table.SetTableColumnCommentPlan;
 import 
org.apache.iotdb.confignode.consensus.request.write.table.SetTableCommentPlan;
 import 
org.apache.iotdb.confignode.consensus.request.write.table.view.SetViewCommentPlan;
@@ -1392,7 +1393,8 @@ public class ClusterSchemaManager {
       final String database,
       final String tableName,
       final String columnName,
-      final TSDataType dataType)
+      final TSDataType dataType,
+      final boolean isGeneratedByPipe)
       throws MetadataException {
     final TsTable originalTable = getTableIfExists(database, 
tableName).orElse(null);
 
@@ -1405,7 +1407,9 @@ public class ClusterSchemaManager {
     }
 
     TSStatus tsStatus =
-        clusterSchemaInfo.preAlterColumnDataType(database, tableName, 
columnName, dataType);
+        executePlan(
+            new PreAlterColumnDataTypePlan(database, tableName, columnName, 
dataType),
+            isGeneratedByPipe);
     if (tsStatus.getCode() != TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
       return new Pair<>(tsStatus, null);
     }
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/executor/ConfigPlanExecutor.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/executor/ConfigPlanExecutor.java
index 8016690d17c..6c9351e881a 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/executor/ConfigPlanExecutor.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/executor/ConfigPlanExecutor.java
@@ -122,6 +122,7 @@ import 
org.apache.iotdb.confignode.consensus.request.write.table.AlterColumnData
 import 
org.apache.iotdb.confignode.consensus.request.write.table.CommitCreateTablePlan;
 import 
org.apache.iotdb.confignode.consensus.request.write.table.CommitDeleteColumnPlan;
 import 
org.apache.iotdb.confignode.consensus.request.write.table.CommitDeleteTablePlan;
+import 
org.apache.iotdb.confignode.consensus.request.write.table.PreAlterColumnDataTypePlan;
 import 
org.apache.iotdb.confignode.consensus.request.write.table.PreCreateTablePlan;
 import 
org.apache.iotdb.confignode.consensus.request.write.table.PreDeleteColumnPlan;
 import 
org.apache.iotdb.confignode.consensus.request.write.table.PreDeleteTablePlan;
@@ -600,6 +601,8 @@ public class ConfigPlanExecutor {
       case CommitDeleteTable:
       case CommitDeleteView:
         return clusterSchemaInfo.dropTable((CommitDeleteTablePlan) 
physicalPlan);
+      case PreAlterColumnDataType:
+        return 
clusterSchemaInfo.preAlterColumnDataType((PreAlterColumnDataTypePlan) 
physicalPlan);
       case AlterColumnDataType:
         return clusterSchemaInfo.commitAlterColumnDataType(
             ((AlterColumnDataTypePlan) physicalPlan));
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/ClusterSchemaInfo.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/ClusterSchemaInfo.java
index e3ce7d7c29d..342da4fa3ac 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/ClusterSchemaInfo.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/persistence/schema/ClusterSchemaInfo.java
@@ -58,6 +58,7 @@ import 
org.apache.iotdb.confignode.consensus.request.write.table.AlterColumnData
 import 
org.apache.iotdb.confignode.consensus.request.write.table.CommitCreateTablePlan;
 import 
org.apache.iotdb.confignode.consensus.request.write.table.CommitDeleteColumnPlan;
 import 
org.apache.iotdb.confignode.consensus.request.write.table.CommitDeleteTablePlan;
+import 
org.apache.iotdb.confignode.consensus.request.write.table.PreAlterColumnDataTypePlan;
 import 
org.apache.iotdb.confignode.consensus.request.write.table.PreCreateTablePlan;
 import 
org.apache.iotdb.confignode.consensus.request.write.table.PreDeleteColumnPlan;
 import 
org.apache.iotdb.confignode.consensus.request.write.table.PreDeleteTablePlan;
@@ -105,7 +106,6 @@ import org.apache.iotdb.rpc.RpcUtils;
 import org.apache.iotdb.rpc.TSStatusCode;
 
 import org.apache.tsfile.annotations.TableModel;
-import org.apache.tsfile.enums.TSDataType;
 import org.apache.tsfile.utils.Pair;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -1547,13 +1547,15 @@ public class ClusterSchemaInfo implements 
SnapshotProcessor {
                 plan.getColumnName()));
   }
 
-  public TSStatus preAlterColumnDataType(
-      String databaseName, String tableName, String columnName, TSDataType 
dataType) {
+  public TSStatus preAlterColumnDataType(final PreAlterColumnDataTypePlan 
plan) {
     databaseReadWriteLock.writeLock().lock();
     try {
       final TSStatus status = new 
TSStatus(TSStatusCode.SUCCESS_STATUS.getStatusCode());
       tableModelMTree.preAlterColumnDataType(
-          getQualifiedDatabasePartialPath(databaseName), tableName, 
columnName, dataType);
+          getQualifiedDatabasePartialPath(plan.getDatabase()),
+          plan.getTableName(),
+          plan.getColumnName(),
+          plan.getNewType());
       return status;
     } catch (final MetadataException e) {
       LOGGER.warn(e.getMessage(), e);
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/table/AlterTableColumnDataTypeProcedure.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/table/AlterTableColumnDataTypeProcedure.java
index bdfc314c49a..b454fa38a5d 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/table/AlterTableColumnDataTypeProcedure.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/table/AlterTableColumnDataTypeProcedure.java
@@ -125,7 +125,8 @@ public class AlterTableColumnDataTypeProcedure
       final Pair<TSStatus, TsTable> result =
           env.getConfigManager()
               .getClusterSchemaManager()
-              .tableColumnCheckForColumnAltering(database, tableName, 
columnName, dataType);
+              .tableColumnCheckForColumnAltering(
+                  database, tableName, columnName, dataType, 
isGeneratedByPipe);
       final TSStatus status = result.getLeft();
       if (status.getCode() != TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
         setFailure(

Reply via email to