src/Shared/EntityFramework/Core/Query/PlanCompiler/JoinElimination.cs
// <summary>
// Do the real processing of the join graph.
// </summary>
// <param name="joinNode"> current join node </param>
// <returns> modified join node </returns>
Do the real processing of the join graph.
Do the real processing of the join graph .
private Node ProcessJoinGraph(Node joinNode)
        {
            var joinGraph = new JoinGraph(Command, ConstraintManager, m_varRefManager, joinNode);
            VarMap remappedVars;
            Dictionary<Node, Node> processedNodes;
            var newNode = joinGraph.DoJoinElimination(out remappedVars, out processedNodes);
            foreach (var kv in remappedVars)
            {
                m_varRemapper.AddMapping(kv.Key, kv.Value);
            }
            foreach (var n in processedNodes.Keys)
            {
                m_joinGraphUnnecessaryMap[n] = n;
            }
            return newNode;
        }
private Node ProcessJoinGraph ( Node joinNode ) { var joinGraph = new JoinGraph ( Command , ConstraintManager , m_varRefManager , joinNode ) ; VarMap remappedVars ; Dictionary < Node , Node > processedNodes ; var newNode = joinGraph . DoJoinElimination ( out remappedVars , out processedNodes ) ; foreach ( var kv in remappedVars ) { m_varRemapper . AddMapping ( kv . Key , kv . Value ) ; } foreach ( var n in processedNodes . Keys ) { m_joinGraphUnnecessaryMap [ n ] = n ; } return newNode ; }
Do the real processing of the join graph.
Do the real processing of the join graph .
// Build the join graph // Get the transformed node tree // Get the set of vars that need to be renamed // get the set of nodes that have already been processed
modified join node
modified join node
joinNode
Node
current join node
current join node