[
https://issues.apache.org/jira/browse/FLINK-11715?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Kurt Young updated FLINK-11715:
-------------------------------
Component/s: (was: API / Table SQL)
SQL / Planner
> Add optimize program to organize optimization phases
> ----------------------------------------------------
>
> Key: FLINK-11715
> URL: https://issues.apache.org/jira/browse/FLINK-11715
> Project: Flink
> Issue Type: New Feature
> Components: SQL / Planner
> Reporter: godfrey he
> Assignee: godfrey he
> Priority: Major
> Labels: pull-request-available
> Time Spent: 10m
> Remaining Estimate: 0h
>
> Currently, Flink organizes the optimization phases by different methods in
> Batch(Stream)TableEnvironment#optimize. However this is not easy to extend
> especially there are more than ten optimization stages in Blink. On the other
> hand, the methods are very similar, except the match order and rule sets for
> hep optimization phases, target traits and rule sets for volcano optimization
> phases.
> Abstracts each optimization stage into a {{FlinkOptimizeProgram}} in Blink,
> defined as following:
> {code}
> /**
> * Likes [[org.apache.calcite.tools.Program]], FlinkOptimizeProgram
> transforms a relational
> * expression into another relational expression.
> */
> trait FlinkOptimizeProgram[OC <: OptimizeContext] {
> def optimize(input: RelNode, context: OC): RelNode
> }
> {code}
> {{FlinkOptimizeProgram}}'s subclasses include
> 1. {{FlinkRuleSetProgram}}, an abstract program can add/remove {{RuleSet}},
> set target traits.
> 2. {{FlinkHepRuleSetProgram}}, a subclass of {{FlinkRuleSetProgram}} which
> runs with {{HepPlanner}}.
> 3. {{FlinkVolcanoProgram}}, a subclass of {{FlinkRuleSetProgram}} which runs
> with {{VolcanoPlanner}}.
> 4. {{FlinkGroupProgram}}, a program contains a sequence of sub-programs as a
> group, programs in the group will be executed in sequence, and the group can
> be executed `iterations` times.
> ......
> {{FlinkChainedPrograms}} is responsible for organizing all the programs, each
> program's optimize method will be called in sequence when
> {{FlinkChainedPrograms}}#optimize is called.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)