[ 
https://issues.apache.org/jira/browse/FLINK-5124?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15687675#comment-15687675
 ] 

ASF GitHub Bot commented on FLINK-5124:
---------------------------------------

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

    https://github.com/apache/flink/pull/2851#discussion_r89192420
  
    --- Diff: 
flink-libraries/flink-table/src/main/scala/org/apache/flink/api/table/codegen/calls/ScalarOperators.scala
 ---
    @@ -656,38 +656,56 @@ object ScalarOperators {
           right: GeneratedExpression)
         : GeneratedExpression = {
     
    -    val operator = if (plus) "+" else "-"
    +    val op = if (plus) "+" else "-"
     
         (left.resultType, right.resultType) match {
           case (l: TimeIntervalTypeInfo[_], r: TimeIntervalTypeInfo[_]) if l 
== r =>
    -        generateArithmeticOperator(operator, nullCheck, l, left, right)
    +        generateArithmeticOperator(op, nullCheck, l, left, right)
     
           case (SqlTimeTypeInfo.DATE, TimeIntervalTypeInfo.INTERVAL_MILLIS) |
                (TimeIntervalTypeInfo.INTERVAL_MILLIS, SqlTimeTypeInfo.DATE) =>
             generateOperatorIfNotNull(nullCheck, SqlTimeTypeInfo.DATE, left, 
right) {
               if (isTimePoint(left.resultType)) {
    -            (leftTerm, rightTerm) => s"$leftTerm + ((int) ($rightTerm / 
${MILLIS_PER_DAY}L))"
    +            (leftTerm, rightTerm) =>
    +              s"$leftTerm $op ((int) ($rightTerm / ${MILLIS_PER_DAY}L))"
               } else {
    -            (leftTerm, rightTerm) => s"((int) ($leftTerm / 
${MILLIS_PER_DAY}L)) + $rightTerm"
    +            (leftTerm, rightTerm) =>
    +              s"((int) ($leftTerm / ${MILLIS_PER_DAY}L)) $op $rightTerm"
    +          }
    +        }
    +
    +      case (SqlTimeTypeInfo.DATE, TimeIntervalTypeInfo.INTERVAL_MONTHS) |
    +           (TimeIntervalTypeInfo.INTERVAL_MONTHS, SqlTimeTypeInfo.DATE) =>
    +        generateOperatorIfNotNull(nullCheck, SqlTimeTypeInfo.DATE, left, 
right) {
    +          if (isTimePoint(left.resultType)) {
    +            (leftTerm, rightTerm) =>
    +              
s"${qualifyMethod(BuiltInMethod.ADD_MONTHS.method)}($leftTerm, $op($rightTerm))"
    +          } else {
    +            (leftTerm, rightTerm) =>
    +              
s"${qualifyMethod(BuiltInMethod.ADD_MONTHS.method)}($rightTerm, $op($leftTerm))"
               }
             }
     
           case (SqlTimeTypeInfo.TIME, TimeIntervalTypeInfo.INTERVAL_MILLIS) |
                (TimeIntervalTypeInfo.INTERVAL_MILLIS, SqlTimeTypeInfo.TIME) =>
             generateOperatorIfNotNull(nullCheck, SqlTimeTypeInfo.TIME, left, 
right) {
               if (isTimePoint(left.resultType)) {
    -            (leftTerm, rightTerm) => s"$leftTerm + ((int) ($rightTerm))"
    +            (leftTerm, rightTerm) => s"$leftTerm $op ((int) ($rightTerm))"
               } else {
    -            (leftTerm, rightTerm) => s"((int) ($leftTerm)) + $rightTerm"
    +            (leftTerm, rightTerm) => s"((int) ($leftTerm)) $op $rightTerm"
               }
             }
     
           case (SqlTimeTypeInfo.TIMESTAMP, 
TimeIntervalTypeInfo.INTERVAL_MILLIS) =>
             generateOperatorIfNotNull(nullCheck, SqlTimeTypeInfo.TIMESTAMP, 
left, right) {
    -          (leftTerm, rightTerm) => s"$leftTerm + $rightTerm"
    +          (leftTerm, rightTerm) => s"$leftTerm $op $rightTerm"
             }
     
    -      // TODO more operations when CALCITE-308 is fixed
    +      case (SqlTimeTypeInfo.TIMESTAMP, 
TimeIntervalTypeInfo.INTERVAL_MONTHS) =>
    --- End diff --
    
    Do we need the inverse case?


> Support more temporal arithmetic
> --------------------------------
>
>                 Key: FLINK-5124
>                 URL: https://issues.apache.org/jira/browse/FLINK-5124
>             Project: Flink
>          Issue Type: Improvement
>          Components: Table API & SQL
>            Reporter: Timo Walther
>            Assignee: Timo Walther
>
> Multiple TPC-H queries fail because of missing temporal arithmetic support. 
> Since CALCITE-308 has been fixed we can add additional operations.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to