예제 #1
0
 public override void ProduceQueryPlan(PlanNode previous)
 {
     this.Observer.ProduceQueryPlan(new GroupedWindowPlanNode <TInput, TState, TOutput>(
                                        previous, this,
                                        typeof(TKey), typeof(TInput), typeof(TOutput), this.aggregate, this.keySelectorExpr, this.finalResultSelectorExpr,
                                        false, this.errorMessages, false));
 }
 public override void ProduceQueryPlan(PlanNode previous)
 {
     this.Observer.ProduceQueryPlan(new AlterLifetimePlanNode(
                                        previous, this,
                                        typeof(TKey), typeof(TPayload), this.startTimeSelector, this.startTimeDurationSelector,
                                        true));
 }
예제 #3
0
 internal PointAtEndPlanNode(
     PlanNode previous, IQueryObject pipe,
     Type keyType, Type payloadType,
     bool isGenerated, string errorMessages, bool withStateManager)
     : base(previous, pipe, keyType, payloadType, payloadType, isGenerated, errorMessages)
 {
 }
예제 #4
0
 internal WherePlanNode(
     PlanNode previous, IQueryObject pipe,
     Type keyType, Type payloadType,
     Expression predicate,
     bool isGenerated, string errorMessages)
     : base(previous, pipe, keyType, payloadType, payloadType, isGenerated, errorMessages)
     => this.Predicate = predicate;
 public override void ProduceQueryPlan(PlanNode previous)
 {
     this.Observer.ProduceQueryPlan(new AlterLifetimePlanNode(
                                        previous, this,
                                        typeof(PartitionKey <TPartitionKey>), typeof(TPayload), this.startTimeSelector, this.durationSelector,
                                        false));
 }
예제 #6
0
        protected override void ProduceBinaryQueryPlan(PlanNode left, PlanNode right)
        {
            var node = new UnionPlanNode(
                left, right, this, typeof(TKey), typeof(TPayload), false, false, this.errorMessages, false);

            this.Observer.ProduceQueryPlan(node);
        }
예제 #7
0
 public override void ProduceQueryPlan(PlanNode previous)
 {
     this.Observer.ProduceQueryPlan(new SelectPlanNode(
                                        previous, this,
                                        typeof(TKey), typeof(TPayload), typeof(TResult),
                                        this.selector, false, false, false, this.errorMessages));
 }
예제 #8
0
        public override void ProduceQueryPlan(PlanNode previous)
        {
            var node = new SprayPlanNode(
                previous, this, typeof(TKey), typeof(TSpray), this.totalBranches, this.multicast, this.spraySortOrderComparer, false);

            this.Observers.ForEach(o => o.ProduceQueryPlan(node));
        }
예제 #9
0
 public override void ProduceQueryPlan(PlanNode previous)
 {
     this.Observer.ProduceQueryPlan(new ExtendLifetimePlanNode(
                                        previous, this,
                                        typeof(TKey), typeof(TPayload),
                                        false, this.errorMessages, true));
 }
 public override void ProduceQueryPlan(PlanNode previous)
 {
     this.Observer.ProduceQueryPlan(new QuantizeLifetimePlanNode(
                                        previous, this,
                                        typeof(TKey), typeof(TPayload), this.width, this.skip, this.offset,
                                        false, this.errorMessages, false));
 }
예제 #11
0
 public override void ProduceQueryPlan(PlanNode previous)
 {
     this.Observer.ProduceQueryPlan(new PointAtEndPlanNode(
                                        previous, this,
                                        typeof(TKey), typeof(TPayload),
                                        false, this.errorMessages, false));
 }
예제 #12
0
 public override void ProduceQueryPlan(PlanNode previous)
 {
     this.Observer.ProduceQueryPlan(new SessionWindowPlanNode(
                                        previous, this,
                                        typeof(TKey), typeof(TPayload), this.sessionTimeout, this.maximumDuration,
                                        false, this.errorMessages, false));
 }
예제 #13
0
 public override void ProduceQueryPlan(PlanNode previous)
 {
     this.Observer.ProduceQueryPlan(new ClipByConstantPlanNode(
                                        previous, this,
                                        typeof(TKey), typeof(TPayload),
                                        false, this.errorMessages));
 }
예제 #14
0
 internal ClipByConstantPlanNode(
     PlanNode previous, IQueryObject pipe,
     Type keyType, Type payloadType,
     bool isGenerated, string errorMessages)
     : base(previous, pipe, keyType, payloadType, payloadType, isGenerated, errorMessages)
 {
 }
예제 #15
0
 public override void ProduceQueryPlan(PlanNode previous)
 {
     this.Observer.ProduceQueryPlan(new WherePlanNode(
                                        previous, this,
                                        typeof(TKey), typeof(TPayload), this.predicate,
                                        false, this.errorMessages));
 }
 internal QuantizeLifetimePlanNode(
     PlanNode previous, IQueryObject pipe,
     Type keyType, Type payloadType, long width, long skip, long offset,
     bool isGenerated, string errorMessages, bool withStateManager)
     : base(previous, pipe, keyType, payloadType, payloadType, isGenerated, errorMessages)
 {
 }
예제 #17
0
 internal ExtendLifetimePlanNode(
     PlanNode previous, IQueryObject pipe,
     Type keyType, Type payloadType,
     bool isGenerated, string errorMessages, bool negative)
     : base(previous, pipe, keyType, payloadType, payloadType, isGenerated, errorMessages)
 {
     this.negative = negative;
 }
예제 #18
0
 public override void ProduceQueryPlan(PlanNode previous)
 {
     this.Observer.ProduceQueryPlan(new AlterLifetimePlanNode(
                                        previous, this,
                                        typeof(TKey), typeof(TPayload),
                                        null, Expression.Constant(this.constantDurationSelector),
                                        true));
 }
예제 #19
0
 public override void ProduceQueryPlan(PlanNode previous)
 {
     this.Observer.ProduceQueryPlan(new PartitionPlanNode(
                                        previous,
                                        this,
                                        typeof(PartitionKey <TPartitionKey>),
                                        typeof(TPayload), this.keySelector, this.partitionLag));
 }
예제 #20
0
 internal SessionWindowPlanNode(
     PlanNode previous, IQueryObject pipe,
     Type keyType, Type payloadType, long sessionTimeout, long maximumDuration,
     bool isGenerated, string errorMessages)
     : base(previous, pipe, keyType, payloadType, payloadType, isGenerated, errorMessages)
 {
     this.SessionTimeout  = sessionTimeout;
     this.MaximumDuration = maximumDuration;
 }
예제 #21
0
 internal JoinPlanNode(
     PlanNode left, PlanNode right, IBinaryObserver pipe,
     Type leftPayloadType, Type rightPayloadType, Type payloadType, Type keyType,
     JoinKind joinKind, bool isGenerated, string errorMessages, bool withStateManager)
     : base(left, right, pipe, keyType, leftPayloadType, rightPayloadType, payloadType, isGenerated, errorMessages)
 {
     this.leftPayloadType  = leftPayloadType;
     this.rightPayloadType = rightPayloadType;
     this.JoinKind         = joinKind;
 }
예제 #22
0
 protected BinaryPlanNode(
     PlanNode left, PlanNode right, IBinaryObserver pipe, Type keyType, Type leftType, Type rightType, Type payloadType, bool isGenerated, string errorMessages)
     : base(pipe, keyType, payloadType, isGenerated, errorMessages)
 {
     this.LeftPlanNode     = left;
     this.RightPlanNode    = right;
     this.pipe             = pipe;
     this.LeftPayloadType  = leftType;
     this.RightPayloadType = rightType;
 }
예제 #23
0
 internal PartitionPlanNode(
     PlanNode previous,
     IQueryObject pipe, Type outputKey, Type payloadType,
     Expression keySelector, long punctuationLag)
     : base(pipe, outputKey, payloadType, false, string.Empty)
 {
     this.Previous           = previous;
     this.GroupingExpression = keySelector;
     this.PunctuationLag     = punctuationLag;
 }
예제 #24
0
        protected override void ProduceBinaryQueryPlan(PlanNode left, PlanNode right)
        {
            var node = new JoinPlanNode(
                left, right, this,
                typeof(TLeft), typeof(TRight), typeof(TLeft), typeof(TKey), JoinKind.Clip, false, null);

            node.AddJoinExpression("key comparer", this.keyComparer);
            node.AddJoinExpression("left key comparer", this.leftComparer);
            this.Observer.ProduceQueryPlan(node);
        }
예제 #25
0
 internal SelectManyPlanNode(PlanNode previous, IQueryObject pipe,
                             Type keyType, Type inputType, Type payloadType,
                             LambdaExpression selector, bool includesKey, bool includesStartEdge,
                             bool isGenerated, string errorMessages)
     : base(previous, pipe, keyType, payloadType, inputType, isGenerated, errorMessages)
 {
     this.Selector          = selector;
     this.IncludesStartEdge = includesStartEdge;
     this.IncludesKey       = includesKey;
 }
예제 #26
0
 public override void ProduceQueryPlan(PlanNode previous)
 => Observer.ProduceQueryPlan(new UngroupPlanNode(
                                  previous,
                                  this,
                                  typeof(CompoundGroupKey <TOuterKey, TInnerKey>),
                                  typeof(TOuterKey),
                                  typeof(TInnerResult),
                                  typeof(TResult),
                                  resultSelectorExpr,
                                  false,
                                  errorMessages));
예제 #27
0
 internal QuantizeLifetimePlanNode(
     PlanNode previous, IQueryObject pipe,
     Type keyType, Type payloadType, long width, long skip, long progress, long offset,
     bool isGenerated, string errorMessages, bool withStateManager)
     : base(previous, pipe, keyType, payloadType, payloadType, isGenerated, errorMessages)
 {
     this.Width    = width;
     this.Skip     = skip;
     this.Progress = progress;
     this.Offset   = offset;
 }
예제 #28
0
 internal SprayPlanNode(PlanNode previous, IQueryObject pipe,
                        Type keyType, Type payloadType,
                        int totalBranches, bool multicast,
                        Expression spraySortOrderComparer,
                        bool isGenerated)
     : base(previous, pipe, keyType, payloadType, payloadType, isGenerated, null)
 {
     this.TotalBranches          = totalBranches;
     this.Multicast              = multicast;
     this.SpraySortOrderComparer = spraySortOrderComparer;
 }
예제 #29
0
파일: BinaryPipe.cs 프로젝트: yorek/Trill
 private void ReceiveRightQueryPlan(PlanNode right)
 {
     this.rightPlans.Enqueue(right);
     lock (this.leftPlans)
     {
         if (this.leftPlans.Count > 0)
         {
             ProduceBinaryQueryPlan(this.leftPlans.Dequeue(), this.rightPlans.Dequeue());
         }
     }
 }
예제 #30
0
        protected override void ProduceBinaryQueryPlan(PlanNode left, PlanNode right)
        {
            var node = new JoinPlanNode(
                left, right, this,
                typeof(TLeft), typeof(TRight), typeof(TLeft), typeof(PartitionKey <TPartitionKey>),
                JoinKind.FixedIntervalEquiJoin,
                false, null);

            node.AddJoinExpression("key comparer", this.keyComparer);
            this.Observer.ProduceQueryPlan(node);
        }