protected internal override Expression VisitSetOperator(SetOperatorExpression set) { HashSet <string?> columnsUsed = allColumnsUsed.GetOrCreate(set.Alias); // a veces no se usa allColumnsUsed.GetOrCreate(set.Left.Alias).AddRange(columnsUsed); allColumnsUsed.GetOrCreate(set.Right.Alias).AddRange(columnsUsed); return(base.VisitSetOperator(set)); }
protected internal override Expression VisitSetOperator(SetOperatorExpression set) { HashSet<string> columnsUsed = allColumnsUsed.GetOrCreate(set.Alias); // a veces no se usa allColumnsUsed.GetOrCreate(set.Left.Alias).AddRange(columnsUsed); allColumnsUsed.GetOrCreate(set.Right.Alias).AddRange(columnsUsed); return base.VisitSetOperator(set); }
protected internal virtual Expression VisitSetOperator(SetOperatorExpression set) { SourceWithAliasExpression left = (SourceWithAliasExpression)this.VisitSource(set.Left) !; SourceWithAliasExpression right = (SourceWithAliasExpression)this.VisitSource(set.Right) !; if (left != set.Left || right != set.Right) { return(new SetOperatorExpression(set.Operator, left, right, set.Alias)); } return(set); }
protected internal override Expression VisitSetOperator(SetOperatorExpression set) { SourceWithAliasExpression left = (SourceWithAliasExpression)this.VisitSource(set.Left) !; SourceWithAliasExpression right = (SourceWithAliasExpression)this.VisitSource(set.Right) !; Alias newAlias = aliasMap.TryGetC(set.Alias) ?? set.Alias; if (left != set.Left || right != set.Right || newAlias != set.Alias) { return(new SetOperatorExpression(set.Operator, left, right, newAlias)); } return(set); }
protected override Expression VisitSetOperator(SetOperatorExpression set) { List<ColumnExpression> askedColumns = CurrentScope.Keys.Where(k => k.Alias == set.Alias).ToList(); SourceWithAliasExpression left = VisitSetOperatorPart(set.Left, askedColumns); SourceWithAliasExpression right = VisitSetOperatorPart(set.Right, askedColumns); CurrentScope.SetRange(askedColumns, askedColumns); if (left != set.Left || right != set.Right) return new SetOperatorExpression(set.Operator, left, right, set.Alias); return set; }
protected internal override Expression VisitSetOperator(SetOperatorExpression set) { List <ColumnExpression> askedColumns = CurrentScope.Keys.Where(k => k.Alias == set.Alias).ToList(); SourceWithAliasExpression left = VisitSetOperatorPart(set.Left, askedColumns); SourceWithAliasExpression right = VisitSetOperatorPart(set.Right, askedColumns); CurrentScope.SetRange(askedColumns, askedColumns); if (left != set.Left || right != set.Right) { return(new SetOperatorExpression(set.Operator, left, right, set.Alias)); } return(set); }
protected internal override Expression VisitSetOperator(SetOperatorExpression set) { var result = (SetOperatorExpression)base.VisitSetOperator(set); if (this.redundant != null) { if (result.Left is SelectExpression l) { this.redundant.Remove(l); } if (result.Right is SelectExpression r) { this.redundant.Remove(r); } } return(result); }
private static IEnumerable<ColumnExpression> KeysSet(SetOperatorExpression set) { return Keys(set.Left).Concat(Keys(set.Right)); }
protected override Expression VisitSetOperator(SetOperatorExpression set) { using (Scope()) return base.VisitSetOperator(set); }
protected virtual Expression VisitSetOperator(SetOperatorExpression set) { SourceWithAliasExpression left = (SourceWithAliasExpression)this.VisitSource(set.Left); SourceWithAliasExpression right = (SourceWithAliasExpression)this.VisitSource(set.Right); if (left != set.Left || right != set.Right) { return new SetOperatorExpression(set.Operator, left, right, set.Alias); } return set; }
private static IEnumerable <ColumnExpression?> KeysSet(SetOperatorExpression set) { return(Keys(set.Left).Concat(Keys(set.Right))); }
protected internal override Expression VisitSetOperator(SetOperatorExpression set) { this.aliases.Add(set.Alias); return(base.VisitSetOperator(set)); }
protected override Expression VisitSetOperator(SetOperatorExpression set) { VisitSetPart(set.Left); switch (set.Operator) { case SetOperator.Union: sb.Append("UNION"); break; case SetOperator.UnionAll: sb.Append("UNION ALL"); break; case SetOperator.Intersect: sb.Append("INTERSECT"); break; case SetOperator.Except: sb.Append("EXCEPT"); break; default: throw new InvalidOperationException("Unexpected SetOperator {0}".Formato(set.Operator)); } VisitSetPart(set.Right); return set; }