22
22
import net .sf .jsqlparser .parser .CCJSqlParserDefaultVisitor ;
23
23
import net .sf .jsqlparser .parser .CCJSqlParserTreeConstants ;
24
24
import net .sf .jsqlparser .parser .CCJSqlParserUtil ;
25
- import net .sf .jsqlparser .schema .Column ;
26
- import net .sf .jsqlparser .parser .Token ;
27
25
import net .sf .jsqlparser .parser .SimpleNode ;
26
+ import net .sf .jsqlparser .parser .Token ;
27
+ import net .sf .jsqlparser .schema .Column ;
28
28
import net .sf .jsqlparser .statement .Statement ;
29
29
import static org .junit .Assert .assertEquals ;
30
30
import static org .junit .Assert .assertNotNull ;
@@ -94,7 +94,7 @@ public Object visit(SimpleNode node, Object data) {
94
94
assertEquals (34 , subSelectStart .beginColumn );
95
95
assertEquals (62 , subSelectEnd .endColumn );
96
96
}
97
-
97
+
98
98
@ Test
99
99
public void testSelectASTColumnLF () throws JSQLParserException {
100
100
String sql = "SELECT a, b FROM mytable \n order by b, c" ;
@@ -117,7 +117,7 @@ public void testSelectASTColumnLF() throws JSQLParserException {
117
117
}
118
118
assertEquals ("SELECT *, * FROM mytable \n order by #, #" , b .toString ());
119
119
}
120
-
120
+
121
121
@ Test
122
122
public void testSelectASTCommentLF () throws JSQLParserException {
123
123
String sql = "SELECT /* testcomment */ \n a, b FROM -- testcomment2 \n mytable \n order by b, c" ;
@@ -140,7 +140,7 @@ public void testSelectASTCommentLF() throws JSQLParserException {
140
140
}
141
141
assertEquals ("SELECT /* testcomment */ \n *, * FROM -- testcomment2 \n mytable \n order by #, #" , b .toString ());
142
142
}
143
-
143
+
144
144
@ Test
145
145
public void testSelectASTCommentCRLF () throws JSQLParserException {
146
146
String sql = "SELECT /* testcomment */ \r \n a, b FROM -- testcomment2 \r \n mytable \r \n order by b, c" ;
@@ -163,4 +163,29 @@ public void testSelectASTCommentCRLF() throws JSQLParserException {
163
163
}
164
164
assertEquals ("SELECT /* testcomment */ \r \n *, * FROM -- testcomment2 \r \n mytable \r \n order by #, #" , b .toString ());
165
165
}
166
+
167
+ @ Test
168
+ public void testDetectInExpressions () throws JSQLParserException {
169
+ String sql = "SELECT * FROM mytable WHERE a IN (1,2,3,4,5,6,7)" ;
170
+ SimpleNode node = (SimpleNode ) CCJSqlParserUtil .parseAST (sql );
171
+ node .dump ("*" );
172
+ assertEquals (CCJSqlParserTreeConstants .JJTSTATEMENT , node .getId ());
173
+ node .jjtAccept (new CCJSqlParserDefaultVisitor () {
174
+ @ Override
175
+ public Object visit (SimpleNode node , Object data ) {
176
+ if (node .getId () == CCJSqlParserTreeConstants .JJTINEXPRESSION ) {
177
+ subSelectStart = node .jjtGetFirstToken ();
178
+ subSelectEnd = node .jjtGetLastToken ();
179
+ return super .visit (node , data );
180
+ } else {
181
+ return super .visit (node , data );
182
+ }
183
+ }
184
+ }, null );
185
+
186
+ assertNotNull (subSelectStart );
187
+ assertNotNull (subSelectEnd );
188
+ assertEquals (30 , subSelectStart .beginColumn );
189
+ assertEquals (49 , subSelectEnd .endColumn );
190
+ }
166
191
}
0 commit comments