mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
sql parser refactor
This commit is contained in:
@@ -122,6 +122,6 @@ public class SQLAggregateExpr extends SQLExprImpl implements Serializable {
|
||||
}
|
||||
|
||||
public static enum Option {
|
||||
DISTINCT, ALL
|
||||
DISTINCT, ALL, UNIQUE
|
||||
}
|
||||
}
|
||||
|
||||
+2
-3
@@ -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(")");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user