public LeftAntiSemiJoinPipe(LeftAntiSemiJoinStreamable <TKey, TLeft, TRight> stream, IStreamObserver <TKey, TLeft> observer) : base(stream, observer) { this.keyComparer = stream.Properties.KeyEqualityComparer.GetEqualsExpr(); this.keyComparerEquals = this.keyComparer.Compile(); this.leftComparer = stream.LeftComparer.GetEqualsExpr(); this.leftComparerEquals = this.leftComparer.Compile(); if (stream.Left.Properties.IsConstantDuration) { this.leftEndPointHeap = new EndPointQueue(); } else { this.leftEndPointHeap = new EndPointHeap(); } if (stream.Right.Properties.IsConstantDuration) { this.rightEndPointHeap = new EndPointQueue(); } else { this.rightEndPointHeap = new EndPointHeap(); } this.pool = MemoryManager.GetMemoryPool <TKey, TLeft>(stream.Properties.IsColumnar); this.pool.Get(out this.output); this.output.Allocate(); }
public FixedIntervalEquiJoinPipe( BinaryStreamable <TKey, TLeft, TRight, TResult> stream, Expression <Func <TLeft, TRight, TResult> > selector, IStreamObserver <TKey, TResult> observer) : base(stream, observer) { this.selector = selector.Compile(); this.leftDuration = stream.Left.Properties.ConstantDurationLength.Value; this.rightDuration = stream.Right.Properties.ConstantDurationLength.Value; this.keyComparer = stream.Properties.KeyEqualityComparer.GetEqualsExpr(); this.keyComparerEquals = this.keyComparer.Compile(); if (this.leftDuration == this.rightDuration) { this.endPointHeap = new EndPointQueue(); } else { this.endPointHeap = new EndPointHeap(); } this.pool = MemoryManager.GetMemoryPool <TKey, TResult>(stream.Properties.IsColumnar); this.pool.Get(out this.output); this.output.Allocate(); }
public PartitionEntry(PartitionedLeftAntiSemiJoinPipe <TKey, TLeft, TRight, TPartitionKey> parent) { this.leftEndPointHeap = parent.leftEndPointGenerator(); this.rightEndPointHeap = parent.rightEndPointGenerator(); }
public PartitionEntry(PartitionedEquiJoinPipeSimple <TLeft, TRight, TResult, TPartitionKey> parent, TPartitionKey key) { this.endPointHeap = parent.endpointGenerator(); this.key = key; }