[
https://issues.apache.org/jira/browse/FLINK-7959?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16265081#comment-16265081
]
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_r152924498
--- Diff:
flink-libraries/flink-table/src/main/scala/org/apache/flink/table/codegen/calls/CurrentTimePointCallGen.scala
---
@@ -31,28 +32,28 @@ class CurrentTimePointCallGen(
extends CallGenerator {
override def generate(
- codeGenerator: CodeGenerator,
- operands: Seq[GeneratedExpression])
- : GeneratedExpression = targetType match {
+ ctx: CodeGeneratorContext,
--- End diff --
Use `ExprCodeGenerator` here such that we don't need to pass `nullCheck` to
every util function, if those functions are part of `ExprCodeGenerator` class.
With this approach we don't need to add `nullCheck` to `CallGenerate.generate`.
> 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)