public bool TryAdd(CalculateProvider provider) { var applyParameters = FindApplyParameters(provider); if (applyParameters.Count == 0) { return(false); } if (applyParameters.Count > 1) { ApplyProviderCorrectorRewriter.ThrowInvalidOperationException(); } var applyParameter = applyParameters[0]; if (owner.State.SelfConvertibleApplyProviders[applyParameter]) { return(false); } var newPair = new Pair <CalculateProvider, ColumnCollection>(provider, provider.Header.Columns); if (owner.State.CalculateProviders.ContainsKey(applyParameter)) { owner.State.CalculateProviders[applyParameter].Add(newPair); } else { owner.State.CalculateProviders.Add(applyParameter, new List <Pair <CalculateProvider, ColumnCollection> > { newPair }); } return(true); }
public void ValidateNewColumnIndexes <TDictKey, TPairKey>( Dictionary <TDictKey, List <Pair <TPairKey, ColumnCollection> > > currentState, ICollection <Column> mappedColumns, string description) { foreach (var providerPair in currentState) { foreach (var predicatePair in providerPair.Value) { if (!CheckPresenceOfOldColumns(predicatePair.Second, mappedColumns)) { ApplyProviderCorrectorRewriter.ThrowInvalidOperationException(description); } } } }
// Constructors public CorrectorState(ApplyProviderCorrectorRewriter owner) { this.owner = owner; Predicates = new Dictionary <ApplyParameter, List <Pair <Expression <Func <Tuple, bool> >, ColumnCollection> > >(); CalculateProviders = new Dictionary <ApplyParameter, List <Pair <CalculateProvider, ColumnCollection> > >(); CalculateFilters = new Dictionary <CalculateProvider, List <Pair <Expression <Func <Tuple, bool> >, ColumnCollection> > >(); previousState = owner.State; if (previousState == null) { SelfConvertibleApplyProviders = new Dictionary <ApplyParameter, bool>(); } else { SelfConvertibleApplyProviders = previousState.SelfConvertibleApplyProviders; } owner.State = this; }
public void ValidateAggregatedColumns(AggregateProvider provider) { if (owner.State.Predicates.Count == 0) { return; } foreach (var parameterPair in owner.State.Predicates) { foreach (var predicatePair in parameterPair.Value) { foreach (var column in predicatePair.Second) { if (provider.GroupColumnIndexes.Contains(column.Index)) { ApplyProviderCorrectorRewriter.ThrowInvalidOperationException( Strings.ExColumnsUsedByPredicateContainingApplyParameterAreRemoved); } } } } }
// Constructors public ApplyPredicateCollector(ApplyProviderCorrectorRewriter owner) { ArgumentValidator.EnsureArgumentNotNull(owner, "owner"); this.owner = owner; }