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

    https://github.com/apache/flink/pull/2653#discussion_r90478025
  
    --- Diff: 
flink-libraries/flink-table/src/main/scala/org/apache/flink/api/table/codegen/CodeGenerator.scala
 ---
    @@ -334,18 +337,33 @@ class CodeGenerator(
           resultFieldNames: Seq[String])
         : GeneratedExpression = {
         val input1AccessExprs = for (i <- 0 until input1.getArity)
    -      yield generateInputAccess(input1, input1Term, i)
    +      yield generateInputAccess(input1, input1Term, i, 
input1PojoFieldMapping)
     
         val input2AccessExprs = input2 match {
           case Some(ti) => for (i <- 0 until ti.getArity)
    -        yield generateInputAccess(ti, input2Term, i)
    +        yield generateInputAccess(ti, input2Term, i, 
input2PojoFieldMapping)
           case None => Seq() // add nothing
         }
     
         generateResultExpression(input1AccessExprs ++ input2AccessExprs, 
returnType, resultFieldNames)
       }
     
       /**
    +    * Generates an expression from the left input and the right table 
function.
    +    */
    +  def generateCorrelateAccessExprs: (Seq[GeneratedExpression], 
Seq[GeneratedExpression]) = {
    +    val input1AccessExprs = for (i <- 0 until input1.getArity)
    +      yield generateInputAccess(input1, input1Term, i, 
input1PojoFieldMapping)
    +
    +    val input2AccessExprs = input2 match {
    +      case Some(ti) => for (i <- 0 until ti.getArity)
    +        yield generateFieldAccess(ti, input2Term, i, 
input2PojoFieldMapping)
    --- End diff --
    
    Because `generateInputAccess` will put the field access code into 
`reusableInputUnboxingExprs`, it is forced to be put on the top of function 
body. But the table function's output is an Iterable, we need to access the 
field in a while loop. That's why we use `generateFieldAccess` to manually 
manipulate the access field code.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

Reply via email to