135135
136136/**
137137 * Find all used tables within an select statement.
138+ *
139+ * Override extractTableName method to modify the extracted table names (e.g. without schema).
138140 */
139141public class TablesNamesFinder implements SelectVisitor , FromItemVisitor , ExpressionVisitor , ItemsListVisitor , SelectItemVisitor , StatementVisitor {
140142
@@ -218,9 +220,18 @@ public void visit(PlainSelect plainSelect) {
218220 }
219221 }
220222
223+ /**
224+ * Override to adapt the tableName generation (e.g. with / without schema).
225+ * @param table
226+ * @return
227+ */
228+ protected String extractTableName (Table table ) {
229+ return table .getFullyQualifiedName ();
230+ }
231+
221232 @ Override
222233 public void visit (Table tableName ) {
223- String tableWholeName = tableName . getFullyQualifiedName ( );
234+ String tableWholeName = extractTableName ( tableName );
224235 if (!otherItemNames .contains (tableWholeName .toLowerCase ())
225236 && !tables .contains (tableWholeName )) {
226237 tables .add (tableWholeName );
@@ -618,7 +629,7 @@ public void visit(ValueListExpression valueList) {
618629
619630 @ Override
620631 public void visit (Delete delete ) {
621- tables . add (delete .getTable (). getName ());
632+ visit (delete .getTable ());
622633
623634 if (delete .getJoins () != null ) {
624635 for (Join join : delete .getJoins ()) {
@@ -634,7 +645,7 @@ public void visit(Delete delete) {
634645 @ Override
635646 public void visit (Update update ) {
636647 for (Table table : update .getTables ()) {
637- tables . add (table . getName () );
648+ visit (table );
638649 }
639650 if (update .getExpressions () != null ) {
640651 for (Expression expression : update .getExpressions ()) {
@@ -659,7 +670,7 @@ public void visit(Update update) {
659670
660671 @ Override
661672 public void visit (Insert insert ) {
662- tables . add (insert .getTable (). getName ());
673+ visit (insert .getTable ());
663674 if (insert .getItemsList () != null ) {
664675 insert .getItemsList ().accept (this );
665676 }
@@ -670,7 +681,7 @@ public void visit(Insert insert) {
670681
671682 @ Override
672683 public void visit (Replace replace ) {
673- tables . add (replace .getTable (). getName ());
684+ visit (replace .getTable ());
674685 if (replace .getExpressions () != null ) {
675686 for (Expression expression : replace .getExpressions ()) {
676687 expression .accept (this );
@@ -698,7 +709,7 @@ public void visit(CreateIndex createIndex) {
698709
699710 @ Override
700711 public void visit (CreateTable create ) {
701- tables . add (create .getTable (). getFullyQualifiedName ());
712+ visit (create .getTable ());
702713 if (create .getSelect () != null ) {
703714 create .getSelect ().accept (this );
704715 }
@@ -743,7 +754,7 @@ public void visit(HexValue hexValue) {
743754
744755 @ Override
745756 public void visit (Merge merge ) {
746- tables . add (merge .getTable (). getName ());
757+ visit (merge .getTable ());
747758 if (merge .getUsingTable () != null ) {
748759 merge .getUsingTable ().accept (this );
749760 } else if (merge .getUsingSelect () != null ) {
@@ -780,7 +791,7 @@ public void visit(Commit commit) {
780791
781792 @ Override
782793 public void visit (Upsert upsert ) {
783- tables . add (upsert .getTable (). getName ());
794+ visit (upsert .getTable ());
784795 if (upsert .getItemsList () != null ) {
785796 upsert .getItemsList ().accept (this );
786797 }
0 commit comments