Skip to content

Commit 53ddb7f

Browse files
committed
Added tests for DECIMAL_DIGITS in getColumns()
1 parent 6a404d1 commit 53ddb7f

2 files changed

Lines changed: 33 additions & 2 deletions

File tree

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

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -212,8 +212,16 @@ List<List<Object>> getRows(
212212
} else {
213213
object = "NO";
214214
}
215-
} else if (mappedColumn.getColumnName().equals(DECIMAL_DIGITS_COLUMN.getColumnName())
216-
|| mappedColumn.getColumnName().equals(NUM_PREC_RADIX_COLUMN.getColumnName())) {
215+
} else if (mappedColumn
216+
.getColumnName()
217+
.equals(DECIMAL_DIGITS_COLUMN.getColumnName())) {
218+
if (object == null) {
219+
object = 0;
220+
}
221+
object = getScale(stripBaseTypeName(typeVal), (int) object);
222+
} else if (mappedColumn
223+
.getColumnName()
224+
.equals(NUM_PREC_RADIX_COLUMN.getColumnName())) {
217225
if (object == null) {
218226
object = 0;
219227
}

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
@@ -531,4 +531,27 @@ void testComplexTypesReturnActualCodesWhenSupportEnabled() throws SQLException {
531531
assertEquals(1111, variantRow.get(0));
532532
assertEquals(1111, variantRow.get(2));
533533
}
534+
535+
@Test
536+
void testDecimalDigitsColumnInGetThriftRows() {
537+
List<ResultColumn> columns = Arrays.asList(COLUMN_TYPE_COLUMN, DECIMAL_DIGITS_COLUMN);
538+
539+
List<List<Object>> rows =
540+
Arrays.asList(
541+
Arrays.asList("DECIMAL(10,2)", 2),
542+
Arrays.asList("TIMESTAMP", 6),
543+
Arrays.asList("INT", 0),
544+
Arrays.asList("VARCHAR(100)", 0),
545+
Arrays.asList("DECIMAL(15,5)", 5),
546+
Arrays.asList("TIMESTAMP_NTZ", 6));
547+
548+
List<List<Object>> updatedRows = metadataResultSetBuilder.getThriftRows(rows, columns);
549+
550+
assertEquals(2, updatedRows.get(0).get(1), "DECIMAL(10,2) should have scale 2");
551+
assertEquals(9, updatedRows.get(1).get(1), "TIMESTAMP should have scale 9");
552+
assertEquals(0, updatedRows.get(2).get(1), "INT should have scale 0");
553+
assertEquals(0, updatedRows.get(3).get(1), "VARCHAR should have scale 0");
554+
assertEquals(5, updatedRows.get(4).get(1), "DECIMAL(15,5) should have scale 5");
555+
assertEquals(9, updatedRows.get(5).get(1), "TIMESTAMP_NTZ should have scale 9");
556+
}
534557
}

0 commit comments

Comments
 (0)