Currently, SemiJoinRule (both CoreRules.JOIN_TO_SEMI_JOIN and CoreRules.PROJECT_TO_SEMI_JOIN) matches INNER, LEFT and SEMI join. This last join type seems a bit bizarre (why matching a SEMI join if the purpose of this rule is precisely generating one?).
It seems that SEMI was introduced in the rule by the "big join design refactoring" (see
CALCITE-2969 and 4809393).
The purpose of this ticket is to confirm whether or not processing SEMI in SemiJoinRule makes sense (and if not, remove it).