From 54d2c54658d164402299032c649e69d0f16ff39c Mon Sep 17 00:00:00 2001 From: wumpz Date: Tue, 15 May 2012 23:36:59 +0200 Subject: [PATCH] - allowed simple expressions in case else --- src/main/javacc/net/sf/jsqlparser/parser/JSqlParserCC.jj | 4 ++-- src/test/java/net/sf/jsqlparser/test/select/SelectTest.java | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/javacc/net/sf/jsqlparser/parser/JSqlParserCC.jj b/src/main/javacc/net/sf/jsqlparser/parser/JSqlParserCC.jj index 5bd45e4f2..525d7386e 100644 --- a/src/main/javacc/net/sf/jsqlparser/parser/JSqlParserCC.jj +++ b/src/main/javacc/net/sf/jsqlparser/parser/JSqlParserCC.jj @@ -1432,11 +1432,11 @@ Expression CaseWhenExpression(): ( ( clause=WhenThenSearchCondition() { whenClauses.add(clause); } )+ - [ elseExp=PrimaryExpression()] + [ elseExp=SimpleExpression()] | switchExp=PrimaryExpression() ( clause=WhenThenValue() { whenClauses.add(clause); } )* - [ elseExp=PrimaryExpression()] + [ elseExp=SimpleExpression()] ) { diff --git a/src/test/java/net/sf/jsqlparser/test/select/SelectTest.java b/src/test/java/net/sf/jsqlparser/test/select/SelectTest.java index 8bcf39b76..637ad5641 100644 --- a/src/test/java/net/sf/jsqlparser/test/select/SelectTest.java +++ b/src/test/java/net/sf/jsqlparser/test/select/SelectTest.java @@ -583,6 +583,11 @@ public void testCastInCast2() throws JSQLParserException { String stmt = "SELECT CAST('test' + CAST(assertEqual AS numeric) AS varchar) FROM tabelle1"; assertSqlCanBeParsedAndDeparsed(stmt); } + + public void testCaseElseAddition() throws JSQLParserException { + String stmt = "SELECT CASE WHEN 1 + 3 > 20 THEN 0 ELSE 1000 + 1 END AS d FROM dual"; + assertSqlCanBeParsedAndDeparsed(stmt); + } private void assertSqlCanBeParsedAndDeparsed(String statement) throws JSQLParserException { Statement parsed = parserManager.parse(new StringReader(statement));