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

hui pushed a commit to branch lmh/fixCI
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 8019886e5b25d0ae4cf6966d162153eae8c6f69a
Author: Minghui Liu <[email protected]>
AuthorDate: Tue Dec 19 15:43:00 2023 +0800

    fix CI
---
 .../plan/optimization/ColumnInjectionPushDown.java        | 15 ++++++++++++---
 .../queryengine/plan/planner/plan/node/PlanVisitor.java   |  3 ++-
 2 files changed, 14 insertions(+), 4 deletions(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/optimization/ColumnInjectionPushDown.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/optimization/ColumnInjectionPushDown.java
index 40a869d18a1..7d629c6c668 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/optimization/ColumnInjectionPushDown.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/optimization/ColumnInjectionPushDown.java
@@ -33,6 +33,7 @@ import 
org.apache.iotdb.db.queryengine.plan.statement.StatementType;
 import org.apache.iotdb.db.queryengine.plan.statement.crud.QueryStatement;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 import static org.apache.iotdb.tsfile.utils.Preconditions.checkArgument;
@@ -76,9 +77,17 @@ public class ColumnInjectionPushDown implements 
PlanOptimizer {
 
     @Override
     public PlanNode visitPlan(PlanNode node, RewriterContext context) {
-      for (PlanNode child : node.getChildren()) {
-        context.setParent(node);
-        child.accept(this, context);
+      // other source node, just return
+      return node;
+    }
+
+    @Override
+    public PlanNode visitSingleChildProcess(SingleChildProcessNode node, 
RewriterContext context) {
+      PlanNode child = node.getChild();
+      context.setParent(node);
+      PlanNode rewrittenChild = child.accept(this, context);
+      if (!rewrittenChild.equals(child)) {
+        return 
node.cloneWithChildren(Collections.singletonList(rewrittenChild));
       }
       return node;
     }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanVisitor.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanVisitor.java
index 10bde9ccf6c..e8f6b149f0b 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanVisitor.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/node/PlanVisitor.java
@@ -103,6 +103,7 @@ import 
org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.InsertRowsNo
 import 
org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.InsertRowsOfOneDeviceNode;
 import 
org.apache.iotdb.db.queryengine.plan.planner.plan.node.write.InsertTabletNode;
 
+@SuppressWarnings("java:S6539") // suppress "Monster class" warning
 public abstract class PlanVisitor<R, C> {
 
   public R process(PlanNode node, C context) {
@@ -200,7 +201,7 @@ public abstract class PlanVisitor<R, C> {
   }
 
   public R visitColumnInject(ColumnInjectNode node, C context) {
-    return visitPlan(node, context);
+    return visitSingleChildProcess(node, context);
   }
 
   public R visitSingleDeviceView(SingleDeviceViewNode node, C context) {

Reply via email to