Github user fhueske commented on a diff in the pull request: https://github.com/apache/flink/pull/4858#discussion_r146076115 --- Diff: flink-libraries/flink-table/src/main/scala/org/apache/flink/table/plan/rules/dataSet/DataSetJoinRule.scala --- @@ -41,8 +41,7 @@ class DataSetJoinRule val joinInfo = join.analyzeCondition // joins require an equi-condition or a conjunctive predicate with at least one equi-condition - // and disable outer joins with non-equality predicates(see FLINK-5520) - !joinInfo.pairs().isEmpty && (joinInfo.isEqui || join.getJoinType == JoinRelType.INNER) + !joinInfo.pairs().isEmpty --- End diff -- Yes, that is true but the rule are also applied in different contexts. `FlinkLogicalJoin` is used for the initial translation of batch and stream programs and `DataSetJoinRule` only for batch. I think it's OK to have these checks as safety net.
---