Ejemplo n.º 1
0
 /// <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);
 }
Ejemplo n.º 2
0
 private JoinEdge(
     AugmentedTableNode left, AugmentedTableNode right,
     AugmentedJoinNode joinNode, JoinKind joinKind,
     List <ColumnVar> leftVars, List <ColumnVar> rightVars)
 {
     m_left      = left;
     m_right     = right;
     JoinKind    = joinKind;
     m_joinNode  = joinNode;
     m_leftVars  = leftVars;
     m_rightVars = rightVars;
     PlanCompiler.Assert(m_leftVars.Count == m_rightVars.Count, "Count mismatch: " + m_leftVars.Count + "," + m_rightVars.Count);
 }
Ejemplo n.º 3
0
 private JoinEdge(
     AugmentedTableNode left, AugmentedTableNode right,
     AugmentedJoinNode joinNode, JoinKind joinKind,
     List<ColumnVar> leftVars, List<ColumnVar> rightVars)
 {
     m_left = left;
     m_right = right;
     JoinKind = joinKind;
     m_joinNode = joinNode;
     m_leftVars = leftVars;
     m_rightVars = rightVars;
     PlanCompiler.Assert(m_leftVars.Count == m_rightVars.Count, "Count mismatch: " + m_leftVars.Count + "," + m_rightVars.Count);
 }
Ejemplo n.º 4
0
 private JoinEdge(
     AugmentedTableNode left,
     AugmentedTableNode right,
     AugmentedJoinNode joinNode,
     JoinKind joinKind,
     List <ColumnVar> leftVars,
     List <ColumnVar> rightVars)
 {
     this.m_left      = left;
     this.m_right     = right;
     this.JoinKind    = joinKind;
     this.m_joinNode  = joinNode;
     this.m_leftVars  = leftVars;
     this.m_rightVars = rightVars;
     System.Data.Entity.Core.Query.PlanCompiler.PlanCompiler.Assert((this.m_leftVars.Count == this.m_rightVars.Count ? 1 : 0) != 0, "Count mismatch: " + (object)this.m_leftVars.Count + "," + (object)this.m_rightVars.Count);
 }
Ejemplo n.º 5
0
        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));
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
 // <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;
 }
Ejemplo n.º 8
0
        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;
        }