2222import net .sf .jsqlparser .parser .CCJSqlParserDefaultVisitor ;
2323import net .sf .jsqlparser .parser .CCJSqlParserTreeConstants ;
2424import net .sf .jsqlparser .parser .CCJSqlParserUtil ;
25- import net .sf .jsqlparser .schema .Column ;
26- import net .sf .jsqlparser .parser .Token ;
2725import net .sf .jsqlparser .parser .SimpleNode ;
26+ import net .sf .jsqlparser .parser .Token ;
27+ import net .sf .jsqlparser .schema .Column ;
2828import net .sf .jsqlparser .statement .Statement ;
2929import static org .junit .Assert .assertEquals ;
3030import static org .junit .Assert .assertNotNull ;
@@ -94,7 +94,7 @@ public Object visit(SimpleNode node, Object data) {
9494 assertEquals (34 , subSelectStart .beginColumn );
9595 assertEquals (62 , subSelectEnd .endColumn );
9696 }
97-
97+
9898 @ Test
9999 public void testSelectASTColumnLF () throws JSQLParserException {
100100 String sql = "SELECT a, b FROM mytable \n order by b, c" ;
@@ -117,7 +117,7 @@ public void testSelectASTColumnLF() throws JSQLParserException {
117117 }
118118 assertEquals ("SELECT *, * FROM mytable \n order by #, #" , b .toString ());
119119 }
120-
120+
121121 @ Test
122122 public void testSelectASTCommentLF () throws JSQLParserException {
123123 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 {
140140 }
141141 assertEquals ("SELECT /* testcomment */ \n *, * FROM -- testcomment2 \n mytable \n order by #, #" , b .toString ());
142142 }
143-
143+
144144 @ Test
145145 public void testSelectASTCommentCRLF () throws JSQLParserException {
146146 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 {
163163 }
164164 assertEquals ("SELECT /* testcomment */ \r \n *, * FROM -- testcomment2 \r \n mytable \r \n order by #, #" , b .toString ());
165165 }
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+ }
166191}
0 commit comments