sql parser refactor

This commit is contained in:
wenshao
2012-07-18 07:42:37 +08:00
parent 4b64b07e38
commit 236561d6c3
5 changed files with 11 additions and 16 deletions
@@ -122,6 +122,6 @@ public class SQLAggregateExpr extends SQLExprImpl implements Serializable {
}
public static enum Option {
DISTINCT, ALL
DISTINCT, ALL, UNIQUE
}
}
@@ -24,17 +24,16 @@ import com.alibaba.druid.sql.visitor.SQLASTVisitor;
public class OracleAggregateExpr extends SQLAggregateExpr implements Serializable, OracleExpr {
private boolean unique = false;
private static final long serialVersionUID = 1L;
private OracleAnalytic over;
private boolean ignoreNulls = false;
public boolean isUnique() {
return unique;
return Option.UNIQUE.equals(this.getOption());
}
public void setUnique(boolean unique) {
this.unique = unique;
this.setOption(Option.UNIQUE);
}
public boolean isIgnoreNulls() {
@@ -526,17 +526,13 @@ public class OracleExprParser extends SQLExprParser {
}
protected OracleAggregateExpr parseAggregateExpr(String methodName) {
boolean unique = false;
methodName = methodName.toUpperCase();
if (lexer.token() == Token.UNIQUE) {
lexer.nextToken();
unique = true;
}
OracleAggregateExpr aggregateExpr;
if (lexer.token() == (Token.ALL)) {
if (lexer.token() == Token.UNIQUE) {
aggregateExpr = new OracleAggregateExpr(methodName, SQLAggregateExpr.Option.UNIQUE);
lexer.nextToken();
} else if (lexer.token() == (Token.ALL)) {
aggregateExpr = new OracleAggregateExpr(methodName, SQLAggregateExpr.Option.ALL);
lexer.nextToken();
} else if (lexer.token() == (Token.DISTINCT)) {
@@ -545,7 +541,6 @@ public class OracleExprParser extends SQLExprParser {
} else {
aggregateExpr = new OracleAggregateExpr(methodName);
}
aggregateExpr.setUnique(unique);
exprList(aggregateExpr.getArguments());
if (lexer.stringVal().equalsIgnoreCase("IGNORE")) {
@@ -217,9 +217,6 @@ public class OracleOutputVisitor extends SQLASTOutputVisitor implements OracleAS
print(' ');
}
if (expr.isUnique()) {
print("UNIQUE ");
}
printAndAccept(expr.getArguments(), ", ");
print(")");