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

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

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

    https://github.com/apache/flink/pull/1958#discussion_r62681359
  
    --- Diff: 
flink-libraries/flink-table/src/main/scala/org/apache/flink/api/table/expressions/aggregations.scala
 ---
    @@ -36,41 +39,59 @@ abstract sealed class Aggregation extends 
UnaryExpression { self: Product =>
     }
     
     case class Sum(child: Expression) extends Aggregation {
    -  override def toString = s"($child).sum"
    +  override def toString = s"sum($child)"
     
       override def toAggCall(name: String)(implicit relBuilder: RelBuilder): 
AggCall = {
         relBuilder.aggregateCall(SqlStdOperatorTable.SUM, false, null, name, 
child.toRexNode)
       }
    +
    +  override def dataType = child.dataType
    +
    +  override def validateInput = 
TypeCheckUtils.assertNumericExpr(child.dataType, "sum")
     }
     
     case class Min(child: Expression) extends Aggregation {
    -  override def toString = s"($child).min"
    +  override def toString = s"min($child)"
     
       override def toAggCall(name: String)(implicit relBuilder: RelBuilder): 
AggCall = {
         relBuilder.aggregateCall(SqlStdOperatorTable.MIN, false, null, name, 
child.toRexNode)
       }
    +
    +  override def dataType = child.dataType
    +
    +  override def validateInput = 
TypeCheckUtils.assertOrderableExpr(child.dataType, "min")
     }
     
     case class Max(child: Expression) extends Aggregation {
    -  override def toString = s"($child).max"
    +  override def toString = s"max($child)"
     
       override def toAggCall(name: String)(implicit relBuilder: RelBuilder): 
AggCall = {
         relBuilder.aggregateCall(SqlStdOperatorTable.MAX, false, null, name, 
child.toRexNode)
       }
    +
    +  override def dataType = child.dataType
    +
    +  override def validateInput = 
TypeCheckUtils.assertOrderableExpr(child.dataType, "max")
     }
     
     case class Count(child: Expression) extends Aggregation {
    -  override def toString = s"($child).count"
    +  override def toString = s"count($child)"
     
       override def toAggCall(name: String)(implicit relBuilder: RelBuilder): 
AggCall = {
         relBuilder.aggregateCall(SqlStdOperatorTable.COUNT, false, null, name, 
child.toRexNode)
       }
    +
    +  override def dataType = BasicTypeInfo.LONG_TYPE_INFO
     }
     
     case class Avg(child: Expression) extends Aggregation {
    -  override def toString = s"($child).avg"
    +  override def toString = s"avg($child)"
     
       override def toAggCall(name: String)(implicit relBuilder: RelBuilder): 
AggCall = {
         relBuilder.aggregateCall(SqlStdOperatorTable.AVG, false, null, name, 
child.toRexNode)
       }
    +
    +  override def dataType = BasicTypeInfo.DOUBLE_TYPE_INFO
    --- End diff --
    
    Our current implementation returns avg aggregates as the input data type. I 
think this should be changed to `child.dataType`.


> Add a validation phase before construct RelNode using TableAPI
> --------------------------------------------------------------
>
>                 Key: FLINK-3754
>                 URL: https://issues.apache.org/jira/browse/FLINK-3754
>             Project: Flink
>          Issue Type: Improvement
>          Components: Table API
>    Affects Versions: 1.0.0
>            Reporter: Yijie Shen
>            Assignee: Yijie Shen
>
> Unlike sql string's execution, which have a separate validation phase before 
> RelNode construction, Table API lacks the counterparts and the validation is 
> scattered in many places.
> I suggest to add a single validation phase and detect problems as early as 
> possible.



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

Reply via email to