Exemple #1
0
 public AggSvcGroupByWTableImpl(
     TableMetadata tableMetadata,
     TableColumnMethodPair[] methodPairs,
     AggregationAccessorSlotPair[] accessors,
     bool join,
     TableStateInstanceGroupBy tableStateInstance,
     int[] targetStates,
     ExprNode[] accessStateExpr,
     AggregationAgent[] agents)
     : base(
         tableMetadata, methodPairs, accessors, join, tableStateInstance, targetStates, accessStateExpr, agents)
 {
 }
 public AggSvcGroupByWTableRollupMultiKeyImpl(
     TableMetadata tableMetadata,
     TableColumnMethodPair[] methodPairs,
     AggregationAccessorSlotPair[] accessors,
     bool join,
     TableStateInstanceGroupBy tableStateInstance,
     int[] targetStates,
     ExprNode[] accessStateExpr,
     AggregationAgent[] agents,
     AggregationGroupByRollupDesc groupByRollupDesc)
     : base(tableMetadata, methodPairs, accessors, join, tableStateInstance, targetStates, accessStateExpr, agents)
 {
     this.groupByRollupDesc = groupByRollupDesc;
 }
Exemple #3
0
 protected AggSvcGroupByWTableBase(
     TableMetadata tableMetadata,
     TableColumnMethodPair[] methodPairs,
     AggregationAccessorSlotPair[] accessors,
     bool join,
     TableStateInstanceGroupBy tableStateInstance,
     int[] targetStates,
     ExprNode[] accessStateExpr,
     AggregationAgent[] agents)
 {
     TableMetadata      = tableMetadata;
     MethodPairs        = methodPairs;
     Accessors          = accessors;
     IsJoin             = join;
     TableStateInstance = tableStateInstance;
     TargetStates       = targetStates;
     AccessStateExpr    = accessStateExpr;
     _agents            = agents;
 }
Exemple #4
0
        private static ExprTableAccessEvalStrategy GetTableAccessSubprop(ILockable @lock, ExprTableAccessNodeSubprop subprop, TableMetadataColumn column, TableStateInstanceGroupBy grouped, TableStateInstanceUngrouped ungrouped)
        {
            if (column is TableMetadataColumnPlain)
            {
                var plain = (TableMetadataColumnPlain)column;
                if (ungrouped != null)
                {
                    return(new ExprTableEvalStrategyUngroupedProp(@lock, ungrouped.EventReference, plain.IndexPlain, subprop.OptionalPropertyEnumEvaluator));
                }
                if (subprop.GroupKeyEvaluators.Length > 1)
                {
                    return(new ExprTableEvalStrategyGroupByPropMulti(@lock, grouped.Rows, plain.IndexPlain, subprop.OptionalPropertyEnumEvaluator, subprop.GroupKeyEvaluators));
                }
                return(new ExprTableEvalStrategyGroupByPropSingle(@lock, grouped.Rows, plain.IndexPlain, subprop.OptionalPropertyEnumEvaluator, subprop.GroupKeyEvaluators[0]));
            }

            var aggcol = (TableMetadataColumnAggregation)column;

            if (ungrouped != null)
            {
                if (!aggcol.Factory.IsAccessAggregation)
                {
                    return(new ExprTableEvalStrategyUngroupedMethod(@lock, ungrouped.EventReference, aggcol.MethodOffset));
                }
                var pair = aggcol.AccessAccessorSlotPair;
                return(new ExprTableEvalStrategyUngroupedAccess(@lock, ungrouped.EventReference, pair.Slot, pair.Accessor));
            }

            var columnAggregation = (TableMetadataColumnAggregation)column;

            if (!columnAggregation.Factory.IsAccessAggregation)
            {
                if (subprop.GroupKeyEvaluators.Length > 1)
                {
                    return(new ExprTableEvalStrategyGroupByMethodMulti(@lock, grouped.Rows, columnAggregation.MethodOffset, subprop.GroupKeyEvaluators));
                }
                return(new ExprTableEvalStrategyGroupByMethodSingle(@lock, grouped.Rows, columnAggregation.MethodOffset, subprop.GroupKeyEvaluators[0]));
            }
            if (subprop.GroupKeyEvaluators.Length > 1)
            {
                return(new ExprTableEvalStrategyGroupByAccessMulti(@lock, grouped.Rows, columnAggregation.AccessAccessorSlotPair, subprop.GroupKeyEvaluators));
            }
            return(new ExprTableEvalStrategyGroupByAccessSingle(@lock, grouped.Rows, columnAggregation.AccessAccessorSlotPair, subprop.GroupKeyEvaluators[0]));
        }