Details
-
Improvement
-
Status: Closed
-
Major
-
Resolution: Done
-
None
Description
Currently, there are many improvements about ExecNode:
1. simplify type parameter of ExecNode. Currently, ExecNode#translateToPlan takes BatchPlanner or StreamPlanner as a parameter, so ExecNode has a type parameter E <: Planner, which indicates the node is a batch node or a streaming node. While in the future, a plan may contain both batch nodes and stream node. The type parameter can be removed, and we will use PlannerBase instead.
2. port the implementation of ExecNodes to Java
3. separate the implementation of FlinkPhysicalRel and ExecNode. Currently, an execution node extends both from FlinkPhysicalRel and ExecNode. After a physical node is converted to an exec node, many parameters are unnecessary, such as: RelOptCluster, RelTraitSet, etc. With more optimizations on ExecNode, We need ExecNode to be cleaner and simpler. So we will separate the implementation of FlinkPhysicalRel and ExecNode.
Currently, the ExecEdge represents the properties for the input of an operator, the properties include
1. required data distribute for an input (the input corresponds to the Input)
2. DamBehavior which describes the behaviors how an in record may trigger the output of the target operator.
3. the priority of this input read by the target operator
So ExecEdge should be rename to InputProperty, and we will re-introduce ExecEdge which describes how to connect two ExecNodes, and how to shuffle the data between two ExecNodes. Its role should be similar to StreamEdge.
This is an umbrella issue, we will create more related sub-tasks.