Skip to content

Commit 3d34037

Browse files
committed
fixes #142
1 parent b78ed4b commit 3d34037

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

src/main/java/net/sf/jsqlparser/util/TablesNamesFinder.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,13 @@ public List<String> getTableList(CreateTable create) {
172172

173173
return tables;
174174
}
175+
176+
public List<String> getTableList(Expression expr) {
177+
init();
178+
expr.accept(this);
179+
180+
return tables;
181+
}
175182

176183
@Override
177184
public void visit(WithItem withItem) {

src/test/java/net/sf/jsqlparser/util/TablesNamesFinderTest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,10 @@
88
import java.util.List;
99
import java.util.StringTokenizer;
1010
import net.sf.jsqlparser.JSQLParserException;
11+
import net.sf.jsqlparser.expression.Expression;
1112

1213
import net.sf.jsqlparser.parser.CCJSqlParserManager;
14+
import net.sf.jsqlparser.parser.CCJSqlParserUtil;
1315
import net.sf.jsqlparser.statement.create.table.CreateTable;
1416
import net.sf.jsqlparser.statement.delete.Delete;
1517
import net.sf.jsqlparser.statement.insert.Insert;
@@ -317,6 +319,16 @@ public void testInsertSubSelect() throws JSQLParserException {
317319
assertTrue(tableList.contains("Customers"));
318320
assertTrue(tableList.contains("Suppliers"));
319321
}
322+
323+
@Test
324+
public void testExpr() throws JSQLParserException {
325+
String sql = "mycol in (select col2 from mytable)";
326+
Expression expr = (Expression) CCJSqlParserUtil.parseCondExpression(sql);
327+
TablesNamesFinder tablesNamesFinder = new TablesNamesFinder();
328+
List<String> tableList = tablesNamesFinder.getTableList(expr);
329+
assertEquals(1, tableList.size());
330+
assertTrue(tableList.contains("mytable"));
331+
}
320332

321333
private String getLine(BufferedReader in) throws Exception {
322334
return CCJSqlParserManagerTest.getLine(in);

0 commit comments

Comments
 (0)