@@ -1275,6 +1275,54 @@ public void testValidGetObjectCalls() throws Exception {
12751275 assertTrue (results .getObject ("test_boolean" ) instanceof Boolean );
12761276 });
12771277 }
1278+
1279+ public void testGettingNullValues () throws Exception {
1280+ String query = "SELECT CAST(NULL AS BOOLEAN) b, CAST(NULL AS TINYINT) t, CAST(NULL AS SMALLINT) s, CAST(NULL AS INTEGER) i,"
1281+ + "CAST(NULL AS BIGINT) bi, CAST(NULL AS DOUBLE) d, CAST(NULL AS REAL) r, CAST(NULL AS FLOAT) f, CAST(NULL AS VARCHAR) v,"
1282+ + "CAST(NULL AS DATE) dt, CAST(NULL AS TIME) tm, CAST(NULL AS TIMESTAMP) ts" ;
1283+ doWithQuery (query , (results ) -> {
1284+ results .next ();
1285+
1286+ assertNull (results .getObject ("b" ));
1287+ assertFalse (results .getBoolean ("b" ));
1288+
1289+ assertNull (results .getObject ("t" ));
1290+ assertEquals (0 , results .getByte ("t" ));
1291+
1292+ assertNull (results .getObject ("s" ));
1293+ assertEquals (0 , results .getShort ("s" ));
1294+
1295+ assertNull (results .getObject ("i" ));
1296+ assertEquals (0 , results .getInt ("i" ));
1297+
1298+ assertNull (results .getObject ("bi" ));
1299+ assertEquals (0 , results .getLong ("bi" ));
1300+
1301+ assertNull (results .getObject ("d" ));
1302+ assertEquals (0.0d , results .getDouble ("d" ), 0d );
1303+
1304+ assertNull (results .getObject ("r" ));
1305+ assertEquals (0.0f , results .getFloat ("r" ), 0f );
1306+
1307+ assertNull (results .getObject ("f" ));
1308+ assertEquals (0.0f , results .getFloat ("f" ), 0f );
1309+
1310+ assertNull (results .getObject ("v" ));
1311+ assertNull (results .getString ("v" ));
1312+
1313+ assertNull (results .getObject ("dt" ));
1314+ assertNull (results .getDate ("dt" ));
1315+ assertNull (results .getDate ("dt" , randomCalendar ()));
1316+
1317+ assertNull (results .getObject ("tm" ));
1318+ assertNull (results .getTime ("tm" ));
1319+ assertNull (results .getTime ("tm" , randomCalendar ()));
1320+
1321+ assertNull (results .getObject ("ts" ));
1322+ assertNull (results .getTimestamp ("ts" ));
1323+ assertNull (results .getTimestamp ("ts" , randomCalendar ()));
1324+ });
1325+ }
12781326
12791327 /*
12801328 * Checks StackOverflowError fix for https://github.com/elastic/elasticsearch/pull/31735
@@ -1841,4 +1889,8 @@ private String asDateString(long millis) {
18411889 private ZoneId getZoneFromOffset (Long randomLongDate ) {
18421890 return ZoneId .of (ZoneId .of (timeZoneId ).getRules ().getOffset (Instant .ofEpochMilli (randomLongDate )).toString ());
18431891 }
1892+
1893+ private Calendar randomCalendar () {
1894+ return Calendar .getInstance (randomTimeZone (), Locale .ROOT );
1895+ }
18441896}
0 commit comments