mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
pg sql parser support interval <int>
This commit is contained in:
@@ -156,7 +156,7 @@ public class PGExprParser extends SQLExprParser {
|
||||
protected SQLExpr parseInterval() {
|
||||
accept(Token.INTERVAL);
|
||||
SQLIntervalExpr intervalExpr = new SQLIntervalExpr();
|
||||
if (lexer.token() != Token.LITERAL_CHARS) {
|
||||
if (lexer.token() != Token.LITERAL_CHARS && lexer.token() != Token.LITERAL_INT) {
|
||||
return new SQLIdentifierExpr("INTERVAL");
|
||||
}
|
||||
intervalExpr.setValue(new SQLCharExpr(lexer.stringVal()));
|
||||
|
||||
@@ -71,6 +71,7 @@ public class PGLexer extends Lexer {
|
||||
map.put("MERGE", Token.MERGE);
|
||||
map.put("MATCHED", Token.MATCHED);
|
||||
map.put("PARTITION", Token.PARTITION);
|
||||
map.put("INTERVAL", Token.INTERVAL);
|
||||
|
||||
DEFAULT_PG_KEYWORDS = new Keywords(map);
|
||||
}
|
||||
|
||||
@@ -37,13 +37,15 @@ public class PGSelectTest86
|
||||
assertEquals(1, statements.size());
|
||||
final SQLStatement stmt = statements.get(0);
|
||||
|
||||
assertEquals("SELECT *\n" +
|
||||
"FROM xxx_point point\n" +
|
||||
"\tINNER JOIN xxx_cc cc ON point.id = cc.point_id"
|
||||
assertEquals("SELECT COUNT(1) AS res\n" +
|
||||
"FROM TB_EXPERIENCE exp\n" +
|
||||
"WHERE exp.creatdate > DATE_SUB(CURDATE(), INTERVAL '1' MONTH)\n" +
|
||||
"\tAND exp.cstatus = 1"
|
||||
, stmt.toString());
|
||||
|
||||
assertEquals("select *\n" +
|
||||
"from xxx_point point\n" +
|
||||
"\tinner join xxx_cc cc on point.id = cc.point_id", stmt.toLowerCaseString());
|
||||
assertEquals("select count(1) as res\n" +
|
||||
"from TB_EXPERIENCE exp\n" +
|
||||
"where exp.creatdate > DATE_SUB(CURDATE(), interval '1' month)\n" +
|
||||
"\tand exp.cstatus = 1", stmt.toLowerCaseString());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user