You've already forked linux-packaging-mono
Imported Upstream version 4.6.0.125
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
This commit is contained in:
parent
a569aebcfd
commit
e79aa3c0ed
@ -0,0 +1,49 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq.Expressions;
|
||||
using System.Data.Linq;
|
||||
|
||||
namespace System.Data.Linq.SqlClient {
|
||||
|
||||
internal class SqlAggregateChecker {
|
||||
Visitor visitor;
|
||||
|
||||
internal SqlAggregateChecker() {
|
||||
this.visitor = new Visitor();
|
||||
}
|
||||
|
||||
internal bool HasAggregates(SqlNode node) {
|
||||
visitor.hasAggregates = false;
|
||||
visitor.Visit(node);
|
||||
return visitor.hasAggregates;
|
||||
}
|
||||
|
||||
class Visitor : SqlVisitor {
|
||||
internal bool hasAggregates;
|
||||
|
||||
internal Visitor() {
|
||||
}
|
||||
|
||||
internal override SqlExpression VisitSubSelect(SqlSubSelect ss) {
|
||||
return ss;
|
||||
}
|
||||
internal override SqlSource VisitSource(SqlSource source) {
|
||||
return source;
|
||||
}
|
||||
internal override SqlExpression VisitUnaryOperator(SqlUnary uo) {
|
||||
switch (uo.NodeType) {
|
||||
case SqlNodeType.Min:
|
||||
case SqlNodeType.Max:
|
||||
case SqlNodeType.Avg:
|
||||
case SqlNodeType.Sum:
|
||||
case SqlNodeType.Count:
|
||||
case SqlNodeType.LongCount:
|
||||
this.hasAggregates = true;
|
||||
return uo;
|
||||
default:
|
||||
return base.VisitUnaryOperator(uo);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user