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

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

commit a3c76326df4d4bb9c39e65f700dab5b34c35e58c
Author: Beyyes <[email protected]>
AuthorDate: Sat Nov 23 20:04:12 2024 +0800

    fix cross join error
---
 .../iotdb/db/queryengine/plan/relational/planner/node/JoinNode.java  | 5 +++++
 .../relational/planner/optimizations/PushPredicateIntoTableScan.java | 5 +++++
 2 files changed, 10 insertions(+)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/JoinNode.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/JoinNode.java
index 0775075a685..3546c9a76ce 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/JoinNode.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/JoinNode.java
@@ -44,6 +44,7 @@ import java.util.Set;
 import static com.google.common.base.Preconditions.checkArgument;
 import static java.lang.String.format;
 import static java.util.Objects.requireNonNull;
+import static 
org.apache.iotdb.db.queryengine.plan.relational.planner.node.JoinNode.JoinType.INNER;
 
 public class JoinNode extends TwoChildProcessNode {
 
@@ -292,6 +293,10 @@ public class JoinNode extends TwoChildProcessNode {
     return spillable;
   }
 
+  public boolean isCrossJoin() {
+    return criteria.isEmpty() && !filter.isPresent() && joinType == INNER;
+  }
+
   @Override
   public String toString() {
     return "JoinNode-" + this.getPlanNodeId();
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/optimizations/PushPredicateIntoTableScan.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/optimizations/PushPredicateIntoTableScan.java
index f9d2d5edb1a..c23a97d3650 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/optimizations/PushPredicateIntoTableScan.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/optimizations/PushPredicateIntoTableScan.java
@@ -640,6 +640,11 @@ public class PushPredicateIntoTableScan implements 
PlanOptimizer {
                 node.isSpillable());
       }
 
+      if (((JoinNode) output).isCrossJoin()) {
+        throw new IllegalStateException(
+            "Cross join is not supported in current version, each table must 
have at least one equiJoinClause");
+      }
+
       JoinNode.EquiJoinClause joinCriteria = ((JoinNode) 
output).getCriteria().get(0);
       OrderingScheme leftOrderingScheme =
           new OrderingScheme(

Reply via email to