Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Duplicate
-
1.6.2, 1.7.1
-
None
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
- duplicates
-
FLINK-11120 TIMESTAMPADD function handles TIME incorrectly
- Closed
- is cloned by
-
FLINK-11120 TIMESTAMPADD function handles TIME incorrectly
- Closed