Skip to content

Commit 5945677

Browse files
authored
Add table type filtering (#189)
1 parent 09a97cc commit 5945677

File tree

4 files changed

+19
-5
lines changed

4 files changed

+19
-5
lines changed

src/main/java/com/databricks/jdbc/client/impl/helper/MetadataResultConstants.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import java.util.List;
66

77
public class MetadataResultConstants {
8+
public static final String[] DEFAULT_TABLE_TYPES = {"TABLE", "VIEW", "SYSTEM TABLE"};
89
private static final ResultColumn CATALOG_COLUMN =
910
new ResultColumn("TABLE_CAT", "catalogName", Types.VARCHAR);
1011
private static final ResultColumn TYPE_CATALOG_COLUMN =

src/main/java/com/databricks/jdbc/client/impl/helper/MetadataResultSetBuilder.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,13 @@ public static DatabricksResultSet getSchemasResult(ResultSet resultSet) throws S
3535
return buildResultSet(SCHEMA_COLUMNS, rows, METADATA_STATEMENT_ID);
3636
}
3737

38-
public static DatabricksResultSet getTablesResult(ResultSet resultSet) throws SQLException {
39-
List<List<Object>> rows = getRows(resultSet, TABLE_COLUMNS);
38+
public static DatabricksResultSet getTablesResult(ResultSet resultSet, String[] tableTypes)
39+
throws SQLException {
40+
List<String> allowedTableTypes = List.of(tableTypes);
41+
List<List<Object>> rows =
42+
getRows(resultSet, TABLE_COLUMNS).stream()
43+
.filter(row -> allowedTableTypes.contains(row.get(3))) // Filtering based on table type
44+
.collect(Collectors.toList());
4045
return buildResultSet(TABLE_COLUMNS, rows, GET_TABLES_STATEMENT_ID);
4146
}
4247

src/main/java/com/databricks/jdbc/client/impl/sdk/DatabricksNewMetadataSdkClient.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.databricks.jdbc.client.impl.sdk;
22

3+
import static com.databricks.jdbc.client.impl.helper.MetadataResultConstants.DEFAULT_TABLE_TYPES;
34
import static com.databricks.jdbc.client.impl.sdk.ResultConstants.TYPE_INFO_RESULT;
45

56
import com.databricks.jdbc.client.DatabricksMetadataClient;
@@ -62,12 +63,16 @@ public DatabricksResultSet listTables(
6263
String tableNamePattern,
6364
String[] tableTypes)
6465
throws SQLException {
66+
tableTypes =
67+
Optional.ofNullable(tableTypes)
68+
.filter(types -> types.length > 0)
69+
.orElse(DEFAULT_TABLE_TYPES);
6570
CommandBuilder commandBuilder =
6671
new CommandBuilder(catalog, session)
6772
.setSchemaPattern(schemaNamePattern)
6873
.setTablePattern(tableNamePattern);
6974
String SQL = commandBuilder.getSQLString(CommandName.LIST_TABLES);
70-
return MetadataResultSetBuilder.getTablesResult(getResultSet(SQL, session));
75+
return MetadataResultSetBuilder.getTablesResult(getResultSet(SQL, session), tableTypes);
7176
}
7277

7378
@Override

src/test/java/com/databricks/jdbc/client/impl/DatabricksNewMetadataSdkClientTest.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -202,8 +202,11 @@ void testListTables(
202202
.thenReturn(mockedResultSet);
203203
when(mockedResultSet.next()).thenReturn(true, false);
204204
for (ResultColumn resultColumn : TABLE_COLUMNS) {
205-
when(mockedResultSet.getObject(resultColumn.getResultSetColumnName()))
206-
.thenReturn(TEST_COLUMN);
205+
if (resultColumn == TABLE_COLUMNS.get(3)) {
206+
when(mockedResultSet.getObject(resultColumn.getResultSetColumnName())).thenReturn("TABLE");
207+
} else
208+
when(mockedResultSet.getObject(resultColumn.getResultSetColumnName()))
209+
.thenReturn(TEST_COLUMN);
207210
}
208211
DatabricksResultSet actualResult =
209212
metadataClient.listTables(session, catalog, schema, table, null);

0 commit comments

Comments
 (0)