Skip to content

Commit 35164e5

Browse files
committed
fixes #69
1 parent 536ba9d commit 35164e5

File tree

5 files changed

+18
-3
lines changed

5 files changed

+18
-3
lines changed

src/main/java/net/sf/jsqlparser/expression/IntervalExpression.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
*/
2828
public class IntervalExpression implements Expression {
2929
private String parameter = null;
30+
private String intervalType = null;
3031

3132
public String getParameter() {
3233
return parameter;
@@ -35,10 +36,18 @@ public String getParameter() {
3536
public void setParameter(String parameter) {
3637
this.parameter = parameter;
3738
}
39+
40+
public String getIntervalType() {
41+
return intervalType;
42+
}
43+
44+
public void setIntervalType(String intervalType) {
45+
this.intervalType = intervalType;
46+
}
3847

3948
@Override
4049
public String toString() {
41-
return "INTERVAL " + parameter;
50+
return "INTERVAL " + parameter + (intervalType!=null?" " + intervalType:"");
4251
}
4352

4453
@Override

src/main/javacc/net/sf/jsqlparser/parser/JSqlParserCC.jj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1880,6 +1880,7 @@ IntervalExpression IntervalExpression() : {
18801880
}
18811881
{
18821882
<K_INTERVAL> token=<S_CHAR_LITERAL> { interval.setParameter(token.image); }
1883+
[ LOOKAHEAD(2) token = <S_IDENTIFIER> { interval.setIntervalType(token.image); } ]
18831884
{
18841885
return interval;
18851886
}

src/test/java/net/sf/jsqlparser/test/select/SelectTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1460,6 +1460,11 @@ public void testInterval2() throws JSQLParserException {
14601460

14611461
assertEquals("'45 MINUTE'", iexpr.getParameter());
14621462
}
1463+
1464+
public void testInterval3() throws JSQLParserException {
1465+
String stmt = "SELECT 5 + INTERVAL '3' day";
1466+
assertSqlCanBeParsedAndDeparsed(stmt);
1467+
}
14631468

14641469
public void testMultiValueIn() throws JSQLParserException {
14651470
String stmt = "SELECT * FROM mytable WHERE (a, b, c) IN (SELECT a, b, c FROM mytable2)";

src/test/java/net/sf/jsqlparser/test/select/SpecialOracleTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public void testAllSqlsParseDeparse() throws IOException {
6868
}
6969

7070
LOG.log(Level.INFO, "tested {0} files. got {1} correct parse results", new Object[]{count, success});
71-
assertTrue(success>=127);
71+
assertTrue(success>=128);
7272
}
7373

7474
@Test
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
select interval'20' day - interval'240' hour from dual
1+
select interval '20' day - interval '240' hour from dual

0 commit comments

Comments
 (0)