mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
bugfix for INTERVAL
This commit is contained in:
@@ -458,6 +458,11 @@ public class SQLExprParser extends SQLParser {
|
||||
sqlExpr = new SQLNumberExpr(lexer.decimalValue());
|
||||
lexer.nextToken();
|
||||
break;
|
||||
case IDENTIFIER: // 当+号后面为字段的情况
|
||||
sqlExpr = new SQLIdentifierExpr(lexer.stringVal());
|
||||
sqlExpr = new SQLUnaryExpr(SQLUnaryOperator.Plus, sqlExpr);
|
||||
lexer.nextToken();
|
||||
break;
|
||||
case LPAREN:
|
||||
lexer.nextToken();
|
||||
sqlExpr = expr();
|
||||
|
||||
@@ -621,6 +621,29 @@ public class DateAndTimeFunctionsTest extends TestCase {
|
||||
|
||||
Assert.assertEquals("SELECT YEARWEEK('1987-01-01');", text);
|
||||
}
|
||||
|
||||
|
||||
public void test_54() throws Exception {
|
||||
String sql = "SELECT t.c1, DATE_ADD('2008-01-02', INTERVAL +t.c1 DAY) from t";
|
||||
|
||||
SQLStatementParser parser = new MySqlStatementParser(sql);
|
||||
List<SQLStatement> stmtList = parser.parseStatementList();
|
||||
|
||||
String text = output(stmtList);
|
||||
|
||||
Assert.assertEquals("SELECT t.c1, DATE_ADD('2008-01-02', INTERVAL +t.c1 DAY)\nFROM t;", text);
|
||||
}
|
||||
|
||||
public void test_55() throws Exception {
|
||||
String sql = "SELECT t.c1, DATE_ADD('2008-01-02', INTERVAL -t.c1 DAY) from t";
|
||||
|
||||
SQLStatementParser parser = new MySqlStatementParser(sql);
|
||||
List<SQLStatement> stmtList = parser.parseStatementList();
|
||||
|
||||
String text = output(stmtList);
|
||||
|
||||
Assert.assertEquals("SELECT t.c1, DATE_ADD('2008-01-02', INTERVAL -t.c1 DAY)\nFROM t;", text);
|
||||
}
|
||||
|
||||
private String output(List<SQLStatement> stmtList) {
|
||||
StringBuilder out = new StringBuilder();
|
||||
|
||||
Reference in New Issue
Block a user