improved sql parser, support over winding_clause.

This commit is contained in:
wenshao
2016-10-09 13:28:58 +08:00
parent 57bf786427
commit 27e6b8f9f4
5 changed files with 211 additions and 9 deletions
@@ -1116,15 +1116,33 @@ public class SQLExprParser extends SQLParser {
}
} else {
SQLIntegerExpr rowsExpr = (SQLIntegerExpr) this.primary();
over.setWindowing(rowsExpr);
if (identifierEquals("PRECEDING")) {
over.setWindowingPreceding(true);
if (identifierEquals("CURRENT")) {
lexer.nextToken();
} else if (identifierEquals("FOLLOWING")) {
over.setWindowingFollowing(true);
acceptIdentifier("ROW");
over.setWindowing(new SQLIdentifierExpr("CURRENT ROW"));
} else if (identifierEquals("UNBOUNDED")) {
lexer.nextToken();
over.setWindowing(new SQLIdentifierExpr("UNBOUNDED"));
if (identifierEquals("PRECEDING")) {
over.setWindowingPreceding(true);
lexer.nextToken();
} else if (identifierEquals("FOLLOWING")) {
over.setWindowingFollowing(true);
lexer.nextToken();
}
} else {
SQLIntegerExpr rowsExpr = (SQLIntegerExpr) this.primary();
over.setWindowing(rowsExpr);
if (identifierEquals("PRECEDING")) {
over.setWindowingPreceding(true);
lexer.nextToken();
} else if (identifierEquals("FOLLOWING")) {
over.setWindowingFollowing(true);
lexer.nextToken();
}
}
}
}