Exemplo n.º 1
0
 internal void GetEquiJoinPredicates(
     VarVec leftTableDefinitions,
     VarVec rightTableDefinitions,
     out List <Var> leftTableEquiJoinColumns,
     out List <Var> rightTableEquiJoinColumns,
     out Predicate otherPredicates)
 {
     otherPredicates           = new Predicate(this.m_command);
     leftTableEquiJoinColumns  = new List <Var>();
     rightTableEquiJoinColumns = new List <Var>();
     foreach (System.Data.Entity.Core.Query.InternalTrees.Node part in this.m_parts)
     {
         Var leftVar;
         Var rightVar;
         if (Predicate.IsEquiJoinPredicate(part, leftTableDefinitions, rightTableDefinitions, out leftVar, out rightVar))
         {
             leftTableEquiJoinColumns.Add(leftVar);
             rightTableEquiJoinColumns.Add(rightVar);
         }
         else
         {
             otherPredicates.AddPart(part);
         }
     }
 }
Exemplo n.º 2
0
        private void GetSingleTablePredicates(
            List <VarVec> tableDefinitions,
            out List <Predicate> singleTablePredicates, out Predicate otherPredicates)
        {
            singleTablePredicates = new List <Predicate>();
            foreach (var vec in tableDefinitions)
            {
                singleTablePredicates.Add(new Predicate(m_command));
            }
            otherPredicates = new Predicate(m_command);
            var externalRefs = m_command.CreateVarVec();

            foreach (var part in m_parts)
            {
                var nodeInfo = m_command.GetNodeInfo(part);

                var singleTablePart = false;
                for (var i = 0; i < tableDefinitions.Count; i++)
                {
                    var tableColumns = tableDefinitions[i];
                    if (tableColumns != null)
                    {
                        externalRefs.InitFrom(nodeInfo.ExternalReferences);
                        externalRefs.Minus(tableColumns);
                        if (externalRefs.IsEmpty)
                        {
                            singleTablePart = true;
                            singleTablePredicates[i].AddPart(part);
                            break;
                        }
                    }
                }
                if (!singleTablePart)
                {
                    otherPredicates.AddPart(part);
                }
            }
        }
Exemplo n.º 3
0
        private void GetSingleTablePredicates(
            List <VarVec> tableDefinitions,
            out List <Predicate> singleTablePredicates,
            out Predicate otherPredicates)
        {
            singleTablePredicates = new List <Predicate>();
            foreach (VarVec tableDefinition in tableDefinitions)
            {
                singleTablePredicates.Add(new Predicate(this.m_command));
            }
            otherPredicates = new Predicate(this.m_command);
            VarVec varVec = this.m_command.CreateVarVec();

            foreach (System.Data.Entity.Core.Query.InternalTrees.Node part in this.m_parts)
            {
                NodeInfo nodeInfo = this.m_command.GetNodeInfo(part);
                bool     flag     = false;
                for (int index = 0; index < tableDefinitions.Count; ++index)
                {
                    VarVec tableDefinition = tableDefinitions[index];
                    if (tableDefinition != null)
                    {
                        varVec.InitFrom(nodeInfo.ExternalReferences);
                        varVec.Minus(tableDefinition);
                        if (varVec.IsEmpty)
                        {
                            flag = true;
                            singleTablePredicates[index].AddPart(part);
                            break;
                        }
                    }
                }
                if (!flag)
                {
                    otherPredicates.AddPart(part);
                }
            }
        }
Exemplo n.º 4
0
        internal Predicate GetJoinPredicates(
            VarVec leftTableDefinitions,
            VarVec rightTableDefinitions,
            out Predicate otherPredicates)
        {
            Predicate predicate = new Predicate(this.m_command);

            otherPredicates = new Predicate(this.m_command);
            foreach (System.Data.Entity.Core.Query.InternalTrees.Node part in this.m_parts)
            {
                Var leftVar;
                Var rightVar;
                if (Predicate.IsEquiJoinPredicate(part, leftTableDefinitions, rightTableDefinitions, out leftVar, out rightVar))
                {
                    predicate.AddPart(part);
                }
                else
                {
                    otherPredicates.AddPart(part);
                }
            }
            return(predicate);
        }
Exemplo n.º 5
0
        internal Predicate GetJoinPredicates(
            VarVec leftTableDefinitions, VarVec rightTableDefinitions,
            out Predicate otherPredicates)
        {
            var joinPredicate = new Predicate(m_command);

            otherPredicates = new Predicate(m_command);

            foreach (var part in m_parts)
            {
                Var leftTableVar;
                Var rightTableVar;

                if (IsEquiJoinPredicate(part, leftTableDefinitions, rightTableDefinitions, out leftTableVar, out rightTableVar))
                {
                    joinPredicate.AddPart(part);
                }
                else
                {
                    otherPredicates.AddPart(part);
                }
            }
            return(joinPredicate);
        }
Exemplo n.º 6
0
        // <summary>
        // Get the set of equi-join columns from this predicate
        // </summary>
        internal void GetEquiJoinPredicates(
            VarVec leftTableDefinitions, VarVec rightTableDefinitions,
            out List <Var> leftTableEquiJoinColumns, out List <Var> rightTableEquiJoinColumns,
            out Predicate otherPredicates)
        {
            otherPredicates           = new Predicate(m_command);
            leftTableEquiJoinColumns  = new List <Var>();
            rightTableEquiJoinColumns = new List <Var>();
            foreach (var part in m_parts)
            {
                Var leftTableVar;
                Var rightTableVar;

                if (IsEquiJoinPredicate(part, leftTableDefinitions, rightTableDefinitions, out leftTableVar, out rightTableVar))
                {
                    leftTableEquiJoinColumns.Add(leftTableVar);
                    rightTableEquiJoinColumns.Add(rightTableVar);
                }
                else
                {
                    otherPredicates.AddPart(part);
                }
            }
        }
Exemplo n.º 7
0
        private void GetSingleTablePredicates(
            List<VarVec> tableDefinitions,
            out List<Predicate> singleTablePredicates, out Predicate otherPredicates)
        {
            singleTablePredicates = new List<Predicate>();
            foreach (var vec in tableDefinitions)
            {
                singleTablePredicates.Add(new Predicate(m_command));
            }
            otherPredicates = new Predicate(m_command);
            var externalRefs = m_command.CreateVarVec();

            foreach (var part in m_parts)
            {
                var nodeInfo = m_command.GetNodeInfo(part);

                var singleTablePart = false;
                for (var i = 0; i < tableDefinitions.Count; i++)
                {
                    var tableColumns = tableDefinitions[i];
                    if (tableColumns != null)
                    {
                        externalRefs.InitFrom(nodeInfo.ExternalReferences);
                        externalRefs.Minus(tableColumns);
                        if (externalRefs.IsEmpty)
                        {
                            singleTablePart = true;
                            singleTablePredicates[i].AddPart(part);
                            break;
                        }
                    }
                }
                if (!singleTablePart)
                {
                    otherPredicates.AddPart(part);
                }
            }
        }
Exemplo n.º 8
0
        internal Predicate GetJoinPredicates(
            VarVec leftTableDefinitions, VarVec rightTableDefinitions,
            out Predicate otherPredicates)
        {
            var joinPredicate = new Predicate(m_command);
            otherPredicates = new Predicate(m_command);

            foreach (var part in m_parts)
            {
                Var leftTableVar;
                Var rightTableVar;

                if (IsEquiJoinPredicate(part, leftTableDefinitions, rightTableDefinitions, out leftTableVar, out rightTableVar))
                {
                    joinPredicate.AddPart(part);
                }
                else
                {
                    otherPredicates.AddPart(part);
                }
            }
            return joinPredicate;
        }
Exemplo n.º 9
0
        // <summary>
        // Get the set of equi-join columns from this predicate
        // </summary>
        internal void GetEquiJoinPredicates(
            VarVec leftTableDefinitions, VarVec rightTableDefinitions,
            out List<Var> leftTableEquiJoinColumns, out List<Var> rightTableEquiJoinColumns,
            out Predicate otherPredicates)
        {
            otherPredicates = new Predicate(m_command);
            leftTableEquiJoinColumns = new List<Var>();
            rightTableEquiJoinColumns = new List<Var>();
            foreach (var part in m_parts)
            {
                Var leftTableVar;
                Var rightTableVar;

                if (IsEquiJoinPredicate(part, leftTableDefinitions, rightTableDefinitions, out leftTableVar, out rightTableVar))
                {
                    leftTableEquiJoinColumns.Add(leftTableVar);
                    rightTableEquiJoinColumns.Add(rightTableVar);
                }
                else
                {
                    otherPredicates.AddPart(part);
                }
            }
        }