예제 #1
0
 protected override void VisitSortOp(SortBaseOp op, System.Data.Entity.Core.Query.InternalTrees.Node n)
 {
     foreach (SortKey key in op.Keys)
     {
         if (TypeUtils.IsStructuredType(key.Var.Type))
         {
             this.AddPropertyRefs(key.Var, PropertyRefList.All);
         }
     }
     if (n.HasChild1)
     {
         this.VisitNode(n.Child1);
     }
     this.VisitNode(n.Child0);
 }
예제 #2
0
 protected override System.Data.Entity.Core.Query.InternalTrees.Node VisitSortOp(
     SortBaseOp op,
     System.Data.Entity.Core.Query.InternalTrees.Node n)
 {
     foreach (SortKey key in op.Keys)
     {
         this.AddReference(key.Var);
     }
     if (n.HasChild1)
     {
         n.Child1 = this.VisitNode(n.Child1);
     }
     n.Child0 = this.VisitNode(n.Child0);
     this.m_command.RecomputeNodeInfo(n);
     return(n);
 }
        /// <summary>
        ///     SortOp
        ///     First visit the sort keys - no sort key can be eliminated.
        ///     Then process the vardeflist child (if there is one) that contains computed
        ///     vars, and finally process the relop input. As before, the computedvars
        ///     and sortkeys need to be processed before the relop input
        /// </summary>
        /// <param name="op"> the sortop </param>
        /// <param name="n"> the current subtree </param>
        /// <returns> modified subtree </returns>
        protected override Node VisitSortOp(SortBaseOp op, Node n)
        {
            // first visit the sort keys
            foreach (var sk in op.Keys)
            {
                AddReference(sk.Var);
            }
            // next walk through all the computed expressions
            if (n.HasChild1)
            {
                n.Child1 = VisitNode(n.Child1);
            }
            // finally process the input
            n.Child0 = VisitNode(n.Child0);

            m_command.RecomputeNodeInfo(n);
            return(n);
        }
예제 #4
0
        /// <summary>
        /// SortOp handling
        ///
        /// First, "request" that for any sort key that is a structured type, we
        /// need all its properties. Then process any local definitions, and
        /// finally the relop input
        /// </summary>
        /// <param name="op"></param>
        /// <param name="n"></param>
        protected override void VisitSortOp(SortBaseOp op, Node n)
        {
            // foreach sort key, every single bit of the Var is needed
            foreach (InternalTrees.SortKey sk in op.Keys)
            {
                if (TypeUtils.IsStructuredType(sk.Var.Type))
                {
                    AddPropertyRefs(sk.Var, PropertyRefList.All);
                }
            }

            // if the sort has any local definitions, process those first
            if (n.HasChild1)
            {
                VisitNode(n.Child1);
            }
            // then process the relop input
            VisitNode(n.Child0);
        }
예제 #5
0
 // <summary>
 // Same as the input
 // </summary>
 protected override int VisitSortOp(SortBaseOp op, Node n)
 {
     return(VisitNode(n.Child0));
 }
 protected override int VisitSortOp(SortBaseOp op, System.Data.Entity.Core.Query.InternalTrees.Node n)
 {
     return(this.VisitNode(n.Child0));
 }
예제 #7
0
 protected override void VisitSortOp(SortBaseOp op, Node n)
 {
     VisitRelOpDefault(op, n);
     Map(op.Keys);
 }
예제 #8
0
 protected override void VisitSortOp(SortBaseOp op, System.Data.Entity.Core.Query.InternalTrees.Node n)
 {
     this.VisitRelOpDefault((RelOp)op, n);
     this.Map(op.Keys);
 }