mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
mysql parser support DIV operator. issue #1526
This commit is contained in:
@@ -87,13 +87,19 @@ public class MySqlExprParser extends SQLExprParser {
|
||||
}
|
||||
|
||||
public SQLExpr multiplicativeRest(SQLExpr expr) {
|
||||
if (lexer.token() == Token.IDENTIFIER && "MOD".equalsIgnoreCase(lexer.stringVal())) {
|
||||
final Token token = lexer.token();
|
||||
if (token == Token.IDENTIFIER && "MOD".equalsIgnoreCase(lexer.stringVal())) {
|
||||
lexer.nextToken();
|
||||
SQLExpr rightExp = primary();
|
||||
|
||||
rightExp = relationalRest(rightExp);
|
||||
|
||||
return new SQLBinaryOpExpr(expr, SQLBinaryOperator.Modulus, rightExp, JdbcConstants.MYSQL);
|
||||
} else if (token == Token.DIV) {
|
||||
lexer.nextToken();
|
||||
SQLExpr rightExp = bitXor();
|
||||
expr = new SQLBinaryOpExpr(expr, SQLBinaryOperator.DIV, rightExp, getDbType());
|
||||
expr = multiplicativeRest(expr);
|
||||
}
|
||||
|
||||
return super.multiplicativeRest(expr);
|
||||
|
||||
@@ -52,6 +52,7 @@ public class MySqlLexer extends Lexer {
|
||||
map.put("ROW", Token.ROW);
|
||||
map.put("BEGIN", Token.BEGIN);
|
||||
map.put("END", Token.END);
|
||||
map.put("DIV", Token.DIV);
|
||||
|
||||
// for oceanbase & mysql 5.7
|
||||
map.put("PARTITION", Token.PARTITION);
|
||||
|
||||
Reference in New Issue
Block a user