/// <summary> /// Ctor. /// </summary> /// <param name="selectExprProcessor">for processing the select expression and generting the readonly output rows</param> /// <param name="groupKeyNodeExpressions">The group key node expressions.</param> /// <param name="groupKeyNodes">list of group-by expression nodes needed for building the group-by keys</param> /// <param name="optionalHavingNode">expression node representing validated HAVING clause, or null if none given.Aggregation functions in the having node must have been pointed to the AggregationService for evaluation.</param> /// <param name="isSelectRStream">true if remove stream events should be generated</param> /// <param name="isUnidirectional">true if unidirectional join</param> /// <param name="outputLimitSpec">The output limit spec.</param> /// <param name="isSorting">if set to <c>true</c> [is sorting].</param> /// <param name="isHistoricalOnly">if set to <c>true</c> [is historical only].</param> /// <param name="resultSetProcessorHelperFactory">The result set processor helper factory.</param> /// <param name="optionalOutputFirstConditionFactory">The optional output first condition factory.</param> /// <param name="enableOutputLimitOpt">if set to <c>true</c> [enable output limit opt].</param> /// <param name="numStreams">The number streams.</param> public ResultSetProcessorAggregateGroupedFactory( SelectExprProcessor selectExprProcessor, ExprNode[] groupKeyNodeExpressions, ExprEvaluator[] groupKeyNodes, ExprEvaluator optionalHavingNode, bool isSelectRStream, bool isUnidirectional, OutputLimitSpec outputLimitSpec, bool isSorting, bool isHistoricalOnly, ResultSetProcessorHelperFactory resultSetProcessorHelperFactory, OutputConditionPolledFactory optionalOutputFirstConditionFactory, bool enableOutputLimitOpt, int numStreams) { _selectExprProcessor = selectExprProcessor; GroupKeyNodeExpressions = groupKeyNodeExpressions; GroupKeyNode = groupKeyNodes.Length == 1 ? groupKeyNodes[0] : null; GroupKeyNodes = groupKeyNodes; OptionalHavingNode = optionalHavingNode; IsSorting = isSorting; IsSelectRStream = isSelectRStream; IsUnidirectional = isUnidirectional; IsHistoricalOnly = isHistoricalOnly; OutputLimitSpec = outputLimitSpec; ResultSetProcessorHelperFactory = resultSetProcessorHelperFactory; OptionalOutputFirstConditionFactory = optionalOutputFirstConditionFactory; IsEnableOutputLimitOpt = enableOutputLimitOpt; NumStreams = numStreams; }
/// <summary> /// Ctor. /// </summary> /// <param name="perLevelExpression">The per level expression.</param> /// <param name="groupKeyNodeExpressions">The group key node expressions.</param> /// <param name="groupKeyNodes">list of group-by expression nodes needed for building the group-by keysAggregation functions in the having node must have been pointed to the AggregationService for evaluation.</param> /// <param name="isSelectRStream">true if remove stream events should be generated</param> /// <param name="isUnidirectional">true if unidirectional join</param> /// <param name="outputLimitSpec">The output limit spec.</param> /// <param name="isSorting">if set to <c>true</c> [is sorting].</param> /// <param name="noDataWindowSingleStream">if set to <c>true</c> [no data window single stream].</param> /// <param name="groupByRollupDesc">The group by rollup desc.</param> /// <param name="isJoin">if set to <c>true</c> [is join].</param> /// <param name="isHistoricalOnly">if set to <c>true</c> [is historical only].</param> /// <param name="iterateUnbounded">if set to <c>true</c> [iterate unbounded].</param> /// <param name="optionalOutputFirstConditionFactory">The optional output first condition factory.</param> /// <param name="resultSetProcessorHelperFactory">The result set processor helper factory.</param> /// <param name="enableOutputLimitOpt">if set to <c>true</c> [enable output limit opt].</param> /// <param name="numStreams">The number streams.</param> public ResultSetProcessorRowPerGroupRollupFactory( GroupByRollupPerLevelExpression perLevelExpression, ExprNode[] groupKeyNodeExpressions, ExprEvaluator[] groupKeyNodes, bool isSelectRStream, bool isUnidirectional, OutputLimitSpec outputLimitSpec, bool isSorting, bool noDataWindowSingleStream, AggregationGroupByRollupDesc groupByRollupDesc, bool isJoin, bool isHistoricalOnly, bool iterateUnbounded, OutputConditionPolledFactory optionalOutputFirstConditionFactory, ResultSetProcessorHelperFactory resultSetProcessorHelperFactory, bool enableOutputLimitOpt, int numStreams) { GroupKeyNodeExpressions = groupKeyNodeExpressions; PerLevelExpression = perLevelExpression; GroupKeyNodes = groupKeyNodes; GroupKeyNode = groupKeyNodes.Length == 1 ? groupKeyNodes[0] : null; IsSorting = isSorting; IsSelectRStream = isSelectRStream; IsUnidirectional = isUnidirectional; OutputLimitSpec = outputLimitSpec; _noDataWindowSingleSnapshot = iterateUnbounded || (outputLimitSpec != null && outputLimitSpec.DisplayLimit == OutputLimitLimitType.SNAPSHOT && noDataWindowSingleStream); GroupByRollupDesc = groupByRollupDesc; IsJoin = isJoin; IsHistoricalOnly = isHistoricalOnly; OptionalOutputFirstConditionFactory = optionalOutputFirstConditionFactory; ResultSetProcessorHelperFactory = resultSetProcessorHelperFactory; IsEnableOutputLimitOpt = enableOutputLimitOpt; NumStreams = numStreams; }
/// <summary> /// Ctor. /// </summary> /// <param name="selectExprProcessor">for processing the select expression and generting the final output rows</param> /// <param name="groupKeyNodeExpressions">The group key node expressions.</param> /// <param name="groupKeyNodes">list of group-by expression nodes needed for building the group-by keys</param> /// <param name="optionalHavingNode">expression node representing validated HAVING clause, or null if none given.Aggregation functions in the having node must have been pointed to the AggregationService for evaluation.</param> /// <param name="isSelectRStream">true if remove stream events should be generated</param> /// <param name="isUnidirectional">true if unidirectional join</param> /// <param name="outputLimitSpec">The output limit spec.</param> /// <param name="isSorting">if set to <c>true</c> [is sorting].</param> /// <param name="noDataWindowSingleStream">if set to <c>true</c> [no data window single stream].</param> /// <param name="isHistoricalOnly">if set to <c>true</c> [is historical only].</param> /// <param name="iterateUnbounded">if set to <c>true</c> [iterate unbounded].</param> /// <param name="resultSetProcessorHelperFactory">The result set processor helper factory.</param> /// <param name="enableOutputLimitOpt">if set to <c>true</c> [enable output limit opt].</param> /// <param name="numStreams">The number streams.</param> /// <param name="optionalOutputFirstConditionFactory">The optional output first condition factory.</param> public ResultSetProcessorRowPerGroupFactory( SelectExprProcessor selectExprProcessor, ExprNode[] groupKeyNodeExpressions, ExprEvaluator[] groupKeyNodes, ExprEvaluator optionalHavingNode, bool isSelectRStream, bool isUnidirectional, OutputLimitSpec outputLimitSpec, bool isSorting, bool noDataWindowSingleStream, bool isHistoricalOnly, bool iterateUnbounded, ResultSetProcessorHelperFactory resultSetProcessorHelperFactory, bool enableOutputLimitOpt, int numStreams, OutputConditionPolledFactory optionalOutputFirstConditionFactory) { _groupKeyNodeExpressions = groupKeyNodeExpressions; _selectExprProcessor = selectExprProcessor; _groupKeyNodes = groupKeyNodes; _groupKeyNode = groupKeyNodes.Length == 1 ? groupKeyNodes[0] : null; _optionalHavingNode = optionalHavingNode; _isSorting = isSorting; _isSelectRStream = isSelectRStream; _isUnidirectional = isUnidirectional; _outputLimitSpec = outputLimitSpec; _noDataWindowSingleSnapshot = iterateUnbounded || (outputLimitSpec != null && outputLimitSpec.DisplayLimit == OutputLimitLimitType.SNAPSHOT && noDataWindowSingleStream); _isHistoricalOnly = isHistoricalOnly; ResultSetProcessorHelperFactory = resultSetProcessorHelperFactory; IsEnableOutputLimitOpt = enableOutputLimitOpt; NumStreams = numStreams; OptionalOutputFirstConditionFactory = optionalOutputFirstConditionFactory; }
public ResultSetProcessorGroupedOutputFirstHelper MakeRSGroupedOutputFirst( AgentInstanceContext agentInstanceContext, Type[] groupKeyTypes, OutputConditionPolledFactory optionalOutputFirstConditionFactory, AggregationGroupByRollupDesc optionalGroupByRollupDesc, int optionalRollupLevel, DataInputOutputSerde serde) { return new ResultSetProcessorGroupedOutputFirstHelperImpl(); }
public OutputConditionPolled GetOrAllocate( object mk, AgentInstanceContext agentInstanceContext, OutputConditionPolledFactory factory) { var outputStateGroup = outputState.Get(mk); if (outputStateGroup == null) { outputStateGroup = factory.MakeNew(agentInstanceContext); outputState.Put(mk, outputStateGroup); } return outputStateGroup; }
/// <summary> /// NOTE: Code-generation-invoked method, method name and parameter order matters /// </summary> /// <param name="resultSetProcessorHelperFactory">helper factory</param> /// <param name="agentInstanceContext">context</param> /// <param name="groupKeyTypes">types</param> /// <param name="groupByRollupDesc">rollup into</param> /// <param name="outputConditionPolledFactory">condition factory</param> /// <returns>helpers</returns> public static ResultSetProcessorGroupedOutputFirstHelper[] InitializeOutputFirstHelpers( ResultSetProcessorHelperFactory resultSetProcessorHelperFactory, AgentInstanceContext agentInstanceContext, Type[] groupKeyTypes, AggregationGroupByRollupDesc groupByRollupDesc, OutputConditionPolledFactory outputConditionPolledFactory) { var outputFirstHelpers = new ResultSetProcessorGroupedOutputFirstHelper[groupByRollupDesc.Levels.Length]; for (var i = 0; i < groupByRollupDesc.Levels.Length; i++) { outputFirstHelpers[i] = resultSetProcessorHelperFactory.MakeRSGroupedOutputFirst( agentInstanceContext, groupKeyTypes, outputConditionPolledFactory, groupByRollupDesc, i, null); } return outputFirstHelpers; }
public ResultSetProcessorGroupedOutputFirstHelper MakeRSGroupedOutputFirst(AgentInstanceContext agentInstanceContext, ExprEvaluator[] groupKeyNodes, OutputConditionPolledFactory optionalOutputFirstConditionFactory, AggregationGroupByRollupDesc optionalGroupByRollupDesc, int optionalRollupLevel) { return(new ResultSetProcessorGroupedOutputFirstHelperImpl()); }