/// <summary> /// Add a new "equi-join" condition to this edge /// </summary> /// <param name="joinNode"> join node producing this condition </param> /// <param name="leftVar"> the left-side column </param> /// <param name="rightVar"> the right-side column </param> /// <returns> true, if this condition can be added </returns> internal bool AddCondition(AugmentedJoinNode joinNode, ColumnVar leftVar, ColumnVar rightVar) { if (joinNode != m_joinNode) { return(false); } m_leftVars.Add(leftVar); m_rightVars.Add(rightVar); return(true); }
internal static JoinEdge CreateJoinEdge( AugmentedTableNode left, AugmentedTableNode right, AugmentedJoinNode joinNode, ColumnVar leftVar, ColumnVar rightVar) { List <ColumnVar> leftVars = new List <ColumnVar>(); List <ColumnVar> rightVars = new List <ColumnVar>(); leftVars.Add(leftVar); rightVars.Add(rightVar); OpType opType = joinNode.Node.Op.OpType; System.Data.Entity.Core.Query.PlanCompiler.PlanCompiler.Assert(opType == OpType.LeftOuterJoin || opType == OpType.InnerJoin, "Unexpected join type for join edge: " + (object)opType); JoinKind joinKind = opType == OpType.LeftOuterJoin ? JoinKind.LeftOuter : JoinKind.Inner; return(new JoinEdge(left, right, joinNode, joinKind, leftVars, rightVars)); }
internal static JoinEdge CreateJoinEdge( AugmentedTableNode left, AugmentedTableNode right, AugmentedJoinNode joinNode, ColumnVar leftVar, ColumnVar rightVar) { var leftVars = new List <ColumnVar>(); var rightVars = new List <ColumnVar>(); leftVars.Add(leftVar); rightVars.Add(rightVar); var joinOpType = joinNode.Node.Op.OpType; PlanCompiler.Assert( (joinOpType == OpType.LeftOuterJoin || joinOpType == OpType.InnerJoin), "Unexpected join type for join edge: " + joinOpType); var joinKind = joinOpType == OpType.LeftOuterJoin ? JoinKind.LeftOuter : JoinKind.Inner; var joinEdge = new JoinEdge(left, right, joinNode, joinKind, leftVars, rightVars); return(joinEdge); }