Skip to content

Commit 1fdfe64

Browse files
committed
#3662 Table names are identified from the FROM statements only
1 parent deefbf4 commit 1fdfe64

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

Diff for: opal-sql/src/main/java/org/obiba/opal/sql/SQLExtractor.java

+8-1
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,15 @@
1313
import com.google.common.collect.Sets;
1414
import org.antlr.v4.runtime.CharStreams;
1515
import org.antlr.v4.runtime.CommonTokenStream;
16+
import org.slf4j.Logger;
17+
import org.slf4j.LoggerFactory;
1618

1719
import java.util.Set;
1820

1921
public class SQLExtractor {
2022

23+
private static final Logger log = LoggerFactory.getLogger(SQLExtractor.class);
24+
2125
public static Set<String> extractTables(String sql) throws SQLParserException {
2226
try {
2327
Set<String> tables = Sets.newLinkedHashSet();
@@ -67,9 +71,12 @@ public Void visitUpdate_stmt(SQLParser.Update_stmtContext ctx) {
6771

6872
@Override
6973
public Void visitTable_name(SQLParser.Table_nameContext ctx) {
70-
tables.add(ctx.getText());
74+
log.info("table {} from context {}", ctx.getText(), ctx.getParent().getClass().getSimpleName());
75+
if (ctx.getParent() instanceof SQLParser.Table_or_subqueryContext)
76+
tables.add(ctx.getText());
7177
return super.visitTable_name(ctx);
7278
}
79+
7380
});
7481

7582
return tables;

Diff for: opal-sql/src/main/test/org/obiba/opal/sql/SQLExtractorTest.java

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ public class SQLExtractorTest {
2121
@Test
2222
public void testExtractTables() throws SQLParserException {
2323
doExtractTables("select * from CNSIM1", "CNSIM1");
24+
doExtractTables("select tab.LAB_GLUC from CNSIM1 as tab", "CNSIM1");
2425
doExtractTables("select * from CNSIM1 union all select * from CNSIM2", "CNSIM1 | CNSIM2");
2526
doExtractTables("select count(LAB_HDL) as hdl_count, avg(LAB_HDL) as hdl_avg, GENDER as gender " +
2627
"from (select * from CNSIM1 union all select * from CNSIM2) " +

0 commit comments

Comments
 (0)