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

justinchen pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/master by this push:
     new 7ffab902909 Fixed the NPE when add column of non-existing view & Pipe: 
Fixed the client release problem in trackable handler (#16128)
7ffab902909 is described below

commit 7ffab90290955358a94a851eef55b8b9d7ac26cb
Author: Caideyipi <87789683+caidey...@users.noreply.github.com>
AuthorDate: Fri Aug 8 14:26:51 2025 +0800

    Fixed the NPE when add column of non-existing view & Pipe: Fixed the client 
release problem in trackable handler (#16128)
    
    * test-view
    
    * test
---
 .../java/org/apache/iotdb/relational/it/schema/IoTDBTableIT.java  | 8 ++++++++
 .../procedure/impl/schema/table/view/AddViewColumnProcedure.java  | 5 +++++
 .../thrift/async/handler/PipeTransferTrackableHandler.java        | 1 +
 3 files changed, 14 insertions(+)

diff --git 
a/integration-test/src/test/java/org/apache/iotdb/relational/it/schema/IoTDBTableIT.java
 
b/integration-test/src/test/java/org/apache/iotdb/relational/it/schema/IoTDBTableIT.java
index 10a8fdb6e41..54881fb8293 100644
--- 
a/integration-test/src/test/java/org/apache/iotdb/relational/it/schema/IoTDBTableIT.java
+++ 
b/integration-test/src/test/java/org/apache/iotdb/relational/it/schema/IoTDBTableIT.java
@@ -867,6 +867,14 @@ public class IoTDBTableIT {
         final Statement statement = connection.createStatement()) {
       statement.execute("use tree_view_db");
 
+      // Test error message
+      try {
+        statement.execute("alter view view_not_exist add column col from col");
+        fail();
+      } catch (final SQLException e) {
+        assertEquals("550: Table 'tree_view_db.view_not_exist' does not 
exist", e.getMessage());
+      }
+
       // Temporary
       try {
         statement.execute(
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/table/view/AddViewColumnProcedure.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/table/view/AddViewColumnProcedure.java
index 27a0618ab6a..2bce5180505 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/table/view/AddViewColumnProcedure.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/schema/table/view/AddViewColumnProcedure.java
@@ -28,6 +28,7 @@ import 
org.apache.iotdb.confignode.persistence.schema.TreeDeviceViewFieldDetecto
 import org.apache.iotdb.confignode.procedure.env.ConfigNodeProcedureEnv;
 import org.apache.iotdb.confignode.procedure.exception.ProcedureException;
 import 
org.apache.iotdb.confignode.procedure.impl.schema.table.AddTableColumnProcedure;
+import org.apache.iotdb.confignode.procedure.state.ProcedureState;
 import org.apache.iotdb.confignode.procedure.store.ProcedureType;
 import org.apache.iotdb.rpc.TSStatusCode;
 
@@ -58,6 +59,10 @@ public class AddViewColumnProcedure extends 
AddTableColumnProcedure {
   @Override
   protected void columnCheck(final ConfigNodeProcedureEnv env) {
     super.columnCheck(env);
+    // Check failure
+    if (getState().equals(ProcedureState.FAILED)) {
+      return;
+    }
 
     final Map<String, Set<FieldColumnSchema>> fields2Detect = new HashMap<>();
     for (final TsTableColumnSchema schema : addedColumnList) {
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/thrift/async/handler/PipeTransferTrackableHandler.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/thrift/async/handler/PipeTransferTrackableHandler.java
index 0b7ba7554fa..7f0617a2785 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/thrift/async/handler/PipeTransferTrackableHandler.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/sink/protocol/thrift/async/handler/PipeTransferTrackableHandler.java
@@ -98,6 +98,7 @@ public abstract class PipeTransferTrackableHandler
         LOGGER.info(
             "Illegal state when return the client to object pool, maybe the 
pool is already cleared. Will ignore.");
       }
+      this.client = null;
       return false;
     }
     doTransfer(client, req);

Reply via email to