Skip to content

Commit 6d0148e

Browse files
committed
mark_joins_needing_dedupe_incompatible_regen_tpcds
1 parent a64845c commit 6d0148e

1 file changed

Lines changed: 9 additions & 6 deletions

File tree

spark/src/main/scala/org/apache/spark/sql/comet/operators.scala

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1945,15 +1945,18 @@ object CometBroadcastNestedLoopJoinExec extends CometOperatorSerde[BroadcastNest
19451945
Some(CometConf.COMET_EXEC_BROADCAST_NESTED_LOOP_JOIN_ENABLED)
19461946
}
19471947

1948-
private val unmatchedDuplicationReason =
1949-
"BNLJ with preserved-build side (LeftOuter+BuildLeft, RightOuter+BuildRight, FullOuter)" +
1950-
" duplicates unmatched rows across partitions because the broadcast side is replicated"
1948+
private val broadcastBuildReplicationReason =
1949+
"BNLJ combinations that emit per-build-row results need a cross-partition merge that" +
1950+
" DataFusion's NestedLoopJoinExec does not provide. Affects: LeftOuter+BuildLeft," +
1951+
" RightOuter+BuildRight, FullOuter, LeftSemi+BuildLeft, LeftAnti+BuildLeft."
19511952

19521953
override def getSupportLevel(op: BroadcastNestedLoopJoinExec): SupportLevel =
19531954
(op.joinType, op.buildSide) match {
1954-
case (LeftOuter, BuildLeft) => Unsupported(Some(unmatchedDuplicationReason))
1955-
case (RightOuter, BuildRight) => Unsupported(Some(unmatchedDuplicationReason))
1956-
case (FullOuter, _) => Unsupported(Some(unmatchedDuplicationReason))
1955+
case (LeftOuter, BuildLeft) => Unsupported(Some(broadcastBuildReplicationReason))
1956+
case (RightOuter, BuildRight) => Unsupported(Some(broadcastBuildReplicationReason))
1957+
case (FullOuter, _) => Unsupported(Some(broadcastBuildReplicationReason))
1958+
case (LeftSemi, BuildLeft) => Unsupported(Some(broadcastBuildReplicationReason))
1959+
case (LeftAnti, BuildLeft) => Unsupported(Some(broadcastBuildReplicationReason))
19571960
case _ => Compatible(None)
19581961
}
19591962

0 commit comments

Comments
 (0)