From 2e4daa7006aeb1fff53c886cbd129aae8d0c4db6 Mon Sep 17 00:00:00 2001 From: jakevin Date: Tue, 6 Feb 2024 11:18:21 +0800 Subject: [PATCH] [fix](Nereids): fix wrong case in TransposeSemiJoinLogicalJoinProject (#30874) --- .../rewrite/TransposeSemiJoinLogicalJoinProject.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/TransposeSemiJoinLogicalJoinProject.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/TransposeSemiJoinLogicalJoinProject.java index 37b3e027ff..783dca5f9d 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/TransposeSemiJoinLogicalJoinProject.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/TransposeSemiJoinLogicalJoinProject.java @@ -76,7 +76,11 @@ public class TransposeSemiJoinLogicalJoinProject extends OneRewriteRuleFactory { * A B A C */ // RIGHT_OUTER_JOIN should be eliminated in rewrite phase - Preconditions.checkState(bottomJoin.getJoinType() != JoinType.RIGHT_OUTER_JOIN); + // TODO: when top join is ANTI JOIN, bottomJoin may be RIGHT_OUTER_JOIN + // Can we also do the transformation? + if (bottomJoin.getJoinType() == JoinType.RIGHT_OUTER_JOIN) { + return null; + } Plan newBottomSemiJoin = topSemiJoin.withChildren(a, c); Plan newTopJoin = bottomJoin.withChildren(newBottomSemiJoin, b); @@ -92,7 +96,11 @@ public class TransposeSemiJoinLogicalJoinProject extends OneRewriteRuleFactory { * A B B C */ // LEFT_OUTER_JOIN should be eliminated in rewrite phase - Preconditions.checkState(bottomJoin.getJoinType() != JoinType.LEFT_OUTER_JOIN); + // TODO: when top join is ANTI JOIN, bottomJoin may be RIGHT_OUTER_JOIN + // Can we also do the transformation? + if (bottomJoin.getJoinType() == JoinType.LEFT_OUTER_JOIN) { + return null; + } Plan newBottomSemiJoin = topSemiJoin.withChildren(b, c); Plan newTopJoin = bottomJoin.withChildren(a, newBottomSemiJoin);