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

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

commit 5e37dc12fd5fba79d5986c54235359e97a8f6169
Author: lancelly <[email protected]>
AuthorDate: Tue Jan 7 21:10:40 2025 +0800

    add check
---
 .../plan/relational/planner/SubqueryPlanner.java   | 51 ++++++++++++----------
 1 file changed, 29 insertions(+), 22 deletions(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/SubqueryPlanner.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/SubqueryPlanner.java
index 184fc073943..a7ae06d94c5 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/SubqueryPlanner.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/SubqueryPlanner.java
@@ -117,32 +117,39 @@ class SubqueryPlanner {
 
   public PlanBuilder handleSubqueries(
       PlanBuilder builder, Expression expression, Analysis.SubqueryAnalysis 
subqueries) {
-    for (Cluster<InPredicate> cluster :
-        cluster(
-            builder.getScope(),
-            selectSubqueries(builder, expression, 
subqueries.getInPredicatesSubqueries()))) {
-      builder = planInPredicate(builder, cluster, subqueries);
-    }
-    for (Cluster<SubqueryExpression> cluster :
-        cluster(
-            builder.getScope(),
-            selectSubqueries(builder, expression, 
subqueries.getSubqueries()))) {
-      builder = planScalarSubquery(builder, cluster);
+    List<InPredicate> inPredicates = subqueries.getInPredicatesSubqueries();
+    if (!inPredicates.isEmpty()) {
+      for (Cluster<InPredicate> cluster :
+          cluster(builder.getScope(), selectSubqueries(builder, expression, 
inPredicates))) {
+        builder = planInPredicate(builder, cluster, subqueries);
+      }
     }
-    for (Cluster<ExistsPredicate> cluster :
-        cluster(
-            builder.getScope(),
-            selectSubqueries(builder, expression, 
subqueries.getExistsSubqueries()))) {
-      builder = planExists(builder, cluster);
+
+    List<SubqueryExpression> scalarSubqueries = subqueries.getSubqueries();
+    if (!scalarSubqueries.isEmpty()) {
+      for (Cluster<SubqueryExpression> cluster :
+          cluster(builder.getScope(), selectSubqueries(builder, expression, 
scalarSubqueries))) {
+        builder = planScalarSubquery(builder, cluster);
+      }
     }
-    for (Cluster<QuantifiedComparisonExpression> cluster :
-        cluster(
-            builder.getScope(),
-            selectSubqueries(
-                builder, expression, 
subqueries.getQuantifiedComparisonSubqueries()))) {
-      builder = planQuantifiedComparison(builder, cluster, subqueries);
+
+    List<ExistsPredicate> existsPredicates = subqueries.getExistsSubqueries();
+    if (!existsPredicates.isEmpty()) {
+      for (Cluster<ExistsPredicate> cluster :
+          cluster(builder.getScope(), selectSubqueries(builder, expression, 
existsPredicates))) {
+        builder = planExists(builder, cluster);
+      }
     }
 
+    List<QuantifiedComparisonExpression> quantifiedComparisons =
+        subqueries.getQuantifiedComparisonSubqueries();
+    if (!quantifiedComparisons.isEmpty()) {
+      for (Cluster<QuantifiedComparisonExpression> cluster :
+          cluster(
+              builder.getScope(), selectSubqueries(builder, expression, 
quantifiedComparisons))) {
+        builder = planQuantifiedComparison(builder, cluster, subqueries);
+      }
+    }
     return builder;
   }
 

Reply via email to