Ejemplo n.º 1
0
 /// <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;
 }
Ejemplo n.º 3
0
 /// <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;
        }
Ejemplo n.º 6
0
        /// <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());
 }