[ 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)