Class TransformFilteringSemiJoinToInnerJoin

java.lang.Object
io.trino.sql.planner.iterative.rule.TransformFilteringSemiJoinToInnerJoin
All Implemented Interfaces:
Rule<FilterNode>

public class TransformFilteringSemiJoinToInnerJoin extends Object implements Rule<FilterNode>
Rewrite filtering semi-join to inner join.

Transforms:

 - Filter (semiJoinSymbol AND predicate)
    - SemiJoin (semiJoinSymbol invalid input: '<'- (a IN b))
        source: plan A producing symbol a
        filtering source: plan B producing symbol b
 

Into:

 - Project (semiJoinSymbol invalid input: '<'- TRUE)
    - Join INNER on (a = b), joinFilter (predicate with semiJoinSymbol replaced with TRUE)
       - source
       - Aggregation distinct(b)
          - filtering source