Class TwoInputNode

    • Field Detail

      • keys1

        protected final org.apache.flink.api.common.operators.util.FieldList keys1
      • keys2

        protected final org.apache.flink.api.common.operators.util.FieldList keys2
    • Constructor Detail

      • TwoInputNode

        public TwoInputNode​(org.apache.flink.api.common.operators.DualInputOperator<?,​?,​?,​?> operator)
        Creates a new two input node for the optimizer plan, representing the given operator.
        Parameters:
        operator - The operator that the optimizer DAG node should represent.
    • Method Detail

      • getOperator

        public org.apache.flink.api.common.operators.DualInputOperator<?,​?,​?,​?> getOperator()
        Description copied from class: OptimizerNode
        Gets the operator represented by this optimizer node.
        Overrides:
        getOperator in class OptimizerNode
        Returns:
        This node's operator.
      • getFirstIncomingConnection

        public DagConnection getFirstIncomingConnection()
        Gets the DagConnection through which this node receives its first input.
        Returns:
        The first input connection.
      • getSecondIncomingConnection

        public DagConnection getSecondIncomingConnection()
        Gets the DagConnection through which this node receives its second input.
        Returns:
        The second input connection.
      • getFirstPredecessorNode

        public OptimizerNode getFirstPredecessorNode()
      • getSecondPredecessorNode

        public OptimizerNode getSecondPredecessorNode()
      • getIncomingConnections

        public List<DagConnection> getIncomingConnections()
        Description copied from class: OptimizerNode
        Gets all incoming connections of this node. This method needs to be overridden by subclasses to return the children.
        Specified by:
        getIncomingConnections in class OptimizerNode
        Returns:
        The list of incoming connections.
      • setInput

        public void setInput​(Map<org.apache.flink.api.common.operators.Operator<?>,​OptimizerNode> contractToNode,
                             org.apache.flink.api.common.ExecutionMode defaultExecutionMode)
        Description copied from class: OptimizerNode
        This function connects the predecessors to this operator.
        Specified by:
        setInput in class OptimizerNode
        Parameters:
        contractToNode - The map from program operators to optimizer nodes.
        defaultExecutionMode - The data exchange mode to use, if the operator does not specify one.
      • computeInterestingPropertiesForInputs

        public void computeInterestingPropertiesForInputs​(CostEstimator estimator)
        Description copied from class: OptimizerNode
        Tells the node to compute the interesting properties for its inputs. The interesting properties for the node itself must have been computed before. The node must then see how many of interesting properties it preserves and add its own.
        Specified by:
        computeInterestingPropertiesForInputs in class OptimizerNode
        Parameters:
        estimator - The CostEstimator instance to use for plan cost estimation.
      • getAlternativePlans

        public List<PlanNode> getAlternativePlans​(CostEstimator estimator)
        Description copied from class: OptimizerNode
        Computes the plan alternatives for this node, an implicitly for all nodes that are children of this node. This method must determine for each alternative the global and local properties and the costs. This method may recursively call getAlternatives() on its children to get their plan alternatives, and build its own alternatives on top of those.
        Specified by:
        getAlternativePlans in class OptimizerNode
        Parameters:
        estimator - The cost estimator used to estimate the costs of each plan alternative.
        Returns:
        A list containing all plan alternatives.
      • placePipelineBreakersIfNecessary

        protected void placePipelineBreakersIfNecessary​(org.apache.flink.runtime.operators.DriverStrategy strategy,
                                                        Channel in1,
                                                        Channel in2)
      • computeUnclosedBranchStack

        public void computeUnclosedBranchStack()
        Description copied from class: OptimizerNode
        This method causes the node to compute the description of open branches in its sub-plan. An open branch describes, that a (transitive) child node had multiple outputs, which have not all been re-joined in the sub-plan. This method needs to set the openBranches field to a stack of unclosed branches, the latest one top. A branch is considered closed, if some later node sees all of the branching node's outputs, no matter if there have been more branches to different paths in the meantime.
        Specified by:
        computeUnclosedBranchStack in class OptimizerNode
      • getSemanticProperties

        public org.apache.flink.api.common.operators.SemanticProperties getSemanticProperties()
        Specified by:
        getSemanticProperties in class OptimizerNode
      • getSemanticPropertiesForLocalPropertyFiltering

        protected org.apache.flink.api.common.operators.SemanticProperties getSemanticPropertiesForLocalPropertyFiltering()
      • getSemanticPropertiesForGlobalPropertyFiltering

        protected org.apache.flink.api.common.operators.SemanticProperties getSemanticPropertiesForGlobalPropertyFiltering()
      • accept

        public void accept​(org.apache.flink.util.Visitor<OptimizerNode> visitor)
        Description copied from class: OptimizerNode
        This method implements the visit of a depth-first graph traversing visitor. Implementers must first call the preVisit() method, then hand the visitor to their children, and finally call the postVisit() method.
        Specified by:
        accept in interface org.apache.flink.util.Visitable<OptimizerNode>
        Specified by:
        accept in class OptimizerNode
        Parameters:
        visitor - The graph traversing visitor.
        See Also:
        Visitable.accept(org.apache.flink.util.Visitor)