/// <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;
 }
Example #2
0
 public JoinSetComposerDesc(
     JoinSetComposer joinSetComposer,
     ExprEvaluator postJoinFilterEvaluator)
 {
     JoinSetComposer = joinSetComposer;
     PostJoinFilterEvaluator = postJoinFilterEvaluator;
 }
Example #3
0
 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;
 }
Example #4
0
 /// <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;
 }
Example #5
0
 /// <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;
 }
Example #6
0
 /// <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;
 }
Example #7
0
 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);
        }