Skip to content

Commit 082439a

Browse files
Set default value as null for BigDecimal (#782)
1 parent fcac148 commit 082439a

File tree

2 files changed

+32
-2
lines changed

2 files changed

+32
-2
lines changed

src/main/java/com/databricks/jdbc/api/impl/DatabricksResultSet.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -326,7 +326,7 @@ public BigDecimal getBigDecimal(int columnIndex, int scale) throws SQLException
326326
BigDecimal bd = converter.toBigDecimal(object);
327327
return applyScaleToBigDecimal(bd, columnIndex, scale);
328328
},
329-
() -> BigDecimal.ZERO.setScale(scale, RoundingMode.HALF_UP));
329+
() -> null);
330330
}
331331

332332
@Override

src/test/java/com/databricks/jdbc/api/impl/DatabricksResultSetTest.java

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -321,7 +321,7 @@ void testGetBigDecimal() throws SQLException {
321321
assertEquals(new BigDecimal("123.423123"), resultSet.getBigDecimal(2));
322322
// null object
323323
when(mockedExecutionResult.getObject(0)).thenReturn(null);
324-
assertEquals(BigDecimal.ZERO, resultSet.getBigDecimal(1));
324+
assertNull(resultSet.getBigDecimal(1));
325325
// Test with column label
326326
when(mockedExecutionResult.getObject(1)).thenReturn(new BigDecimal("123.423123"));
327327
when(mockedResultSetMetadata.getColumnNameIndex("columnLabel")).thenReturn(2);
@@ -1136,4 +1136,34 @@ void testGetUpdateCountForClosedResultSet() throws SQLException {
11361136
resultSet.close();
11371137
assertThrows(DatabricksSQLException.class, resultSet::getUpdateCount);
11381138
}
1139+
1140+
@Test
1141+
void testDefaultValuesForNullFields() throws SQLException {
1142+
DatabricksResultSet resultSet = getResultSet(StatementState.SUCCEEDED, null);
1143+
when(mockedExecutionResult.getObject(anyInt())).thenReturn(null);
1144+
1145+
// Object types should return null
1146+
assertNull(resultSet.getString(1));
1147+
assertNull(resultSet.getBigDecimal(1));
1148+
assertNull(resultSet.getDate(1));
1149+
assertNull(resultSet.getTime(1));
1150+
assertNull(resultSet.getTimestamp(1));
1151+
assertNull(resultSet.getBytes(1));
1152+
assertNull(resultSet.getAsciiStream(1));
1153+
assertNull(resultSet.getUnicodeStream(1));
1154+
assertNull(resultSet.getBinaryStream(1));
1155+
1156+
// Primitive types should return their default values
1157+
assertEquals(false, resultSet.getBoolean(1));
1158+
assertEquals((byte) 0, resultSet.getByte(1));
1159+
assertEquals((short) 0, resultSet.getShort(1));
1160+
assertEquals(0, resultSet.getInt(1));
1161+
assertEquals(0L, resultSet.getLong(1));
1162+
assertEquals(0.0f, resultSet.getFloat(1));
1163+
assertEquals(0.0d, resultSet.getDouble(1));
1164+
1165+
// Make sure wasNull returns true after getting a null value
1166+
resultSet.getString(1);
1167+
assertTrue(resultSet.wasNull());
1168+
}
11391169
}

0 commit comments

Comments
 (0)