[ https://issues.apache.org/jira/browse/FLINK-5357?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15814112#comment-15814112 ]
ASF GitHub Bot commented on FLINK-5357: --------------------------------------- Github user wuchong commented on a diff in the pull request: https://github.com/apache/flink/pull/3063#discussion_r95308316 --- Diff: flink-libraries/flink-table/src/main/scala/org/apache/flink/table/plan/logical/operators.scala --- @@ -92,20 +92,19 @@ case class Project(projectList: Seq[NamedExpression], child: LogicalNode) extend } override protected[logical] def construct(relBuilder: RelBuilder): RelBuilder = { - val allAlias = projectList.forall(_.isInstanceOf[Alias]) child.construct(relBuilder) - if (allAlias) { - // Calcite's RelBuilder does not translate identity projects even if they rename fields. - // Add a projection ourselves (will be automatically removed by translation rules). - val project = LogicalProject.create(relBuilder.peek(), + // Calcite's RelBuilder does not translate identity projects even if they rename fields. + // We add a projection ourselves (will be automatically removed by translation rules). + val project = LogicalProject.create( --- End diff -- Good point ! The hack code existed because of Calcite's RelBuilder does not create project when only rename fields. The `project( Iterable<? extends RexNode> nodes, Iterable<String> fieldNames, boolean force)` was introduced and fixed this issue by Calcite-1342. I have tried to replace the hack code by the following code, and all tests passed ! ```scala override protected[logical] def construct(relBuilder: RelBuilder): RelBuilder = { child.construct(relBuilder) relBuilder.project( projectList.map { case Alias(c, _, _) => c.toRexNode(relBuilder) case n@_ => n.toRexNode(relBuilder) }.asJava, projectList.map(_.name).asJava, true) } ``` > WordCountTable fails > -------------------- > > Key: FLINK-5357 > URL: https://issues.apache.org/jira/browse/FLINK-5357 > Project: Flink > Issue Type: Bug > Components: Table API & SQL > Reporter: Timo Walther > Assignee: Timo Walther > > The execution of org.apache.flink.table.examples.java.WordCountTable fails: > {code} > Exception in thread "main" org.apache.flink.table.api.TableException: POJO > does not define field name: TMP_0 > at > org.apache.flink.table.typeutils.TypeConverter$$anonfun$2.apply(TypeConverter.scala:85) > at > org.apache.flink.table.typeutils.TypeConverter$$anonfun$2.apply(TypeConverter.scala:81) > at scala.collection.immutable.List.foreach(List.scala:318) > at > org.apache.flink.table.typeutils.TypeConverter$.determineReturnType(TypeConverter.scala:81) > at > org.apache.flink.table.plan.nodes.dataset.DataSetCalc.translateToPlan(DataSetCalc.scala:110) > at > org.apache.flink.table.api.BatchTableEnvironment.translate(BatchTableEnvironment.scala:305) > at > org.apache.flink.table.api.BatchTableEnvironment.translate(BatchTableEnvironment.scala:289) > at > org.apache.flink.table.api.java.BatchTableEnvironment.toDataSet(BatchTableEnvironment.scala:146) > at > org.apache.flink.table.examples.java.WordCountTable.main(WordCountTable.java:56) > 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:498) > at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147) > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)