Skip to content

Commit 5896d83

Browse files
authored
Merge pull request #517 from natzcam/master
Fix for some cases where TableNamesFinder can't find tables
2 parents 812f98f + b2bb243 commit 5896d83

File tree

2 files changed

+37
-0
lines changed

2 files changed

+37
-0
lines changed

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,11 @@ public void visit(PlainSelect plainSelect) {
204204
if (plainSelect.getWhere() != null) {
205205
plainSelect.getWhere().accept(this);
206206
}
207+
208+
if(plainSelect.getHaving() != null){
209+
plainSelect.getHaving().accept(this);
210+
}
211+
207212
if (plainSelect.getOracleHierarchical() != null) {
208213
plainSelect.getOracleHierarchical().accept(this);
209214
}
@@ -593,6 +598,13 @@ public void visit(MySQLGroupConcat groupConcat) {
593598
@Override
594599
public void visit(Delete delete) {
595600
tables.add(delete.getTable().getName());
601+
602+
if (delete.getJoins() != null) {
603+
for (Join join : delete.getJoins()) {
604+
join.getRightItem().accept(this);
605+
}
606+
}
607+
596608
if (delete.getWhere() != null) {
597609
delete.getWhere().accept(this);
598610
}

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

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,19 @@ public void testGetTableListFromDelete2() throws Exception {
192192
assertEquals(1, tableList.size());
193193
assertTrue(tableList.contains("MY_TABLE1"));
194194
}
195+
196+
@Test
197+
public void testGetTableListFromDeleteWithJoin() throws Exception {
198+
String sql = "DELETE t1, t2 FROM MY_TABLE1 t1 JOIN MY_TABLE2 t2 ON t1.id = t2.id";
199+
net.sf.jsqlparser.statement.Statement statement = pm.parse(new StringReader(sql));
200+
201+
Delete deleteStatement = (Delete) statement;
202+
TablesNamesFinder tablesNamesFinder = new TablesNamesFinder();
203+
List<String> tableList = tablesNamesFinder.getTableList(deleteStatement);
204+
assertEquals(2, tableList.size());
205+
assertTrue(tableList.contains("MY_TABLE1"));
206+
assertTrue(tableList.contains("MY_TABLE2"));
207+
}
195208

196209
@Test
197210
public void testGetTableListFromInsert() throws Exception {
@@ -470,4 +483,16 @@ public void testExpressionIssue515() throws JSQLParserException {
470483
assertEquals(1, tableList.size());
471484
assertTrue(tableList.contains("SOME_TABLE"));
472485
}
486+
487+
public void testSelectHavingSubquery() throws Exception {
488+
String sql = "SELECT * FROM TABLE1 GROUP BY COL1 HAVING SUM(COL2) > (SELECT COUNT(*) FROM TABLE2)";
489+
net.sf.jsqlparser.statement.Statement statement = pm.parse(new StringReader(sql));
490+
491+
Select selectStmt = (Select) statement;
492+
TablesNamesFinder tablesNamesFinder = new TablesNamesFinder();
493+
List<String> tableList = tablesNamesFinder.getTableList(selectStmt);
494+
assertEquals(2, tableList.size());
495+
assertTrue(tableList.contains("TABLE1"));
496+
assertTrue(tableList.contains("TABLE2"));
497+
}
473498
}

0 commit comments

Comments
 (0)