public AggSvcGroupAllMixedAccessWTableImpl(TableStateInstanceUngrouped tableStateInstance, TableColumnMethodPair[] methodPairs, AggregationAccessorSlotPair[] accessors, int[] targetStates, ExprNode[] accessStateExpr, AggregationAgent[] agents)
 {
     _tableStateInstance = tableStateInstance;
     _methodPairs        = methodPairs;
     _accessors          = accessors;
     _targetStates       = targetStates;
     _accessStateExpr    = accessStateExpr;
     _agents             = agents;
 }
Пример #2
0
 public TableAndLockUngrouped(ILockable ilock, TableStateInstanceUngrouped ungrouped)
 {
     Lock = ilock;
     Ungrouped = ungrouped;
 }
Пример #3
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]));
        }