@@ -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