From 1a4c7251634dca6f50f31b7f7daf9108530c77bc Mon Sep 17 00:00:00 2001 From: Martin Desharnais Date: Thu, 20 Oct 2016 16:42:09 +0200 Subject: [PATCH] Allow null when extracting java.time.* classes from ResultSet --- src/com/mysql/jdbc/JDBC42ResultSet.java | 37 ++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/src/com/mysql/jdbc/JDBC42ResultSet.java b/src/com/mysql/jdbc/JDBC42ResultSet.java index 88d6d3c..ba2c215 100644 --- a/src/com/mysql/jdbc/JDBC42ResultSet.java +++ b/src/com/mysql/jdbc/JDBC42ResultSet.java @@ -27,6 +27,8 @@ import java.sql.SQLException; import java.sql.SQLType; import java.sql.Struct; +import java.sql.Time; +import java.sql.Timestamp; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; @@ -62,20 +64,45 @@ public JDBC42ResultSet(String catalog, Field[] fields, RowData tuples, MySQLConn } if (type.equals(LocalDate.class)) { - return type.cast(getDate(columnIndex).toLocalDate()); + final Date date = getDate(columnIndex); + if (date == null) { + return null; + } else { + return type.cast(date.toLocalDate()); + } } else if (type.equals(LocalDateTime.class)) { - return type.cast(getTimestamp(columnIndex).toLocalDateTime()); + final Timestamp timestamp = getTimestamp(columnIndex); + if (timestamp == null) { + return null; + } else { + return type.cast(timestamp.toLocalDateTime()); + } } else if (type.equals(LocalTime.class)) { - return type.cast(getTime(columnIndex).toLocalTime()); + final Time time = getTime(columnIndex); + if (time == null) { + return null; + } else { + return type.cast(time.toLocalTime()); + } } else if (type.equals(OffsetDateTime.class)) { try { - return type.cast(OffsetDateTime.parse(getString(columnIndex))); + final String string = getString(columnIndex) + if (string == null) { + return null; + } else { + return type.cast(OffsetDateTime.parse(string)); + } } catch (DateTimeParseException e) { // Let it continue and try by object deserialization. } } else if (type.equals(OffsetTime.class)) { try { - return type.cast(OffsetTime.parse(getString(columnIndex))); + final String string = getString(columnIndex) + if (string == null) { + return null; + } else { + return type.cast(OffsetTime.parse(string)); + } } catch (DateTimeParseException e) { // Let it continue and try by object deserialization. }