public void Join(EventBean[][] newDataPerStream, EventBean[][] oldDataPerStream) { if (InstrumentationHelper.ENABLED) { InstrumentationHelper.Get().QJoinExexStrategy(); } var joinSet = _composer.Join(newDataPerStream, oldDataPerStream, _staticExprEvaluatorContext); if (InstrumentationHelper.ENABLED) { InstrumentationHelper.Get().AJoinExecStrategy(joinSet); } _filter.Process(joinSet.First, joinSet.Second, _staticExprEvaluatorContext); if ((!joinSet.First.IsEmpty()) || (!joinSet.Second.IsEmpty())) { if (InstrumentationHelper.ENABLED) { InstrumentationHelper.Get().QJoinExecProcess(joinSet); } _indicator.Process(joinSet.First, joinSet.Second, _staticExprEvaluatorContext); if (InstrumentationHelper.ENABLED) { InstrumentationHelper.Get().AJoinExecProcess(); } } }
public void Join( EventBean[][] newDataPerStream, EventBean[][] oldDataPerStream) { var instrumentationCommon = staticExprEvaluatorContext.InstrumentationProvider; instrumentationCommon.QJoinExecStrategy(); var joinSet = composer.Join(newDataPerStream, oldDataPerStream, staticExprEvaluatorContext); instrumentationCommon.AJoinExecStrategy(joinSet); if (optionalFilter != null) { instrumentationCommon.QJoinExecFilter(); ProcessFilter(joinSet.First, joinSet.Second, staticExprEvaluatorContext); instrumentationCommon.AJoinExecFilter(joinSet.First, joinSet.Second); } if (!joinSet.First.IsEmpty() || !joinSet.Second.IsEmpty()) { instrumentationCommon.QJoinExecProcess(joinSet); indicator.Process(joinSet.First, joinSet.Second, staticExprEvaluatorContext); instrumentationCommon.AJoinExecProcess(); } }
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); }