File tree Expand file tree Collapse file tree 2 files changed +33
-1
lines changed
main/jjtree/net/sf/jsqlparser/parser
test/java/net/sf/jsqlparser/expression Expand file tree Collapse file tree 2 files changed +33
-1
lines changed Original file line number Diff line number Diff line change @@ -2251,10 +2251,17 @@ SelectExpressionItem SelectExpressionItem():
22512251 Alias alias = null;
22522252}
22532253{
2254- expression=Expression() { selectExpressionItem = new SelectExpressionItem(); selectExpressionItem.setExpression(expression); }
2254+ (
2255+ LOOKAHEAD( Condition() ) expression = Condition()
2256+ |
2257+ LOOKAHEAD( 3 ) expression = ConcatExpression()
2258+ |
2259+ expression=Expression()
2260+ ) { selectExpressionItem = new SelectExpressionItem(); selectExpressionItem.setExpression(expression); }
22552261 [ LOOKAHEAD(2) alias=Alias() { selectExpressionItem.setAlias(alias); }] { return selectExpressionItem; }
22562262}
22572263
2264+
22582265SelectItem SelectItem() #SelectItem:
22592266{
22602267 SelectItem selectItem = null;
Original file line number Diff line number Diff line change @@ -81,4 +81,29 @@ public void testCaseAndSwitch() throws JSQLParserException {
8181 public void testCaseOrSwitch () throws JSQLParserException {
8282 TestUtils .assertExpressionCanBeParsedAndDeparsed ("CASE true OR false WHEN true THEN 1 ELSE 2 END" , true );
8383 }
84+
85+ @ Test
86+ public void testCaseInsideBrackets () throws JSQLParserException {
87+ String sqlStr = "SELECT ( CASE\n "
88+ + " WHEN something\n "
89+ + " THEN CASE\n "
90+ + " WHEN something2\n "
91+ + " THEN 1\n "
92+ + " ELSE 0\n "
93+ + " END + 1\n "
94+ + " ELSE 0\n "
95+ + " END ) + 1 \n "
96+ + "FROM test" ;
97+
98+ TestUtils .assertSqlCanBeParsedAndDeparsed (sqlStr , true );
99+
100+ sqlStr = "SELECT\n "
101+ + "(CASE WHEN FIELD_A=0 THEN FIELD_B\n "
102+ + "WHEN FIELD_C >FIELD_D THEN (CASE WHEN FIELD_A>0 THEN\n "
103+ + "(FIELD_B)/(FIELD_A/(DATEDIFF(DAY,:started,:end)+1))\n "
104+ + "ELSE 0 END)-FIELD_D ELSE 0 END)*FIELD_A/(DATEDIFF(DAY,:started,:end)+1) AS UNNECESSARY_COMPLEX_EXPRESSION\n "
105+ + "FROM TEST" ;
106+
107+ TestUtils .assertSqlCanBeParsedAndDeparsed (sqlStr , true );
108+ }
84109}
You can’t perform that action at this time.
0 commit comments