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

    https://github.com/apache/flink/pull/6027#discussion_r188894442
  
    --- Diff: 
flink-libraries/flink-table/src/main/scala/org/apache/flink/table/expressions/logic.scala
 ---
    @@ -105,3 +105,75 @@ case class If(
         }
       }
     }
    +
    +abstract class BetweenProperty(
    +  expr: Expression,
    +  lowerBound: Expression,
    +  upperBound: Expression) extends Expression {
    +
    +  override private[flink] def resultType: TypeInformation[_] = 
BasicTypeInfo.BOOLEAN_TYPE_INFO
    +
    +  override private[flink] def children: Seq[Expression] = Seq(expr, 
lowerBound, upperBound)
    +
    +  override private[flink] def validateInput(): ValidationResult = {
    +    (expr.resultType, lowerBound.resultType, upperBound.resultType) match {
    +      case (exprType, lowerType, upperType)
    +        if isNumeric(exprType) && isNumeric(lowerType) && 
isNumeric(upperType)
    +      => ValidationSuccess
    +      case (exprType, lowerType, upperType)
    +        if isComparable(exprType) && exprType == lowerType && exprType == 
upperType
    +      => ValidationSuccess
    +      case (exprType, lowerType, upperType) =>
    +        ValidationFailure(
    +          s"Between is only supported for numeric types and " +
    +            s"comparable types of same type, got $exprType, $lowerType and 
$upperType"
    --- End diff --
    
    Between is only supported for numeric types and identical comparable types, 
but got $exprType, $lowerType and $upperType.


---

Reply via email to