public ResultSetProcessor Instantiate(OrderByProcessor orderByProcessor,
                                       AggregationService aggregationService,
                                       AgentInstanceContext agentInstanceContext)
 {
     return(new ResultSetProcessorAggregateAll(this, _selectExprProcessor, orderByProcessor, aggregationService,
                                               agentInstanceContext));
 }
Пример #2
0
        public static Pair<ResultSetProcessor, AggregationService> StartResultSetAndAggregation(
            ResultSetProcessorFactoryProvider resultSetProcessorPrototype,
            AgentInstanceContext agentInstanceContext,
            bool isSubquery,
            int? subqueryNumber)
        {
            AggregationService aggregationService = null;
            if (resultSetProcessorPrototype.AggregationServiceFactory != null) {
                aggregationService = resultSetProcessorPrototype.AggregationServiceFactory.MakeService(
                    agentInstanceContext,
                    null,
                    isSubquery,
                    subqueryNumber,
                    null);
            }

            OrderByProcessor orderByProcessor = null;
            if (resultSetProcessorPrototype.OrderByProcessorFactory != null) {
                orderByProcessor = resultSetProcessorPrototype.OrderByProcessorFactory
                    .Instantiate(agentInstanceContext);
            }

            var resultSetProcessor = resultSetProcessorPrototype.ResultSetProcessorFactory.Instantiate(
                orderByProcessor,
                aggregationService,
                agentInstanceContext);

            return new Pair<ResultSetProcessor, AggregationService>(resultSetProcessor, aggregationService);
        }
        public static ResultSetProcessor GetAssignResultSetProcessor(AgentInstanceContext agentInstanceContext, ResultSetProcessorFactoryDesc resultSetProcessorPrototype)
        {
            AggregationService aggregationService = null;

            if (resultSetProcessorPrototype.AggregationServiceFactoryDesc != null)
            {
                aggregationService = resultSetProcessorPrototype.AggregationServiceFactoryDesc.AggregationServiceFactory.MakeService(agentInstanceContext, agentInstanceContext.StatementContext.MethodResolutionService);
            }

            OrderByProcessor orderByProcessor = null;

            if (resultSetProcessorPrototype.OrderByProcessorFactory != null)
            {
                orderByProcessor = resultSetProcessorPrototype.OrderByProcessorFactory.Instantiate(
                    aggregationService, agentInstanceContext);
            }

            var processor = resultSetProcessorPrototype.ResultSetProcessorFactory.Instantiate(orderByProcessor, aggregationService, agentInstanceContext);

            // initialize aggregation expression nodes
            if (resultSetProcessorPrototype.AggregationServiceFactoryDesc != null)
            {
                foreach (var aggregation in resultSetProcessorPrototype.AggregationServiceFactoryDesc.Expressions)
                {
                    aggregation.AssignFuture(aggregationService);
                }
            }

            return(processor);
        }
Пример #4
0
        public static EventsAndSortKeysPair GetOldEventsSortKeys(
            int oldEventCount,
            EventArrayAndSortKeyArray rstreamEventSortArrayBuf,
            OrderByProcessor orderByProcessor,
            AggregationGroupByRollupDesc rollupDesc)
        {
            var oldEventsArr = new EventBean[oldEventCount];
            object[] oldEventsSortKeys = null;
            if (orderByProcessor != null) {
                oldEventsSortKeys = new object[oldEventCount];
            }

            var countEvents = 0;
            var countSortKeys = 0;
            foreach (var level in rollupDesc.Levels) {
                var events = rstreamEventSortArrayBuf.EventsPerLevel[level.LevelNumber];
                foreach (var @event in events) {
                    oldEventsArr[countEvents++] = @event;
                }

                if (orderByProcessor != null) {
                    var sortKeys = rstreamEventSortArrayBuf.SortKeyPerLevel[level.LevelNumber];
                    foreach (var sortKey in sortKeys) {
                        oldEventsSortKeys[countSortKeys++] = sortKey;
                    }
                }
            }

            return new EventsAndSortKeysPair(oldEventsArr, oldEventsSortKeys);
        }
 public ResultSetProcessor Instantiate(OrderByProcessor orderByProcessor, AggregationService aggregationService, AgentInstanceContext agentInstanceContext)
 {
     if (_noDataWindowSingleSnapshot && !IsHistoricalOnly)
     {
         return(new ResultSetProcessorRowPerGroupRollupUnbound(this, orderByProcessor, aggregationService, agentInstanceContext));
     }
     return(new ResultSetProcessorRowPerGroupRollup(this, orderByProcessor, aggregationService, agentInstanceContext));
 }
Пример #6
0
 public ResultSetProcessorAggregateAll(ResultSetProcessorAggregateAllFactory prototype, SelectExprProcessor selectExprProcessor, OrderByProcessor orderByProcessor, AggregationService aggregationService, ExprEvaluatorContext exprEvaluatorContext)
 {
     _prototype             = prototype;
     _selectExprProcessor   = selectExprProcessor;
     _orderByProcessor      = orderByProcessor;
     _aggregationService    = aggregationService;
     _exprEvaluatorContext  = exprEvaluatorContext;
     _outputLastUnordHelper = prototype.IsOutputLast ? new ResultSetProcessorAggregateAllOutputLastHelper(this) : null;
     _outputAllUnordHelper  = prototype.IsOutputAll ? new ResultSetProcessorAggregateAllOutputAllHelper(this) : null;
 }
 public ResultSetProcessorAggregateAll(
     ResultSetProcessorAggregateAllFactory prototype,
     SelectExprProcessor selectExprProcessor,
     OrderByProcessor orderByProcessor,
     AggregationService aggregationService,
     AgentInstanceContext agentInstanceContext)
 {
     _prototype             = prototype;
     _selectExprProcessor   = selectExprProcessor;
     _orderByProcessor      = orderByProcessor;
     _aggregationService    = aggregationService;
     _exprEvaluatorContext  = agentInstanceContext;
     _outputLastUnordHelper = prototype.IsEnableOutputLimitOpt && prototype.IsOutputLast ? prototype.ResultSetProcessorHelperFactory.MakeRSAggregateAllOutputLast(this, agentInstanceContext) : null;
     _outputAllUnordHelper  = prototype.IsEnableOutputLimitOpt && prototype.IsOutputAll ? prototype.ResultSetProcessorHelperFactory.MakeRSAggregateAllOutputAll(this, agentInstanceContext) : null;
 }
 public ResultSetProcessorRowForAll(ResultSetProcessorRowForAllFactory prototype, SelectExprProcessor selectExprProcessor, OrderByProcessor orderByProcessor, AggregationService aggregationService, ExprEvaluatorContext exprEvaluatorContext)
 {
     this.Prototype            = prototype;
     _selectExprProcessor      = selectExprProcessor;
     _orderByProcessor         = orderByProcessor;
     this.AggregationService   = aggregationService;
     this.ExprEvaluatorContext = exprEvaluatorContext;
     if (prototype.IsOutputLast)
     {
         _outputLastHelper = new ResultSetProcessorRowForAllOutputLastHelper(this);
     }
     else if (prototype.IsOutputAll)
     {
         _outputAllHelper = new ResultSetProcessorRowForAllOutputAllHelper(this);
     }
 }
Пример #9
0
 public ResultSetProcessorSimple(
     ResultSetProcessorSimpleFactory prototype,
     SelectExprProcessor selectExprProcessor,
     OrderByProcessor orderByProcessor,
     ExprEvaluatorContext exprEvaluatorContext)
 {
     Prototype            = prototype;
     _selectExprProcessor = selectExprProcessor;
     _orderByProcessor    = orderByProcessor;
     ExprEvaluatorContext = exprEvaluatorContext;
     if (prototype.IsOutputLast)
     {
         _outputLastHelper = new ResultSetProcessorSimpleOutputLastHelper(this);
     }
     else if (prototype.IsOutputAll)
     {
         _outputAllHelper = new ResultSetProcessorSimpleOutputAllHelper(this);
     }
 }
Пример #10
0
        public void SetUp()
        {
            var selectExprEventTypeRegistry = new SelectExprEventTypeRegistry("abc", new StatementEventTypeRefImpl());
            var statementContext            = SupportStatementContextFactory.MakeContext();

            var factory = new SelectExprProcessorHelper(
                Collections.GetEmptyList <int>(), SupportSelectExprFactory.MakeNoAggregateSelectList(),
                Collections.GetEmptyList <SelectExprStreamDesc>(), null, null, false,
                new SupportStreamTypeSvc1Stream(), SupportEventAdapterService.Service, null,
                selectExprEventTypeRegistry, statementContext.EngineImportService, 1, "stmtname", null,
                new Configuration(), null, new TableServiceImpl(), null);

            _selectExprProcessor = factory.Evaluator;
            _orderByProcessor    = null;

            var prototype = new ResultSetProcessorSimpleFactory(_selectExprProcessor, null, true, null, false, null, 1);

            _outputProcessorAll = (ResultSetProcessorSimple)prototype.Instantiate(null, null, null);
        }
        public static Pair <ResultSetProcessor, AggregationService> StartResultSetAndAggregation(ResultSetProcessorFactoryDesc resultSetProcessorPrototype, AgentInstanceContext agentInstanceContext)
        {
            AggregationService aggregationService = null;

            if (resultSetProcessorPrototype.AggregationServiceFactoryDesc != null)
            {
                aggregationService = resultSetProcessorPrototype.AggregationServiceFactoryDesc.AggregationServiceFactory.MakeService(agentInstanceContext, agentInstanceContext.StatementContext.MethodResolutionService);
            }

            OrderByProcessor orderByProcessor = null;

            if (resultSetProcessorPrototype.OrderByProcessorFactory != null)
            {
                orderByProcessor = resultSetProcessorPrototype.OrderByProcessorFactory.Instantiate(aggregationService, agentInstanceContext);
            }

            ResultSetProcessor resultSetProcessor = resultSetProcessorPrototype.ResultSetProcessorFactory.Instantiate(orderByProcessor, aggregationService, agentInstanceContext);

            return(new Pair <ResultSetProcessor, AggregationService>(resultSetProcessor, aggregationService));
        }
Пример #12
0
 public ResultSetProcessorRowForAll(
     ResultSetProcessorRowForAllFactory prototype,
     SelectExprProcessor selectExprProcessor,
     OrderByProcessor orderByProcessor,
     AggregationService aggregationService,
     AgentInstanceContext agentInstanceContext)
 {
     _prototype            = prototype;
     _selectExprProcessor  = selectExprProcessor;
     _orderByProcessor     = orderByProcessor;
     _aggregationService   = aggregationService;
     _exprEvaluatorContext = agentInstanceContext;
     if (prototype.IsOutputLast)
     {
         _outputLastHelper = prototype.ResultSetProcessorHelperFactory.MakeRSRowForAllOutputLast(this, prototype, agentInstanceContext);
     }
     else if (prototype.IsOutputAll)
     {
         _outputAllHelper = prototype.ResultSetProcessorHelperFactory.MakeRSRowForAllOutputAll(this, prototype, agentInstanceContext);
     }
 }
Пример #13
0
        public static Pair <ResultSetProcessor, AggregationService> StartResultSetAndAggregation(ResultSetProcessorFactoryDesc resultSetProcessorPrototype, AgentInstanceContext agentInstanceContext, bool isSubquery, int?subqueryNumber)
        {
            AggregationService aggregationService = null;

            if (resultSetProcessorPrototype.AggregationServiceFactoryDesc != null)
            {
                aggregationService =
                    resultSetProcessorPrototype.AggregationServiceFactoryDesc.AggregationServiceFactory.MakeService(
                        agentInstanceContext, agentInstanceContext.StatementContext.EngineImportService, isSubquery, subqueryNumber);
            }

            OrderByProcessor orderByProcessor = null;

            if (resultSetProcessorPrototype.OrderByProcessorFactory != null)
            {
                orderByProcessor = resultSetProcessorPrototype.OrderByProcessorFactory.Instantiate(aggregationService, agentInstanceContext);
            }

            ResultSetProcessor resultSetProcessor = resultSetProcessorPrototype.ResultSetProcessorFactory.Instantiate(orderByProcessor, aggregationService, agentInstanceContext);

            return(new Pair <ResultSetProcessor, AggregationService>(resultSetProcessor, aggregationService));
        }
Пример #14
0
 public ResultSetProcessorSimple(
     ResultSetProcessorSimpleFactory prototype,
     SelectExprProcessor selectExprProcessor,
     OrderByProcessor orderByProcessor,
     AgentInstanceContext agentInstanceContext)
 {
     Prototype            = prototype;
     _selectExprProcessor = selectExprProcessor;
     _orderByProcessor    = orderByProcessor;
     ExprEvaluatorContext = agentInstanceContext;
     if (prototype.IsOutputLast)
     {
         // output-last always uses this mechanism
         _outputLastHelper = prototype.ResultSetProcessorHelperFactory
                             .MakeRSSimpleOutputLast(prototype, this, agentInstanceContext);
     }
     else if (prototype.IsOutputAll && prototype.IsEnableOutputLimitOpt)
     {
         _outputAllHelper = prototype.ResultSetProcessorHelperFactory
                            .MakeRSSimpleOutputAll(prototype, this, agentInstanceContext);
     }
 }
        public static ResultSetProcessor GetAssignResultSetProcessor(
            AgentInstanceContext agentInstanceContext,
            ResultSetProcessorFactoryDesc resultSetProcessorPrototype,
            bool isSubquery,
            int? subqueryNumber,
            bool isFireAndForget)
        {
            AggregationService aggregationService = null;
            if (resultSetProcessorPrototype.AggregationServiceFactoryDesc != null)
            {
                aggregationService =
                    resultSetProcessorPrototype.AggregationServiceFactoryDesc.AggregationServiceFactory.MakeService(
                        agentInstanceContext, agentInstanceContext.StatementContext.EngineImportService, isSubquery,
                        subqueryNumber);
            }

            OrderByProcessor orderByProcessor = null;
            if (resultSetProcessorPrototype.OrderByProcessorFactory != null)
            {
                orderByProcessor = resultSetProcessorPrototype.OrderByProcessorFactory.Instantiate(
                    aggregationService, agentInstanceContext);
            }

            var processor = resultSetProcessorPrototype.ResultSetProcessorFactory.Instantiate(
                    orderByProcessor, aggregationService, agentInstanceContext);

            // initialize aggregation expression nodes
            if (resultSetProcessorPrototype.AggregationServiceFactoryDesc != null)
            {
                foreach (var aggregation in resultSetProcessorPrototype.AggregationServiceFactoryDesc.Expressions)
                {
                    aggregation.AssignFuture(aggregationService);
                }
            }

            return processor;
        }
Пример #16
0
        internal static void PopulateSelectJoinEventsNoHavingWithOrderBy(SelectExprProcessor exprProcessor, OrderByProcessor orderByProcessor, ICollection <MultiKey <EventBean> > events, bool isNewData, bool isSynthesize, ICollection <EventBean> result, ICollection <Object> optSortKeys, ExprEvaluatorContext exprEvaluatorContext)
        {
            var length = (events != null) ? events.Count : 0;

            if (length == 0)
            {
                return;
            }

            foreach (var key in events)
            {
                var eventsPerStream = key.Array;
                var resultEvent     = exprProcessor.Process(eventsPerStream, isNewData, isSynthesize, exprEvaluatorContext);
                if (resultEvent != null)
                {
                    result.Add(resultEvent);
                    optSortKeys.Add(orderByProcessor.GetSortKey(eventsPerStream, isNewData, exprEvaluatorContext));
                }
            }
        }
Пример #17
0
        internal static void PopulateSelectJoinEventsHavingWithOrderBy(SelectExprProcessor exprProcessor, OrderByProcessor orderByProcessor, ICollection <MultiKey <EventBean> > events, ExprEvaluator havingNode, bool isNewData, bool isSynthesize, ICollection <EventBean> result, ICollection <Object> sortKeys, ExprEvaluatorContext exprEvaluatorContext)
        {
            if (events == null)
            {
                return;
            }

            foreach (var key in events)
            {
                var eventsPerStream = key.Array;
                var evaluateParams  = new EvaluateParams(eventsPerStream, isNewData, exprEvaluatorContext);

                if (InstrumentationHelper.ENABLED)
                {
                    InstrumentationHelper.Get().QHavingClauseJoin(eventsPerStream);
                }
                var passesHaving = havingNode.Evaluate(evaluateParams);
                if (InstrumentationHelper.ENABLED)
                {
                    InstrumentationHelper.Get().AHavingClauseJoin(passesHaving.AsBoxedBoolean());
                }
                if ((passesHaving == null) || (false.Equals(passesHaving)))
                {
                    continue;
                }

                var resultEvent = exprProcessor.Process(eventsPerStream, isNewData, isSynthesize, exprEvaluatorContext);
                if (resultEvent != null)
                {
                    result.Add(resultEvent);
                    sortKeys.Add(orderByProcessor.GetSortKey(eventsPerStream, isNewData, exprEvaluatorContext));
                }
            }
        }
Пример #18
0
        internal static void PopulateSelectEventsNoHavingWithOrderBy(SelectExprProcessor exprProcessor, OrderByProcessor orderByProcessor, EventBean[] events, bool isNewData, bool isSynthesize, ICollection <EventBean> result, ICollection <Object> sortKeys, ExprEvaluatorContext exprEvaluatorContext)
        {
            if (events == null)
            {
                return;
            }

            var eventsPerStream = new EventBean[1];

            foreach (var theEvent in events)
            {
                eventsPerStream[0] = theEvent;

                var resultEvent = exprProcessor.Process(eventsPerStream, isNewData, isSynthesize, exprEvaluatorContext);
                if (resultEvent != null)
                {
                    result.Add(resultEvent);
                    sortKeys.Add(orderByProcessor.GetSortKey(eventsPerStream, isNewData, exprEvaluatorContext));
                }
            }
        }
Пример #19
0
        /// <summary>
        /// Applies the select-clause to the given events returning the selected events. The number of events stays the
        /// same, i.e. this method does not filter e just transforms the result set. <para/>Also applies a having clause.
        /// </summary>
        /// <param name="exprProcessor">processes each input event and returns output event</param>
        /// <param name="orderByProcessor">for sorting output events according to the order-by clause</param>
        /// <param name="events">input events</param>
        /// <param name="havingNode">supplies the having-clause expression</param>
        /// <param name="isNewData">indicates whether we are dealing with new data (istream) or old data (rstream)</param>
        /// <param name="isSynthesize">set to true to indicate that synthetic events are required for an iterator result set</param>
        /// <param name="exprEvaluatorContext">context for expression evalauation</param>
        /// <returns>output events, one for each input event</returns>
        internal static EventBean[] GetSelectJoinEventsHavingWithOrderBy(SelectExprProcessor exprProcessor, OrderByProcessor orderByProcessor, ICollection <MultiKey <EventBean> > events, ExprEvaluator havingNode, bool isNewData, bool isSynthesize, ExprEvaluatorContext exprEvaluatorContext)
        {
            if ((events == null) || (events.IsEmpty()))
            {
                return(null);
            }

            ArrayDeque <EventBean>   result          = null;
            ArrayDeque <EventBean[]> eventGenerators = null;

            foreach (var key in events)
            {
                var eventsPerStream = key.Array;

                if (InstrumentationHelper.ENABLED)
                {
                    InstrumentationHelper.Get().QHavingClauseJoin(eventsPerStream);
                }
                var evaluateParams = new EvaluateParams(eventsPerStream, isNewData, exprEvaluatorContext);
                var passesHaving   = havingNode.Evaluate(evaluateParams);
                if (InstrumentationHelper.ENABLED)
                {
                    InstrumentationHelper.Get().AHavingClauseJoin(passesHaving.AsBoxedBoolean());
                }
                if ((passesHaving == null) || (false.Equals(passesHaving)))
                {
                    continue;
                }

                var resultEvent = exprProcessor.Process(eventsPerStream, isNewData, isSynthesize, exprEvaluatorContext);
                if (resultEvent != null)
                {
                    if (result == null)
                    {
                        result          = new ArrayDeque <EventBean>(events.Count);
                        eventGenerators = new ArrayDeque <EventBean[]>(events.Count);
                    }
                    result.Add(resultEvent);
                    eventGenerators.Add(eventsPerStream);
                }
            }

            if (result != null)
            {
                return(orderByProcessor.Sort(result.ToArray(), eventGenerators.ToArray(), isNewData, exprEvaluatorContext));
            }
            return(null);
        }
Пример #20
0
        /// <summary>
        /// Applies the select-clause to the given events returning the selected events. The number of events stays the
        /// same, i.e. this method does not filter e just transforms the result set.
        /// </summary>
        /// <param name="exprProcessor">processes each input event and returns output event</param>
        /// <param name="orderByProcessor">for sorting output events according to the order-by clause</param>
        /// <param name="events">input events</param>
        /// <param name="isNewData">indicates whether we are dealing with new data (istream) or old data (rstream)</param>
        /// <param name="isSynthesize">set to true to indicate that synthetic events are required for an iterator result set</param>
        /// <param name="exprEvaluatorContext">context for expression evalauation</param>
        /// <returns>output events, one for each input event</returns>
        internal static EventBean[] GetSelectJoinEventsNoHavingWithOrderBy(SelectExprProcessor exprProcessor, OrderByProcessor orderByProcessor, ICollection <MultiKey <EventBean> > events, bool isNewData, bool isSynthesize, ExprEvaluatorContext exprEvaluatorContext)
        {
            if ((events == null) || (events.IsEmpty()))
            {
                return(null);
            }

            var result          = new EventBean[events.Count];
            var eventGenerators = new EventBean[events.Count][];

            var count = 0;

            foreach (var key in events)
            {
                var eventsPerStream = key.Array;
                result[count]          = exprProcessor.Process(eventsPerStream, isNewData, isSynthesize, exprEvaluatorContext);
                eventGenerators[count] = eventsPerStream;
                count++;
            }

            return(orderByProcessor.Sort(result, eventGenerators, isNewData, exprEvaluatorContext));
        }
Пример #21
0
        /// <summary>
        /// Applies the select-clause to the given events returning the selected events. The number of events stays
        /// the same, i.e. this method does not filter e just transforms the result set.
        /// <para/>
        /// Also applies a having clause.
        /// </summary>
        /// <param name="exprProcessor">processes each input event and returns output event</param>
        /// <param name="orderByProcessor">for sorting output events according to the order-by clause</param>
        /// <param name="events">input events</param>
        /// <param name="havingNode">supplies the having-clause expression</param>
        /// <param name="isNewData">indicates whether we are dealing with new data (istream) or old data (rstream)</param>
        /// <param name="isSynthesize">set to true to indicate that synthetic events are required for an iterator result set</param>
        /// <param name="exprEvaluatorContext">context for expression evalauation</param>
        /// <returns>output events, one for each input event</returns>
        internal static EventBean[] GetSelectEventsHavingWithOrderBy(SelectExprProcessor exprProcessor, OrderByProcessor orderByProcessor, EventBean[] events, ExprEvaluator havingNode, bool isNewData, bool isSynthesize, ExprEvaluatorContext exprEvaluatorContext)
        {
            if (events == null)
            {
                return(null);
            }

            ArrayDeque <EventBean>   result          = null;
            ArrayDeque <EventBean[]> eventGenerators = null;

            var eventsPerStream = new EventBean[1];
            var evaluateParams  = new EvaluateParams(eventsPerStream, isNewData, exprEvaluatorContext);

            foreach (var theEvent in events)
            {
                eventsPerStream[0] = theEvent;

                if (InstrumentationHelper.ENABLED)
                {
                    InstrumentationHelper.Get().QHavingClauseNonJoin(theEvent);
                }
                var passesHaving = havingNode.Evaluate(evaluateParams);
                if (InstrumentationHelper.ENABLED)
                {
                    InstrumentationHelper.Get().AHavingClauseNonJoin(passesHaving.AsBoxedBoolean());
                }
                if ((passesHaving == null) || (false.Equals(passesHaving)))
                {
                    continue;
                }

                var generated = exprProcessor.Process(eventsPerStream, isNewData, isSynthesize, exprEvaluatorContext);
                if (generated != null)
                {
                    if (result == null)
                    {
                        result          = new ArrayDeque <EventBean>(events.Length);
                        eventGenerators = new ArrayDeque <EventBean[]>(events.Length);
                    }
                    result.Add(generated);
                    eventGenerators.Add(new EventBean[] { theEvent });
                }
            }

            if (result != null)
            {
                return(orderByProcessor.Sort(result.ToArray(), eventGenerators.ToArray(), isNewData, exprEvaluatorContext));
            }
            return(null);
        }
Пример #22
0
        /// <summary>
        /// Applies the select-clause to the given events returning the selected events. The number of events stays
        /// the same, i.e. this method does not filter e just transforms the result set.
        /// </summary>
        /// <param name="exprProcessor">processes each input event and returns output event</param>
        /// <param name="orderByProcessor">orders the outgoing events according to the order-by clause</param>
        /// <param name="events">input events</param>
        /// <param name="isNewData">indicates whether we are dealing with new data (istream) or old data (rstream)</param>
        /// <param name="isSynthesize">set to true to indicate that synthetic events are required for an iterator result set</param>
        /// <param name="exprEvaluatorContext">context for expression evalauation</param>
        /// <returns>output events, one for each input event</returns>
        internal static EventBean[] GetSelectEventsNoHavingWithOrderBy(SelectExprProcessor exprProcessor, OrderByProcessor orderByProcessor, EventBean[] events, bool isNewData, bool isSynthesize, ExprEvaluatorContext exprEvaluatorContext)
        {
            if (events == null)
            {
                return(null);
            }

            var result          = new EventBean[events.Length];
            var eventGenerators = new EventBean[events.Length][];

            var eventsPerStream = new EventBean[1];

            for (var i = 0; i < events.Length; i++)
            {
                eventsPerStream[0] = events[i];
                result[i]          = exprProcessor.Process(eventsPerStream, isNewData, isSynthesize, exprEvaluatorContext);
                eventGenerators[i] = new EventBean[] { events[i] };
            }

            return(orderByProcessor.Sort(result, eventGenerators, isNewData, exprEvaluatorContext));
        }
 public ResultSetProcessorRowPerGroupRollupUnbound(ResultSetProcessorRowPerGroupRollupFactory prototype, OrderByProcessor orderByProcessor, AggregationService aggregationService, AgentInstanceContext agentInstanceContext)
     : base(prototype, orderByProcessor, aggregationService, agentInstanceContext)
 {
     _unboundHelper = prototype.ResultSetProcessorHelperFactory.MakeRSRowPerGroupRollupSnapshotUnbound(agentInstanceContext, prototype);
 }
Пример #24
0
 public ResultSetProcessorRowPerGroupUnbound(ResultSetProcessorRowPerGroupFactory prototype, SelectExprProcessor selectExprProcessor, OrderByProcessor orderByProcessor, AggregationService aggregationService, AgentInstanceContext agentInstanceContext)
     : base(prototype, selectExprProcessor, orderByProcessor, aggregationService, agentInstanceContext)
 {
     _groupReps = prototype.ResultSetProcessorHelperFactory.MakeRSRowPerGroupUnboundGroupRep(agentInstanceContext, prototype);
     aggregationService.SetRemovedCallback(_groupReps);
 }
 public ResultSetProcessorRowPerGroupUnbound(ResultSetProcessorRowPerGroupFactory prototype, SelectExprProcessor selectExprProcessor, OrderByProcessor orderByProcessor, AggregationService aggregationService, AgentInstanceContext agentInstanceContext)
     : base(prototype, selectExprProcessor, orderByProcessor, aggregationService, agentInstanceContext)
 {
     aggregationService.SetRemovedCallback(this);
 }
 public ResultSetProcessorRowPerGroupRollupUnbound(ResultSetProcessorRowPerGroupRollupFactory prototype, OrderByProcessor orderByProcessor, AggregationService aggregationService, AgentInstanceContext agentInstanceContext)
     : base(prototype, orderByProcessor, aggregationService, agentInstanceContext)
 {
 }