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 <[email protected]>
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);