Till Rohrmann created FLINK-4240:
------------------------------------

             Summary: Cannot use expressions in Scala Table API's groupBy method
                 Key: FLINK-4240
                 URL: https://issues.apache.org/jira/browse/FLINK-4240
             Project: Flink
          Issue Type: Bug
          Components: Table API & SQL
    Affects Versions: 1.1.0
            Reporter: Till Rohrmann


The following code fails even though it should be supported according to the 
documentation:

{code}
package com.dataartisans.batch

import org.apache.flink.api.scala._
import org.apache.flink.api.scala.table._
import org.apache.flink.api.table.{Row, TableConfig, TableEnvironment}

object ScalaSimpleTableAPIJob {

  def main(args: Array[String]): Unit = {
    val env = ExecutionEnvironment.getExecutionEnvironment

    val tblConfig = new TableConfig

    val tblEnv = TableEnvironment.getTableEnvironment(env, tblConfig)

    val input1Seq = 0 until 10 map {x => (x, ('a' + x).toChar.toString, 
x.toDouble)}

    val inputDS1 = env.fromCollection(input1Seq)

    val input1 = tblEnv.fromDataSet(inputDS1, 'a, 'b, 'c)

    // fails with org.apache.flink.api.table.ValidationException: cannot 
resolve [a] given input [('a % 4)]
    val tblResult = input1.groupBy('a % 4).select('a);

    val result = tblEnv.toDataSet[Row](tblResult)

    result.print()
  }
}
{code}

{code}
Exception in thread "main" org.apache.flink.api.table.ValidationException: 
cannot resolve [a] given input [('a % 4)]
        at 
org.apache.flink.api.table.plan.logical.LogicalNode.failValidation(LogicalNode.scala:143)
        at 
org.apache.flink.api.table.plan.logical.LogicalNode$$anonfun$validate$1.applyOrElse(LogicalNode.scala:87)
        at 
org.apache.flink.api.table.plan.logical.LogicalNode$$anonfun$validate$1.applyOrElse(LogicalNode.scala:84)
        at 
org.apache.flink.api.table.trees.TreeNode.postOrderTransform(TreeNode.scala:72)
        at 
org.apache.flink.api.table.plan.logical.LogicalNode.org$apache$flink$api$table$plan$logical$LogicalNode$$expressionPostOrderTransform$1(LogicalNode.scala:120)
        at 
org.apache.flink.api.table.plan.logical.LogicalNode$$anonfun$7$$anonfun$apply$1.apply(LogicalNode.scala:133)
        at 
scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
        at 
scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
        at 
scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
        at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
        at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
        at scala.collection.AbstractTraversable.map(Traversable.scala:105)
        at 
org.apache.flink.api.table.plan.logical.LogicalNode$$anonfun$7.apply(LogicalNode.scala:132)
        at scala.collection.Iterator$$anon$11.next(Iterator.scala:328)
        at scala.collection.Iterator$class.foreach(Iterator.scala:727)
        at scala.collection.AbstractIterator.foreach(Iterator.scala:1157)
        at 
scala.collection.generic.Growable$class.$plus$plus$eq(Growable.scala:48)
        at 
scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:103)
        at 
scala.collection.mutable.ArrayBuffer.$plus$plus$eq(ArrayBuffer.scala:47)
        at scala.collection.TraversableOnce$class.to(TraversableOnce.scala:273)
        at scala.collection.AbstractIterator.to(Iterator.scala:1157)
        at 
scala.collection.TraversableOnce$class.toBuffer(TraversableOnce.scala:265)
        at scala.collection.AbstractIterator.toBuffer(Iterator.scala:1157)
        at 
scala.collection.TraversableOnce$class.toArray(TraversableOnce.scala:252)
        at scala.collection.AbstractIterator.toArray(Iterator.scala:1157)
        at 
org.apache.flink.api.table.plan.logical.LogicalNode.expressionPostOrderTransform(LogicalNode.scala:137)
        at 
org.apache.flink.api.table.plan.logical.LogicalNode.validate(LogicalNode.scala:84)
        at 
org.apache.flink.api.table.plan.logical.Project.validate(operators.scala:57)
        at org.apache.flink.api.table.GroupedTable.select(table.scala:631)
        at 
com.dataartisans.batch.ScalaSimpleTableAPIJob$.main(ScalaSimpleTableAPIJob.scala:26)
        at 
com.dataartisans.batch.ScalaSimpleTableAPIJob.main(ScalaSimpleTableAPIJob.scala)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
{code}



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

Reply via email to