Kurt Young created FLINK-7959:
---------------------------------
Summary: 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 class.
The new {{CodeGeneratorContext}} will keep all the reusable statements, while the new {{ExprCodeGenerator}} will only do generating codes from RexNode.
And 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.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)