improved sql parser.

This commit is contained in:
wenshao
2017-08-30 17:17:06 +08:00
parent 956edd618d
commit eb3ae06885
3 changed files with 94 additions and 4 deletions
@@ -319,16 +319,26 @@ public class OracleStatementParser extends SQLStatementParser {
}
if (lexer.token() == Token.LPAREN) {
char ch = lexer.current();
int bp = lexer.bp();
Lexer.SavePoint savePoint = lexer.mark();
lexer.nextToken();
int parenCount = 0;
while (lexer.token() == Token.LPAREN) {
savePoint = lexer.mark();
lexer.nextToken();
parenCount++;
}
if (lexer.token() == Token.SELECT) {
lexer.reset(bp, ch, Token.LPAREN);
lexer.reset(savePoint);
SQLStatement stmt = parseSelect();
stmt.setParent(parent);
statementList.add(stmt);
for (int i = 0; i < parenCount; ++i) {
accept(Token.RPAREN);
}
continue;
} else {
throw new ParserException("TODO : " + lexer.info());