Skip to content

Commit a3669da

Browse files
committed
Merge origin/master
2 parents a3c95d4 + 8de0fd9 commit a3669da

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3102,7 +3102,7 @@ IntervalExpression IntervalExpression() : {
31023102
{
31033103

31043104
{ interval = new IntervalExpression(); }
3105-
<K_INTERVAL> ["-" {signed=true;}] (token=<S_LONG> | token=<S_DOUBLE> | token=<S_CHAR_LITERAL> | expr = Column())
3105+
<K_INTERVAL> ["-" {signed=true;}] (token=<S_LONG> | token=<S_DOUBLE> | token=<S_CHAR_LITERAL> | expr = Column())
31063106
{
31073107
if (expr != null) {
31083108
if (signed) expr = new SignedExpression('-', expr);
@@ -3308,7 +3308,7 @@ WhenClause WhenThenSearchCondition():
33083308
}
33093309
{
33103310
<K_WHEN> (LOOKAHEAD(Expression()) whenExp=Expression() | whenExp=SimpleExpression())
3311-
<K_THEN> thenExp=Condition()
3311+
<K_THEN> thenExp=Expression()
33123312
{
33133313
whenThen.setWhenExpression(whenExp);
33143314
whenThen.setThenExpression(thenExp);

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

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1322,6 +1322,12 @@ public void testIssue862CaseWhenConcat() throws JSQLParserException {
13221322
assertSqlCanBeParsedAndDeparsed("SELECT c1, CASE c1 || c2 WHEN '091' THEN '2' ELSE '1' END AS c11 FROM T2");
13231323
}
13241324

1325+
@Test
1326+
@Ignore
1327+
public void testExpressionsInIntervalExpression() throws JSQLParserException {
1328+
assertSqlCanBeParsedAndDeparsed("SELECT DATE_SUB(mydate, INTERVAL DAY(anotherdate) - 1 DAY) FROM tbl");
1329+
}
1330+
13251331
@Test
13261332
public void testReplaceAsFunction() throws JSQLParserException {
13271333
String statement = "SELECT REPLACE(a, 'b', c) FROM tab1";
@@ -3976,4 +3982,18 @@ public void testWrongParseTreeIssue89() throws JSQLParserException {
39763982
.extracting(item -> item.toString())
39773983
.contains("col");
39783984
}
3985+
3986+
@Test
3987+
public void testCaseWithComplexWhenExpression() throws JSQLParserException {
3988+
assertSqlCanBeParsedAndDeparsed("SELECT av.app_id, MAX(av.version_no) AS version_no\n"
3989+
+ "FROM app_version av\n"
3990+
+ "JOIN app_version_policy avp ON av.id = avp.app_version_id\n"
3991+
+ "WHERE av.`status` = 1\n"
3992+
+ "AND CASE \n"
3993+
+ "WHEN avp.area IS NOT NULL\n"
3994+
+ "AND length(avp.area) > 0 THEN avp.area LIKE CONCAT('%,', '12', ',%')\n"
3995+
+ "OR avp.area LIKE CONCAT('%,', '13', ',%')\n"
3996+
+ "ELSE 1 = 1\n"
3997+
+ "END\n", true);
3998+
}
39793999
}

0 commit comments

Comments
 (0)