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);
        }
Example #2
0
 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);
     }
 }
Example #3
0
 virtual public void VisitAfter(AggregateFuncExpr expr)
 {
 }
Example #4
0
 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;
 }