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


##########
datafusion/common/src/join_type.rs:
##########
@@ -111,6 +111,51 @@ impl JoinType {
                 | JoinType::RightAnti
         )
     }
+
+    /// Determines whether each input of the join is preserved for WHERE 
clause filters.
+    ///
+    /// A join input is "preserved" if every row from that input appears in at 
least one
+    /// output row. This property determines whether filters referencing only 
columns
+    /// from that input can be safely pushed below the join.
+    ///
+    /// For example:
+    ///   - In an inner join, both sides are preserved, because each row of 
the output
+    ///     maps directly to a row from each side.
+    ///   - In a left join, the left side is preserved (we can push 
predicates) but
+    ///     the right is not, because there may be rows in the output that 
don't
+    ///     directly map to a row in the right input (due to nulls filling 
where there
+    ///     is no match on the right).
+    ///   - In semi joins, only the preserved side's columns appear in the 
output,
+    ///     so filters can only reference and be pushed to that side.
+    ///
+    /// # Returns
+    /// A tuple of `(left_preserved, right_preserved)` booleans.
+    ///
+    /// # Examples
+    ///
+    /// ```
+    /// use datafusion_common::JoinType;
+    ///
+    /// assert_eq!(JoinType::Inner.lr_is_preserved(), (true, true));
+    /// assert_eq!(JoinType::Left.lr_is_preserved(), (true, false));
+    /// assert_eq!(JoinType::LeftSemi.lr_is_preserved(), (true, false));
+    /// ```
+    pub fn lr_is_preserved(self) -> (bool, bool) {

Review Comment:
   i think we should use a slightly more clear name, maybe like 
join_side_is_preserved() or something along those lines



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