mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
add odps sql parser support
This commit is contained in:
@@ -667,7 +667,6 @@ public class Lexer {
|
||||
bufPos = 1;
|
||||
char ch;
|
||||
|
||||
boolean mybatisFlag = false;
|
||||
if (charAt(pos + 1) == '@') {
|
||||
ch = charAt(++pos);
|
||||
|
||||
@@ -675,7 +674,29 @@ public class Lexer {
|
||||
} else if (charAt(pos + 1) == '{') {
|
||||
pos++;
|
||||
bufPos++;
|
||||
mybatisFlag = true;
|
||||
|
||||
for (;;) {
|
||||
ch = charAt(++pos);
|
||||
|
||||
if (ch == '}') {
|
||||
break;
|
||||
}
|
||||
|
||||
bufPos++;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (ch != '}') {
|
||||
throw new ParserException("syntax error");
|
||||
}
|
||||
++pos;
|
||||
bufPos++;
|
||||
|
||||
this.ch = charAt(pos);
|
||||
|
||||
stringVal = addSymbol();
|
||||
token = Token.VARIANT;
|
||||
return;
|
||||
}
|
||||
|
||||
for (;;) {
|
||||
@@ -689,14 +710,6 @@ public class Lexer {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (mybatisFlag) {
|
||||
if (ch != '}') {
|
||||
throw new ParserException("syntax error");
|
||||
}
|
||||
++pos;
|
||||
bufPos++;
|
||||
}
|
||||
|
||||
this.ch = charAt(pos);
|
||||
|
||||
stringVal = addSymbol();
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -19,6 +19,7 @@ import com.alibaba.druid.sql.dialect.db2.parser.DB2ExprParser;
|
||||
import com.alibaba.druid.sql.dialect.db2.parser.DB2StatementParser;
|
||||
import com.alibaba.druid.sql.dialect.mysql.parser.MySqlExprParser;
|
||||
import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser;
|
||||
import com.alibaba.druid.sql.dialect.odps.parser.OdpsExprParser;
|
||||
import com.alibaba.druid.sql.dialect.oracle.parser.OracleExprParser;
|
||||
import com.alibaba.druid.sql.dialect.oracle.parser.OracleStatementParser;
|
||||
import com.alibaba.druid.sql.dialect.postgresql.parser.PGExprParser;
|
||||
@@ -83,6 +84,10 @@ public class SQLParserUtils {
|
||||
if (JdbcUtils.DB2.equals(dbType)) {
|
||||
return new DB2ExprParser(sql);
|
||||
}
|
||||
|
||||
if (JdbcUtils.ODPS.equals(dbType)) {
|
||||
return new OdpsExprParser(sql);
|
||||
}
|
||||
|
||||
return new SQLExprParser(sql);
|
||||
}
|
||||
|
||||
@@ -240,6 +240,11 @@ public enum Token {
|
||||
// Oracle
|
||||
BINARY_FLOAT,
|
||||
BINARY_DOUBLE,
|
||||
|
||||
// odps,hive
|
||||
PARTITION,
|
||||
PARTITIONED,
|
||||
OVERWRITE,
|
||||
|
||||
LPAREN("("),
|
||||
RPAREN(")"),
|
||||
|
||||
Reference in New Issue
Block a user