[ https://issues.apache.org/jira/browse/FLINK-15867?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17231314#comment-17231314 ]
Jannik Schmeier edited comment on FLINK-15867 at 11/13/20, 9:30 AM: -------------------------------------------------------------------- Since we need this functionality for our use cases, I would like to provide a pull request for this it. Can you please assign the issue to me? was (Author: shmyer): Since we need this functionality for our use cases, I would like to provide a pull request for this it. Can you assign the issue to me? > LAST_VALUE aggregate function does not support time-related types > ----------------------------------------------------------------- > > Key: FLINK-15867 > URL: https://issues.apache.org/jira/browse/FLINK-15867 > Project: Flink > Issue Type: Bug > Components: Table SQL / Planner > Affects Versions: 1.9.2, 1.10.0 > Reporter: Benoît Paris > Priority: Major > Attachments: flink-test-lastvalue-timestamp.zip > > > The following fails: > {code:java} > LAST_VALUE(TIMESTAMP '2020-02-03 16:17:20') > LAST_VALUE(DATE '2020-02-03') > LAST_VALUE(TIME '16:17:20') > LAST_VALUE(NOW()){code} > But this works: > > {code:java} > LAST_VALUE(UNIX_TIMESTAMP()) > {code} > Leading me to say it might be more a type/format issue, rather than an actual > time processing issue. > Attached is java + pom + full stacktrace, for reproduction. Stacktrace part > is below. > > The ByteLastValueAggFunction, etc types seem trivial to implement, but the in > the createLastValueAggFunction only basic types seem to be dealt with. Is > there a reason more complicated LogicalTypeRoots might not be implemented ? > (old vs new types?) > > > Caused by: org.apache.flink.table.api.TableException: LAST_VALUE aggregate > function does not support type: ''TIMESTAMP_WITHOUT_TIME_ZONE''.Caused by: > org.apache.flink.table.api.TableException: LAST_VALUE aggregate function does > not support type: ''TIMESTAMP_WITHOUT_TIME_ZONE''.Please re-check the data > type. at > org.apache.flink.table.planner.plan.utils.AggFunctionFactory.createLastValueAggFunction(AggFunctionFactory.scala:617) > at > org.apache.flink.table.planner.plan.utils.AggFunctionFactory.createAggFunction(AggFunctionFactory.scala:113) > at > org.apache.flink.table.planner.plan.utils.AggregateUtil$$anonfun$9.apply(AggregateUtil.scala:285) > at > org.apache.flink.table.planner.plan.utils.AggregateUtil$$anonfun$9.apply(AggregateUtil.scala:279) > at > scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234) > at > scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234) > at > scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59) > at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:48) at > scala.collection.TraversableLike$class.map(TraversableLike.scala:234) at > scala.collection.AbstractTraversable.map(Traversable.scala:104) at > org.apache.flink.table.planner.plan.utils.AggregateUtil$.transformToAggregateInfoList(AggregateUtil.scala:279) > at > org.apache.flink.table.planner.plan.utils.AggregateUtil$.transformToStreamAggregateInfoList(AggregateUtil.scala:228) > at > org.apache.flink.table.planner.plan.nodes.physical.stream.StreamExecGroupAggregate.<init>(StreamExecGroupAggregate.scala:72) > at > org.apache.flink.table.planner.plan.rules.physical.stream.StreamExecGroupAggregateRule.convert(StreamExecGroupAggregateRule.scala:68) > at > org.apache.calcite.rel.convert.ConverterRule.onMatch(ConverterRule.java:139) > at > org.apache.calcite.plan.volcano.VolcanoRuleCall.onMatch(VolcanoRuleCall.java:208) > at > org.apache.calcite.plan.volcano.VolcanoPlanner.findBestExp(VolcanoPlanner.java:631) > at org.apache.calcite.tools.Programs$RuleSetProgram.run(Programs.java:328) > at > org.apache.flink.table.planner.plan.optimize.program.FlinkVolcanoProgram.optimize(FlinkVolcanoProgram.scala:64) > ---- > > > > > -- This message was sent by Atlassian Jira (v8.3.4#803005)