jonathanc-n commented on code in PR #16660:
URL: https://github.com/apache/datafusion/pull/16660#discussion_r2190820204


##########
datafusion/physical-plan/src/joins/utils.rs:
##########
@@ -808,16 +809,22 @@ pub(crate) fn get_final_indices_from_shared_bitmap(
 pub(crate) fn get_final_indices_from_bit_map(
     left_bit_map: &BooleanBufferBuilder,
     join_type: JoinType,
+    // We add a flag for whether this is being passed from the 
`PiecewiseMergeJoin`
+    // because the bitmap can be for left + right `JoinType`s
+    piecewise: bool,
 ) -> (UInt64Array, UInt32Array) {
     let left_size = left_bit_map.len();
-    if join_type == JoinType::LeftMark {
+    if join_type == JoinType::LeftMark || (join_type == JoinType::RightMark && 
piecewise)
+    {
         let left_indices = (0..left_size as u64).collect::<UInt64Array>();
         let right_indices = (0..left_size)
             .map(|idx| left_bit_map.get_bit(idx).then_some(0))
             .collect::<UInt32Array>();
         return (left_indices, right_indices);
     }
-    let left_indices = if join_type == JoinType::LeftSemi {
+    let left_indices = if join_type == JoinType::LeftSemi
+        || (join_type == JoinType::RightSemi && piecewise)

Review Comment:
   No, it falls through with left semi as well. In left and right 
semi/anti/mark join we use the bitmap to mark all matched sides on the buffered 
side (this is done in `process_unmatched_buffered_batch`), we use the flag to 
only allow right semi/anti/mark to follow through when calling from the 
piecewise join. Usually the bitmap is only used to mark the unmatched rows on 
left side, which is why it originally only holds support for Left 
semi/anti/mark. I'll add a comment at the beginning of process unmatched 
buffered batch to explain this. 



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscr...@datafusion.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscr...@datafusion.apache.org
For additional commands, e-mail: github-h...@datafusion.apache.org

Reply via email to