Skip to content

Commit 9e967a4

Browse files
authored
table type empty string fix (#429)
1 parent 01d5645 commit 9e967a4

File tree

3 files changed

+30
-1
lines changed

3 files changed

+30
-1
lines changed

src/main/java/com/databricks/jdbc/common/MetadataResultConstants.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public class MetadataResultConstants {
3737

3838
public static final ResultColumn TABLE_NAME_COLUMN =
3939
new ResultColumn("TABLE_NAME", "tableName", Types.VARCHAR);
40-
private static final ResultColumn TABLE_TYPE_COLUMN =
40+
public static final ResultColumn TABLE_TYPE_COLUMN =
4141
new ResultColumn("TABLE_TYPE", "tableType", Types.VARCHAR);
4242
public static final ResultColumn REMARKS_COLUMN =
4343
new ResultColumn("REMARKS", "remarks", Types.VARCHAR);

src/main/java/com/databricks/jdbc/dbclient/impl/common/MetadataResultSetBuilder.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,12 @@ static List<List<Object>> getRows(ResultSet resultSet, List<ResultColumn> column
131131
object = null;
132132
}
133133
}
134+
135+
if (column.getColumnName().equals(TABLE_TYPE_COLUMN.getColumnName())
136+
&& (object == null || object.equals(""))) {
137+
object = "TABLE";
138+
}
139+
134140
// Handle TYPE_NAME separately for potential modifications
135141
if (column.getColumnName().equals(TYPE_NAME_COLUMN.getColumnName())) {
136142
object = stripTypeName((String) object);

src/test/java/com/databricks/jdbc/dbclient/impl/common/MetadataResultSetBuilderTest.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,29 @@ private static Stream<Arguments> getBufferLengthArguments() {
110110
Arguments.of("TEXT", 10, 255));
111111
}
112112

113+
private static Stream<Arguments> getRowsTableTypeColumnArguments() {
114+
return Stream.of(
115+
Arguments.of("TABLE", "TABLE"),
116+
Arguments.of("VIEW", "VIEW"),
117+
Arguments.of("SYSTEM TABLE", "SYSTEM TABLE"),
118+
Arguments.of("", "TABLE"));
119+
}
120+
121+
@ParameterizedTest
122+
@MethodSource("getRowsTableTypeColumnArguments")
123+
void testGetRowsHandlesTableTypeColumn(String tableTypeValue, String expectedTableType)
124+
throws SQLException {
125+
ResultSet resultSet = mock(ResultSet.class);
126+
Mockito.when(resultSet.next()).thenReturn(true).thenReturn(false);
127+
Mockito.when(resultSet.getObject(TABLE_TYPE_COLUMN.getResultSetColumnName()))
128+
.thenReturn(tableTypeValue);
129+
130+
List<List<Object>> rows = MetadataResultSetBuilder.getRows(resultSet, TABLE_COLUMNS);
131+
132+
assertEquals(expectedTableType, rows.get(0).get(3));
133+
assertEquals(String.class, rows.get(0).get(3).getClass());
134+
}
135+
113136
private static Stream<Arguments> getRowsNullableColumnArguments() {
114137
return Stream.of(Arguments.of("true", 1), Arguments.of("false", 0), Arguments.of(null, 1));
115138
}

0 commit comments

Comments
 (0)