improved sql parser, support apache phoenix.

This commit is contained in:
wenshao
2016-09-14 15:05:12 +08:00
parent 49d7884c96
commit 77ee426082
33 changed files with 717 additions and 359 deletions
@@ -99,6 +99,7 @@ import com.alibaba.druid.sql.ast.statement.SQLTruncateStatement;
import com.alibaba.druid.sql.ast.statement.SQLUpdateSetItem;
import com.alibaba.druid.sql.ast.statement.SQLUpdateStatement;
import com.alibaba.druid.sql.ast.statement.SQLUseStatement;
import org.apache.ibatis.jdbc.SQL;
public class SQLStatementParser extends SQLParser {
@@ -418,6 +419,12 @@ public class SQLStatementParser extends SQLParser {
continue;
}
if (lexer.token() == Token.UPSERT || identifierEquals("UPSERT")) {
SQLStatement stmt = parseUpsert();
statementList.add(stmt);
continue;
}
// throw new ParserException("syntax error, " + lexer.token() + " "
// + lexer.stringVal() + ", pos "
// + lexer.pos());
@@ -425,6 +432,18 @@ public class SQLStatementParser extends SQLParser {
}
}
public SQLStatement parseUpsert() {
SQLInsertStatement insertStatement = new SQLInsertStatement();
if (lexer.token() == Token.UPSERT || identifierEquals("UPSERT")) {
lexer.nextToken();
insertStatement.setUpsert(true);
}
parseInsert0(insertStatement);
return insertStatement;
}
public SQLRollbackStatement parseRollback() {
lexer.nextToken();