public override void VisitAfter(AggregateFuncExpr expr) { Expr arg2 = null; if (expr.Argument2 != null) { arg2 = (Expr)_stack.Pop(); } Expr arg1 = null; if (expr.Argument1 != null) { arg1 = (Expr)_stack.Pop(); } if (object.ReferenceEquals(expr.Argument1, arg1) && object.ReferenceEquals(expr.Argument2, arg2)) { _stack.Push(expr); return; } var node = new AggregateFuncExpr(expr.Name , expr.Quantifier , expr.Wildcard , arg1, arg2 , expr.Comments.Clone()); _stack.Push(node); }
public override void VisitAfter(AggregateFuncExpr expr) { if (IsPlaceHolderExpr(expr.Argument1)) { expr.Argument1 = Place((PlaceHolderExpr)expr.Argument1); } if (IsPlaceHolderExpr(expr.Argument2)) { expr.Argument2 = Place((PlaceHolderExpr)expr.Argument2); } }
virtual public void VisitAfter(AggregateFuncExpr expr) { }
virtual public void VisitBefore(AggregateFuncExpr expr) { }
public void VisitAfter(AggregateFuncExpr expr) { _visitor.VisitAfter(expr); }
public void VisitBefore(AggregateFuncExpr expr) { _visitor.VisitBefore(expr); }
public override void VisitBefore(AggregateFuncExpr expr) { // Expressionがサブクエリの場合、その中に集約関数が含まれていても // Expressionは集約式ではない this.ContainsAggregativeExpr = this.ContainsAggregativeExpr || _inSubQueryExp == 0; }