Details

Description

Semi-join is an important logical relational expression but many query sources (e.g. SqlToRelTranslator) do not generate them. This rule would create SemiJoinRel if it sees a join that aggregates its right input on the join key; a project on top is necessary to be sure that columns from the right side of the join are not being used.

Also, add class JoinInfo and a method on JoinRelBase 'public JoinInfo analyzeCondition()', to make it easier to analyze whether join conditions are equi-joins.