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():
2251
2251
Alias alias = null;
2252
2252
}
2253
2253
{
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); }
2255
2261
[ LOOKAHEAD(2) alias=Alias() { selectExpressionItem.setAlias(alias); }] { return selectExpressionItem; }
2256
2262
}
2257
2263
2264
+
2258
2265
SelectItem SelectItem() #SelectItem:
2259
2266
{
2260
2267
SelectItem selectItem = null;
Original file line number Diff line number Diff line change @@ -81,4 +81,29 @@ public void testCaseAndSwitch() throws JSQLParserException {
81
81
public void testCaseOrSwitch () throws JSQLParserException {
82
82
TestUtils .assertExpressionCanBeParsedAndDeparsed ("CASE true OR false WHEN true THEN 1 ELSE 2 END" , true );
83
83
}
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
+ }
84
109
}
You can’t perform that action at this time.
0 commit comments