/// <summary> /// Ctor. /// </summary> /// <param name="composer">determines join tuple set</param> /// <param name="filter">for filtering among tuples</param> /// <param name="indicator">for presenting the INFO to a view</param> /// <param name="staticExprEvaluatorContext">expression evaluation context for static evaluation (not for runtime eval)</param> public JoinExecutionStrategyImpl(JoinSetComposer composer, JoinSetProcessor filter, JoinSetProcessor indicator, ExprEvaluatorContext staticExprEvaluatorContext) { _composer = composer; _filter = filter; _indicator = indicator; _staticExprEvaluatorContext = staticExprEvaluatorContext; }
public JoinSetComposerDesc( JoinSetComposer joinSetComposer, ExprEvaluator postJoinFilterEvaluator) { JoinSetComposer = joinSetComposer; PostJoinFilterEvaluator = postJoinFilterEvaluator; }
public StatementAgentInstanceFactorySelectResult( Viewable finalView, AgentInstanceStopCallback stopCallback, AgentInstanceContext agentInstanceContext, AggregationService optionalAggegationService, IDictionary<int, SubSelectFactoryResult> subselectStrategies, PriorEvalStrategy[] priorStrategies, PreviousGetterStrategy[] previousGetterStrategies, RowRecogPreviousStrategy regexExprPreviousEvalStrategy, IDictionary<int, ExprTableEvalStrategy> tableAccessStrategies, IList<StatementAgentInstancePreload> preloadList, EvalRootState[] patternRoots, JoinSetComposer joinSetComposer, Viewable[] topViews, Viewable[] eventStreamViewables, ViewableActivationResult[] viewableActivationResults) : base( finalView, stopCallback, agentInstanceContext, optionalAggegationService, subselectStrategies, priorStrategies, previousGetterStrategies, regexExprPreviousEvalStrategy, tableAccessStrategies, preloadList) { TopViews = topViews; PatternRoots = patternRoots; JoinSetComposer = joinSetComposer; EventStreamViewables = eventStreamViewables; ViewableActivationResults = viewableActivationResults; }
/// <summary> /// Ctor. /// </summary> /// <param name="numStreams">number of streams</param> /// <param name="joinSetComposer">the composer holding stream indexes</param> public JoinPreloadMethodImpl( int numStreams, JoinSetComposer joinSetComposer) { this.numStreams = numStreams; bufferViews = new BufferView[numStreams]; this.joinSetComposer = joinSetComposer; }
/// <summary> /// Ctor. /// </summary> /// <param name="composer">determines join tuple set</param> /// <param name="optionalFilter">for filtering among tuples</param> /// <param name="indicator">for presenting the info to a view</param> /// <param name="staticExprEvaluatorContext">expression evaluation context for static evaluation (not for runtime eval)</param> public JoinExecutionStrategyImpl( JoinSetComposer composer, ExprEvaluator optionalFilter, JoinSetProcessor indicator, ExprEvaluatorContext staticExprEvaluatorContext) { this.composer = composer; this.optionalFilter = optionalFilter; this.indicator = indicator; this.staticExprEvaluatorContext = staticExprEvaluatorContext; }
/// <summary>Ctor. </summary> /// <param name="numStreams">number of streams</param> /// <param name="joinSetComposer">the composer holding stream indexes</param> public JoinPreloadMethodImpl(int numStreams, JoinSetComposer joinSetComposer) { _numStreams = numStreams; _bufferViews = new BufferView[numStreams]; _joinSetComposer = joinSetComposer; }
public StatementAgentInstancePostLoadIndexVisiting(JoinSetComposer joinSetComposer) { _joinSetComposer = joinSetComposer; }
public EPPreparedQueryResult Execute( FAFQueryMethodSelect select, ContextPartitionSelector[] contextPartitionSelectors, FAFQueryMethodAssignerSetter assignerSetter, ContextManagementService contextManagementService) { int numStreams = select.Processors.Length; ICollection<EventBean>[] snapshots = new ICollection<EventBean>[numStreams]; AgentInstanceContext agentInstanceContext = null; Viewable[] viewablePerStream = new Viewable[numStreams]; for (int i = 0; i < numStreams; i++) { FireAndForgetProcessor processor = select.Processors[i]; FireAndForgetInstance processorInstance = processor.ProcessorInstanceNoContext; snapshots[i] = Snapshot( select.ConsumerFilters[i], processorInstance, select.QueryGraph, select.Annotations); agentInstanceContext = processorInstance.AgentInstanceContext; viewablePerStream[i] = processorInstance.TailViewInstance; } // get RSP ResultSetProcessor resultSetProcessor = ProcessorWithAssign( select.ResultSetProcessorFactoryProvider, agentInstanceContext, assignerSetter, select.TableAccesses, select.Subselects); // determine join JoinSetComposerDesc joinSetComposerDesc = select.JoinSetComposerPrototype.Create( viewablePerStream, true, agentInstanceContext, false); JoinSetComposer joinComposer = joinSetComposerDesc.JoinSetComposer; EventBean[][] oldDataPerStream = new EventBean[numStreams][]; EventBean[][] newDataPerStream = new EventBean[numStreams][]; for (int i = 0; i < numStreams; i++) { newDataPerStream[i] = snapshots[i].ToArray(); } UniformPair<ISet<MultiKeyArrayOfKeys<EventBean>>> result = joinComposer.Join( newDataPerStream, oldDataPerStream, agentInstanceContext); if (joinSetComposerDesc.PostJoinFilterEvaluator != null) { JoinSetComposerUtil.Filter( joinSetComposerDesc.PostJoinFilterEvaluator, result.First, true, agentInstanceContext); } UniformPair<EventBean[]> results = resultSetProcessor.ProcessJoinResult(result.First, null, true); EventBean[] distinct = EventBeanUtility.GetDistinctByProp(results.First, select.DistinctKeyGetter); return new EPPreparedQueryResult(resultSetProcessor.ResultEventType, distinct); }