Oracle Parser支持Model Clause

git-svn-id: http://code.alibabatech.com/svn/druid/trunk@952 b9813039-fb51-4c41-a8b9-e21c2acb5095
This commit is contained in:
wenshao
2011-10-13 10:01:40 +00:00
parent 9c9f066408
commit 25511feeaa
10 changed files with 1067 additions and 21 deletions
@@ -358,16 +358,20 @@ public class SQLExprParser extends SQLParser {
break;
case ANY:
lexer.nextToken();
SQLAnyExpr anyExpr = new SQLAnyExpr();
if (lexer.token() == Token.LPAREN) {
SQLAnyExpr anyExpr = new SQLAnyExpr();
accept(Token.LPAREN);
SQLSelect anySubQuery = createSelectParser().select();
anyExpr.setSubQuery(anySubQuery);
accept(Token.RPAREN);
accept(Token.LPAREN);
SQLSelect anySubQuery = createSelectParser().select();
anyExpr.setSubQuery(anySubQuery);
accept(Token.RPAREN);
anySubQuery.setParent(anyExpr);
anySubQuery.setParent(anyExpr);
sqlExpr = anyExpr;
sqlExpr = anyExpr;
} else {
sqlExpr = new SQLIdentifierExpr("ANY");
}
break;
case SOME:
lexer.nextToken();
@@ -383,12 +387,11 @@ public class SQLExprParser extends SQLParser {
sqlExpr = someExpr;
break;
case KEY:
lexer.nextToken();
sqlExpr = new SQLIdentifierExpr("KEY");
break;
case DISTINCT:
case YEAR:
case MONTH:
lexer.nextToken();
sqlExpr = new SQLIdentifierExpr("DISTINCT");
sqlExpr = new SQLIdentifierExpr(tok.name());
break;
case ALL:
lexer.nextToken();
@@ -524,7 +527,7 @@ public class SQLExprParser extends SQLParser {
}
public final void exprList(Collection<SQLExpr> exprCol) throws ParserException {
if (lexer.token() == Token.RPAREN) {
if (lexer.token() == Token.RPAREN || lexer.token() == Token.RBRACKET) {
return;
}
@@ -112,6 +112,7 @@ public enum Token {
MONTH("MONTH"),
SECOND("SECOND"),
TO("TO"),
MODEL("MODEL"),
EOF,
ERROR,