// state

        protected abstract object ComputeGroupKey(
            AggregationLocalGroupByLevel level,
            object groupKey,
            ExprEvaluator[] partitionEval,
            EventBean[] eventsPerStream,
            bool newData,
            ExprEvaluatorContext exprEvaluatorContext);
        protected static void AggregateIntoLeave(AggregationLocalGroupByLevel level, AggregationMethod[] methods, AggregationState[] states, EventBean[] eventsPerStream, ExprEvaluatorContext exprEvaluatorContext)
        {
            var evaluateParams = new EvaluateParams(eventsPerStream, false, exprEvaluatorContext);

            for (var i = 0; i < level.MethodEvaluators.Length; i++)
            {
                if (InstrumentationHelper.ENABLED)
                {
                    InstrumentationHelper.Get().QAggNoAccessEnterLeave(false, i, methods[i], level.MethodFactories[i].AggregationExpression);
                }
                var value = level.MethodEvaluators[i].Evaluate(evaluateParams);
                methods[i].Leave(value);
                if (InstrumentationHelper.ENABLED)
                {
                    InstrumentationHelper.Get().AAggNoAccessEnterLeave(false, i, methods[i]);
                }
            }
            for (var i = 0; i < states.Length; i++)
            {
                if (InstrumentationHelper.ENABLED)
                {
                    InstrumentationHelper.Get().QAggAccessEnterLeave(false, i, states[i], level.StateFactories[i].AggregationExpression);
                }
                states[i].ApplyLeave(eventsPerStream, exprEvaluatorContext);
                if (InstrumentationHelper.ENABLED)
                {
                    InstrumentationHelper.Get().AAggAccessEnterLeave(false, i, states[i]);
                }
            }
        }
 protected override object ComputeGroupKey(AggregationLocalGroupByLevel level, object groupKey, ExprEvaluator[] partitionEval, EventBean[] eventsPerStream, bool newData, ExprEvaluatorContext exprEvaluatorContext)
 {
     if (level.IsDefaultLevel)
     {
         return(groupKey);
     }
     return(AggSvcGroupAllLocalGroupBy.ComputeGroupKey(partitionEval, eventsPerStream, true, exprEvaluatorContext));
 }
 public AggregationServiceFactory GroupLocalGroupBy(
     AggregationServiceFactory nonHAFactory,
     AggregationUseFlags useFlags,
     bool hasGroupBy,
     AggregationLocalGroupByLevel optionalTop,
     AggregationLocalGroupByLevel[] levels,
     AggregationLocalGroupByColumn[] columns)
 {
     return nonHAFactory;
 }
示例#5
0
 public AggregationLocalGroupByPlan(
     int numMethods,
     int numAccess,
     AggregationLocalGroupByColumn[] columns,
     AggregationLocalGroupByLevel optionalLevelTop,
     AggregationLocalGroupByLevel[] allLevels)
 {
     NumMethods = numMethods;
     NumAccess = numAccess;
     Columns = columns;
     OptionalLevelTop = optionalLevelTop;
     AllLevels = allLevels;
 }
 protected override object ComputeGroupKey(AggregationLocalGroupByLevel level, object groupKey, ExprEvaluator[] partitionEval, EventBean[] eventsPerStream, bool newData, ExprEvaluatorContext exprEvaluatorContext)
 {
     return(AggSvcGroupLocalGroupByBase.ComputeGroupKey(partitionEval, eventsPerStream, newData, exprEvaluatorContext));
 }