You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@flink.apache.org by "Benoît Paris (Jira)" <ji...@apache.org> on 2020/02/03 16:47:00 UTC

[jira] [Created] (FLINK-15867) LAST_VALUE aggregate function does not support time-related types

Benoît Paris created FLINK-15867:
------------------------------------

             Summary: 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
         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)