Skip to content

Commit 33ba5eb

Browse files
fix: TableNameFinder for Alter Table
- fixes #2062 Signed-off-by: Andreas Reichel <[email protected]> Signed-off-by: manticore-projects <[email protected]>
1 parent a879127 commit 33ba5eb

File tree

2 files changed

+24
-13
lines changed

2 files changed

+24
-13
lines changed

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

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -383,8 +383,8 @@ protected String extractTableName(Table table) {
383383
}
384384

385385
@Override
386-
public <S> Void visit(Table tableName, S context) {
387-
String tableWholeName = extractTableName(tableName);
386+
public <S> Void visit(Table table, S context) {
387+
String tableWholeName = extractTableName(table);
388388
if (!otherItemNames.contains(tableWholeName)) {
389389
tables.add(tableWholeName);
390390
}
@@ -1149,13 +1149,12 @@ public void visit(CreateView createView) {
11491149

11501150
@Override
11511151
public <S> Void visit(Alter alter, S context) {
1152-
throwUnsupported(alter);
1153-
return null;
1152+
return alter.getTable().accept(this, context);
11541153
}
11551154

11561155
@Override
11571156
public void visit(Alter alter) {
1158-
StatementVisitor.super.visit(alter);
1157+
alter.getTable().accept(this, null);
11591158
}
11601159

11611160
@Override

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

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -539,19 +539,19 @@ void testTableRenamingIssue2028() throws JSQLParserException {
539539
";";
540540
//@formatter:on
541541

542-
TablesNamesFinder finder = new TablesNamesFinder<Void>() {
542+
TablesNamesFinder<Void> finder = new TablesNamesFinder<>() {
543543
@Override
544-
public <S> Void visit(Table tableName, S context) {
545-
String schemaName = tableName.getSchemaName();
544+
public <S> Void visit(Table table, S context) {
545+
String schemaName = table.getSchemaName();
546546
if (schemaName != null && IGNORE_SCHEMAS.contains(schemaName.toLowerCase())) {
547-
return super.visit(tableName, context);
547+
return super.visit(table, context);
548548
}
549-
String originTableName = tableName.getName();
550-
tableName.setName(prefix + originTableName);
549+
String originTableName = table.getName();
550+
table.setName(prefix + originTableName);
551551
if (originTableName.startsWith("`")) {
552-
tableName.setName("`" + prefix + originTableName.replace("`", "") + "`");
552+
table.setName("`" + prefix + originTableName.replace("`", "") + "`");
553553
}
554-
return super.visit(tableName, context);
554+
return super.visit(table, context);
555555
}
556556
};
557557
finder.init(false);
@@ -561,5 +561,17 @@ public <S> Void visit(Table tableName, S context) {
561561

562562
TestUtils.assertStatementCanBeDeparsedAs(statement, expected, true);
563563
}
564+
565+
@Test
566+
void testAlterTableIssue2062() throws JSQLParserException {
567+
String sqlStr = "ALTER TABLE the_cool_db.the_table\n"
568+
+ " ADD test VARCHAR (40)\n"
569+
+ ";";
570+
Set<String> tables = TablesNamesFinder.findTablesOrOtherSources(sqlStr);
571+
assertThat(tables).containsExactlyInAnyOrder("the_cool_db.the_table");
572+
573+
tables = TablesNamesFinder.findTables(sqlStr);
574+
assertThat(tables).containsExactlyInAnyOrder("the_cool_db.the_table");
575+
}
564576
}
565577

0 commit comments

Comments
 (0)