ResultSet.getObject(..., LocalTime.class) not working with Postgres timetz type

Thomas Kellerer <[email protected]> Sat, 6 Apr 2019 09:59:13 +0200
Newsgroups gmane.comp.db.postgresql.jdbc
Message-ID <[email protected]>
Retrieving the value of a timetz column fails when using getObject(, LocalTime.class)

Consider the following code:

   Connection con = DriverManager.getConnection(...);
   Statement stmt = con.createStatement();
   ResultSet rs = stmt.executeQuery("select current_time");
   rs.next();
   LocalTime lt = rs.getObject(1, LocalTime.class);

The above fails with:

org.postgresql.util.PSQLException: Bad value for type timestamp/date/time: {1}
	at org.postgresql.jdbc.TimestampUtils.toLocalTime(TimestampUtils.java:433)
	at org.postgresql.jdbc.PgResultSet.getLocalTime(PgResultSet.java:563)
	at org.postgresql.jdbc.PgResultSet.getObject(PgResultSet.java:3391)
	at TestLocalTime.main(TestLocalTime.java:23)
Caused by: java.time.format.DateTimeParseException: Text '09:48:19.747249+02' could not be parsed, unparsed text found at index 15
	at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1952)
	at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851)
	at java.time.LocalTime.parse(LocalTime.java:441)
	at java.time.LocalTime.parse(LocalTime.java:426)
	at org.postgresql.jdbc.TimestampUtils.toLocalTime(TimestampUtils.java:430)

getObject(1, OffsetTime.class) fails with "conversion to class java.time.OffsetTime from 92 not supported"

I am not sure if this is the same as: https://github.com/pgjdbc/pgjdbc/issues/1048
If it's not the same root cause, should I create an issue?

Using "select localtime" instead, works just fine


Regards
Thomas