Class JoinDeriveIsNotNullFilterRule

All Implemented Interfaces:
TransformationRule

@Enclosing public class JoinDeriveIsNotNullFilterRule extends RelRule<JoinDeriveIsNotNullFilterRule.Config> implements TransformationRule
Planner rule that derives IS NOT NULL predicates from a inner Join and creates Filters with those predicates as new inputs of the join.

Since the Null value can never match in the inner join, and it can lead to skewness due to too many Null values, a not-null filter can be created and pushed down into the input of join.

Similar to CoreRules.FILTER_INTO_JOIN, it would try to create filters and push them into the inputs of the join to filter data as much as possible before join.