Uploaded image for project: 'Flink'
  1. Flink
  2. FLINK-10994

The bug of timestampadd handles time

    XMLWordPrintableJSON

    Details

      Description

      The error occur when timestampadd(MINUTE, 1, time '01:00:00') is executed:

      java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long

      at org.apache.calcite.rex.RexBuilder.clean(RexBuilder.java:1520)
      at org.apache.calcite.rex.RexBuilder.makeLiteral(RexBuilder.java:1318)
      at org.apache.flink.table.codegen.ExpressionReducer.reduce(ExpressionReducer.scala:135)
      at org.apache.calcite.rel.rules.ReduceExpressionsRule.reduceExpressionsInternal(ReduceExpressionsRule.java:620)
      at org.apache.calcite.rel.rules.ReduceExpressionsRule.reduceExpressions(ReduceExpressionsRule.java:540)
      at org.apache.calcite.rel.rules.ReduceExpressionsRule$ProjectReduceExpressionsRule.onMatch(ReduceExpressionsRule.java:288)

      I think it should meet the following conditions:

      expression Expect the result
      timestampadd(MINUTE, -1, time '00:00:00') 23:59:00
      timestampadd(MINUTE, 1, time '00:00:00') 00:01:00
      timestampadd(MINUTE, 1, time '23:59:59') 00:00:59
      timestampadd(SECOND, 1, time '23:59:59') 00:00:00
      timestampadd(HOUR, 1, time '23:59:59') 00:59:59

      This problem seems to be a bug in calcite. I have submitted isuse to calcite. The following is the link.
      CALCITE-2699

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                x1q1j1 Forward Xu
                Reporter:
                x1q1j1 Forward Xu
              • Votes:
                0 Vote for this issue
                Watchers:
                2 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: