[ 
https://issues.apache.org/jira/browse/FLINK-7959?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Kurt Young updated FLINK-7959:
------------------------------
    Description: 
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 the 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.

  was:
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 subclass of the {{CodeGenerator}}, but all as 
standalone classes. They can create {{ExprCodeGenerator}} when the 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.


> 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
>            Priority: Major
>
> 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 the 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