コード例 #1
0
        public ExprTableEvalStrategyGroupedAggSimple(
            TableAndLockProviderGrouped provider,
            ExprTableEvalStrategyFactory factory)
            : base(provider, factory)

        {
        }
コード例 #2
0
 public ExprTableEvalStrategyGroupedBase(
     TableAndLockProviderGrouped provider,
     ExprTableEvalStrategyFactory factory)
 {
     this._provider = provider;
     this._factory = factory;
 }
コード例 #3
0
        private static ExprTableAccessEvalStrategy GetTableAccessSubprop(
            ExprTableAccessNodeSubprop subprop,
            TableMetadataColumn column,
            TableAndLockProviderUngrouped ungrouped,
            TableAndLockProviderGrouped grouped)
        {
            if (column is TableMetadataColumnPlain)
            {
                var plain = (TableMetadataColumnPlain)column;
                if (ungrouped != null)
                {
                    return(new ExprTableEvalStrategyUngroupedProp(
                               ungrouped, plain.IndexPlain, subprop.OptionalPropertyEnumEvaluator));
                }
                if (subprop.GroupKeyEvaluators.Length > 1)
                {
                    return(new ExprTableEvalStrategyGroupByPropMulti(
                               grouped, plain.IndexPlain, subprop.OptionalPropertyEnumEvaluator, subprop.GroupKeyEvaluators));
                }
                return(new ExprTableEvalStrategyGroupByPropSingle(
                           grouped, plain.IndexPlain, subprop.OptionalPropertyEnumEvaluator, subprop.GroupKeyEvaluators[0]));
            }

            var aggcol = (TableMetadataColumnAggregation)column;

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

            var columnAggregation = (TableMetadataColumnAggregation)column;

            if (!columnAggregation.Factory.IsAccessAggregation)
            {
                if (subprop.GroupKeyEvaluators.Length > 1)
                {
                    return(new ExprTableEvalStrategyGroupByMethodMulti(
                               grouped, columnAggregation.MethodOffset, subprop.GroupKeyEvaluators));
                }
                return(new ExprTableEvalStrategyGroupByMethodSingle(
                           grouped, columnAggregation.MethodOffset, subprop.GroupKeyEvaluators[0]));
            }
            if (subprop.GroupKeyEvaluators.Length > 1)
            {
                return(new ExprTableEvalStrategyGroupByAccessMulti(
                           grouped, columnAggregation.AccessAccessorSlotPair, subprop.GroupKeyEvaluators));
            }
            return(new ExprTableEvalStrategyGroupByAccessSingle(
                       grouped, columnAggregation.AccessAccessorSlotPair, subprop.GroupKeyEvaluators[0]));
        }
コード例 #4
0
 public ExprTableEvalStrategyGroupByPropMulti(TableAndLockProviderGrouped provider, int propertyIndex, ExprEvaluatorEnumerationGivenEvent optionalEnumEval, ExprEvaluator[] groupExpr)
     : base(provider, propertyIndex, optionalEnumEval)
 {
     this._groupExpr = groupExpr;
 }
コード例 #5
0
 protected ExprTableEvalStrategyGroupByAccessBase(TableAndLockProviderGrouped provider, AggregationAccessorSlotPair pair)
     : base(provider)
 {
     _pair = pair;
 }
コード例 #6
0
 public ExprTableEvalStrategyGroupByKeys(TableAndLockProviderGrouped provider)
     : base(provider)
 {
 }
コード例 #7
0
 public ExprTableEvalStrategyGroupByAccessSingle(TableAndLockProviderGrouped provider, AggregationAccessorSlotPair pair, ExprEvaluator groupExpr)
     : base(provider, pair)
 {
     this._groupExpr = groupExpr;
 }
コード例 #8
0
 public ExprTableEvalStrategyGroupByMethodSingle(TableAndLockProviderGrouped provider, int index, ExprEvaluator groupExpr)
     : base(provider, index)
 {
     _groupExpr = groupExpr;
 }
コード例 #9
0
 protected ExprTableEvalStrategyGroupByBase(TableAndLockProviderGrouped provider)
 {
     _provider = provider;
 }
コード例 #10
0
 public ExprTableEvalStrategyGroupByTopLevelMulti(TableAndLockProviderGrouped provider, IDictionary <String, TableMetadataColumn> items, ExprEvaluator[] groupExpr)
     : base(provider, items)
 {
     _groupExpr = groupExpr;
 }
コード例 #11
0
 protected ExprTableEvalStrategyGroupByMethodBase(TableAndLockProviderGrouped provider, int index)
     : base(provider)
 {
     _index = index;
 }
コード例 #12
0
 protected ExprTableEvalStrategyGroupByTopLevelBase(TableAndLockProviderGrouped provider, IDictionary <String, TableMetadataColumn> items)
     : base(provider)
 {
     _items = items;
 }
コード例 #13
0
 protected ExprTableEvalStrategyGroupByPropBase(TableAndLockProviderGrouped provider, int propertyIndex, ExprEvaluatorEnumerationGivenEvent optionalEnumEval)
     : base(provider)
 {
     _propertyIndex    = propertyIndex;
     _optionalEnumEval = optionalEnumEval;
 }
コード例 #14
0
 public ExprTableEvalStrategyGroupedTopLevel(
     TableAndLockProviderGrouped provider,
     ExprTableEvalStrategyFactory factory)
     : base(provider, factory)
 {
 }