Github user fhueske commented on a diff in the pull request:

    https://github.com/apache/flink/pull/4842#discussion_r145257154
  
    --- Diff: 
flink-libraries/flink-table/src/main/scala/org/apache/flink/table/plan/logical/operators.scala
 ---
    @@ -476,20 +481,30 @@ case class Join(
             } else {
               nonEquiJoinPredicateFound = true
             }
    +      // The boolean literal should be valid condition type.
    +      case x: Literal if x.resultType == Types.BOOLEAN =>
           case x => failValidation(
             s"Unsupported condition type: ${x.getClass.getSimpleName}. 
Condition: $x")
         }
     
         validateConditions(expression, isAndBranch = true)
    -    if (!equiJoinPredicateFound) {
    -      failValidation(
    -        s"Invalid join condition: $expression. At least one equi-join 
predicate is " +
    -          s"required.")
    -    }
    -    if (joinType != JoinType.INNER && (nonEquiJoinPredicateFound || 
localPredicateFound)) {
    -      failValidation(
    -        s"Invalid join condition: $expression. Non-equality join 
predicates or local" +
    -          s" predicates are not supported in outer joins.")
    +
    +    // Due to CALCITE-2004, we cannot accept join predicates except 
literal true for TableFunction
    +    // left outer join.
    +    if (correlated && right.isInstanceOf[LogicalTableFunctionCall] && 
joinType != JoinType.INNER ) {
    +      if (!alwaysTrue) failValidation("TableFunction left outer join 
predicates can only be " +
    --- End diff --
    
    `predicates` -> `predicate`


---

Reply via email to