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);