/// <summary>
        /// Ctor.
        /// </summary>
        /// <param name="evaluators">evaluate the sub-expression within the aggregate function (ie. sum(4*myNum))</param>
        /// <param name="prototypes">collect the aggregation state that evaluators evaluate to, act as prototypes for new aggregationsaggregation states for each group</param>
        /// <param name="reclaimGroupAged">hint to reclaim</param>
        /// <param name="reclaimGroupFrequency">hint to reclaim</param>
        /// <param name="variableService">variables</param>
        /// <param name="accessors">accessor definitions</param>
        /// <param name="accessAggregations">access aggs</param>
        /// <param name="isJoin">true for join, false for single-stream</param>
        /// <param name="optionalContextName">Name of the optional context.</param>
        /// <exception cref="ExprValidationException">Required hint value for hint ' + HintEnum.RECLAIM_GROUP_AGED + ' has not been provided</exception>
        /// <throws><seealso cref="ExprValidationException" /> when validation fails</throws>
        public AggSvcGroupByReclaimAgedFactory(ExprEvaluator[] evaluators, AggregationMethodFactory[] prototypes, HintAttribute reclaimGroupAged, HintAttribute reclaimGroupFrequency, VariableService variableService, AggregationAccessorSlotPair[] accessors, AggregationStateFactory[] accessAggregations, bool isJoin, string optionalContextName)
            : base(evaluators, prototypes)
        {
            Accessors          = accessors;
            AccessAggregations = accessAggregations;
            IsJoin             = isJoin;

            String hintValueMaxAge = HintEnum.RECLAIM_GROUP_AGED.GetHintAssignedValue(reclaimGroupAged);

            if (hintValueMaxAge == null)
            {
                throw new ExprValidationException("Required hint value for hint '" + HintEnum.RECLAIM_GROUP_AGED + "' has not been provided");
            }
            EvaluationFunctionMaxAge = GetEvaluationFunction(variableService, hintValueMaxAge, optionalContextName);

            String hintValueFrequency = HintEnum.RECLAIM_GROUP_FREQ.GetHintAssignedValue(reclaimGroupAged);

            if ((reclaimGroupFrequency == null) || (hintValueFrequency == null))
            {
                EvaluationFunctionFrequency = EvaluationFunctionMaxAge;
            }
            else
            {
                EvaluationFunctionFrequency = GetEvaluationFunction(variableService, hintValueFrequency, optionalContextName);
            }
        }
Exemplo n.º 2
0
 public AggregationServiceFactory GroupBy(
     AggregationServiceFactory nonHAFactory,
     AggregationRowFactory rowFactory,
     AggregationUseFlags useFlags,
     DataInputOutputSerdeWCollation<AggregationRow> serde,
     Type[] groupByTypes,
     AggSvcGroupByReclaimAgedEvalFuncFactory reclaimMaxAge,
     AggSvcGroupByReclaimAgedEvalFuncFactory reclaimFreq,
     TimeAbacus timeAbacus)
 {
     return nonHAFactory;
 }