public abstract class BaseOperatorPlan extends Object implements OperatorPlan
| Modifier and Type | Field and Description |
|---|---|
protected PlanEdge |
fromEdges |
protected static org.apache.commons.logging.Log |
log |
protected List<Operator> |
ops |
protected PlanEdge |
softFromEdges |
protected PlanEdge |
softToEdges |
protected PlanEdge |
toEdges |
| Constructor and Description |
|---|
BaseOperatorPlan() |
BaseOperatorPlan(BaseOperatorPlan other) |
| Modifier and Type | Method and Description |
|---|---|
void |
add(Operator op)
Add a new operator to the plan.
|
void |
connect(Operator from,
int fromPos,
Operator to,
int toPos)
Connect two operators in the plan, controlling which position in the
edge lists that the from and to edges are placed.
|
void |
connect(Operator from,
Operator to)
Connect two operators in the plan.
|
void |
createSoftLink(Operator from,
Operator to)
Create an soft edge between two nodes.
|
Pair<Integer,Integer> |
disconnect(Operator from,
Operator to)
Disconnect two operators in the plan.
|
void |
explain(PrintStream ps,
String format,
boolean verbose) |
Iterator<Operator> |
getOperators()
Get an iterator of all operators in this plan
|
List<Operator> |
getPredecessors(Operator op)
For a given operator, get all operators immediately before it in the
plan.
|
List<Operator> |
getSinks()
Get all operators in the plan that have no successors.
|
List<Operator> |
getSoftLinkPredecessors(Operator op)
For a given operator, get all operators softly immediately before it in the
plan.
|
List<Operator> |
getSoftLinkSuccessors(Operator op)
For a given operator, get all operators softly immediately after it.
|
List<Operator> |
getSources()
Get all operators in the plan that have no predecessors.
|
List<Operator> |
getSuccessors(Operator op)
For a given operator, get all operators immediately after it.
|
void |
insertBetween(Operator pred,
Operator operatorToInsert,
Operator succ)
This method insert node operatorToInsert between pred and succ.
|
boolean |
isConnected(Operator from,
Operator to)
Check if given two operators are directly connected.
|
boolean |
isEqual(OperatorPlan other)
This is like a shallow comparison.
|
protected static boolean |
isEqual(OperatorPlan p1,
OperatorPlan p2) |
void |
moveTree(Operator root,
BaseOperatorPlan newPlan)
Move everything below a given operator to the new operator plan.
|
boolean |
pathExists(Operator from,
Operator to)
A method to check if there is a path from a given node to another node
|
void |
remove(Operator op)
Remove an operator from the plan.
|
void |
removeAndReconnect(Operator operatorToRemove)
This method remove a node operatorToRemove.
|
void |
removeSoftLink(Operator from,
Operator to)
Remove an soft edge
|
void |
replace(Operator oldOperator,
Operator newOperator)
This method replace the oldOperator with the newOperator, make all connection
to the new operator in the place of old operator
|
int |
size()
Get number of nodes in the plan.
|
String |
toString() |
void |
trimBelow(Operator op)
Trim everything below a given operator.
|
protected PlanEdge fromEdges
protected PlanEdge toEdges
protected PlanEdge softFromEdges
protected PlanEdge softToEdges
protected static final org.apache.commons.logging.Log log
public BaseOperatorPlan()
public BaseOperatorPlan(BaseOperatorPlan other)
public int size()
size in interface OperatorPlanpublic List<Operator> getSources()
getSources in interface OperatorPlanpublic List<Operator> getSinks()
getSinks in interface OperatorPlanpublic List<Operator> getPredecessors(Operator op)
getPredecessors in interface OperatorPlanop - operator to fetch predecessors ofpublic List<Operator> getSuccessors(Operator op)
getSuccessors in interface OperatorPlanop - operator to fetch successors ofpublic List<Operator> getSoftLinkPredecessors(Operator op)
getSoftLinkPredecessors in interface OperatorPlanop - operator to fetch predecessors ofpublic List<Operator> getSoftLinkSuccessors(Operator op)
getSoftLinkSuccessors in interface OperatorPlanop - operator to fetch successors ofpublic void add(Operator op)
add in interface OperatorPlanop - operator to addpublic void remove(Operator op) throws FrontendException
remove in interface OperatorPlanop - Operator to be removedFrontendException - if the remove operation attempts to
remove an operator that is still connected to other operators.public void connect(Operator from, int fromPos, Operator to, int toPos)
connect in interface OperatorPlanfrom - Operator edge will come fromfromPos - Position in the array for the from edgeto - Operator edge will go totoPos - Position in the array for the to edgepublic boolean isConnected(Operator from, Operator to)
from - Operator edge will come fromto - Operator edge will go topublic void connect(Operator from, Operator to)
connect in interface OperatorPlanfrom - Operator edge will come fromto - Operator edge will go topublic void createSoftLink(Operator from, Operator to)
createSoftLink in interface OperatorPlanfrom - Operator dependent uponto - Operator having the dependencypublic void removeSoftLink(Operator from, Operator to)
removeSoftLink in interface OperatorPlanfrom - Operator dependent uponto - Operator having the dependencypublic Pair<Integer,Integer> disconnect(Operator from, Operator to) throws FrontendException
disconnect in interface OperatorPlanfrom - Operator edge is coming fromto - Operator edge is going toFrontendException - if the two operators aren't connected.public Iterator<Operator> getOperators()
OperatorPlangetOperators in interface OperatorPlanpublic boolean isEqual(OperatorPlan other) throws FrontendException
OperatorPlanisEqual in interface OperatorPlanother - object to compareFrontendExceptionprotected static boolean isEqual(OperatorPlan p1, OperatorPlan p2) throws FrontendException
FrontendExceptionpublic void explain(PrintStream ps, String format, boolean verbose) throws FrontendException
FrontendExceptionpublic void replace(Operator oldOperator, Operator newOperator) throws FrontendException
OperatorPlanreplace in interface OperatorPlanoldOperator - operator to be replacednewOperator - operator to replaceFrontendExceptionpublic void removeAndReconnect(Operator operatorToRemove) throws FrontendException
OperatorPlanremoveAndReconnect in interface OperatorPlanoperatorToRemove - operator to removeFrontendExceptionpublic void insertBetween(Operator pred, Operator operatorToInsert, Operator succ) throws FrontendException
OperatorPlaninsertBetween in interface OperatorPlanpred - predecessor of inserted node after this methodoperatorToInsert - operato to insertsucc - successor of inserted node after this methodFrontendExceptionpublic boolean pathExists(Operator from, Operator to)
pathExists in interface OperatorPlanfrom - the start node for checkingto - the end node for checkingpublic void moveTree(Operator root, BaseOperatorPlan newPlan) throws FrontendException
root - Operator to move everything afternewPlan - new operator plan to move things intoPlanExceptionFrontendExceptionpublic void trimBelow(Operator op) throws FrontendException
op - Operator to trim everything after.FrontendExceptionCopyright © 2007-2017 The Apache Software Foundation