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

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

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

    https://github.com/apache/flink/pull/4940#discussion_r152918458
  
    --- Diff: 
flink-libraries/flink-table/src/main/scala/org/apache/flink/table/api/TableEnvironment.scala
 ---
    @@ -985,14 +985,11 @@ abstract class TableEnvironment(val config: 
TableConfig) {
         }
     
         // code generate MapFunction
    -    val generator = new FunctionCodeGenerator(
    -      config,
    -      false,
    -      inputTypeInfo,
    -      None,
    -      None)
    -
    -    val conversion = generator.generateConverterResultExpression(
    +    val ctx = CodeGeneratorContext()
    +    val exprGenerator = new ExprCodeGenerator(ctx, false, 
config.getNullCheck)
    --- End diff --
    
    Should we move the `nullableInput` to `bindInput`. If an input is not 
required why should this flag be required? We can also add an default `false` 
value.


> Split CodeGenerator into CodeGeneratorContext and ExprCodeGenerator
> -------------------------------------------------------------------
>
>                 Key: FLINK-7959
>                 URL: https://issues.apache.org/jira/browse/FLINK-7959
>             Project: Flink
>          Issue Type: Improvement
>          Components: Table API & SQL
>            Reporter: Kurt Young
>            Assignee: Kurt Young
>
> Right now {{CodeGenerator}} actually acts two roles, one is responsible for 
> generating codes from RexNode, and the other one is keeping lots of reusable 
> statements. It makes more sense to split these logic into two dedicated 
> classes. 
> The new {{CodeGeneratorContext}} will keep all the reusable statements, while 
> the new {{ExprCodeGenerator}} will only do generating codes from RexNode.
> And for classes like {{AggregationCodeGenerator}} or 
> {{FunctionCodeGenerator}}, I think the should not be the subclasses of the 
> {{CodeGenerator}}, but should all as standalone classes. They can create 
> {{ExprCodeGenerator}} when they need to generating codes from RexNode, and 
> they can also generating codes by themselves. The {{CodeGeneratorContext}} 
> can be passed around to collect all reusable statements, and list them in the 
> final generated class.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to