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

From: Mark Rotteveel <mark(at)lawinegevaar(dot)nl>
To: pgsql-jdbc(at)lists(dot)postgresql(dot)org
Subject: Re: ResultSet.getObject(..., LocalTime.class) not working with Postgres timetz type
Date: 2019-04-10 12:43:32
Message-ID: 4abc4f90-f704-203b-5da1-215eaf4cf252@lawinegevaar.nl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

On 9-4-2019 13:20, pm(at)netcetera(dot)ch wrote:
> On 06.04.19 19:40, Thomas Kellerer wrote:
>> I think the driver should then support getObject(1, OffsetTime.class),
>> shouldn't it?
>
> It was originally not implemented out of laziness, somewhat justified by
> the fact that the documentation recommends against using the type saying
> it's only present because of legacy and standards compliance reasons.
> From a functional point of view there is nothing wrong with
> implementing it. Again, in practice it's hard to find a use for the type.
>
> Yes the type should be Types.TIME_WITH_TIMEZONE. However in #695 [2] it
> was decided that following the JDBC specification would break frameworks
> and it would be better to instead go against the JDBC specification and
> instead having each framework implement driver specific hacks.

This decision will still mean that frameworks will have to implement
driver-specific hacks though: That is those tools or frameworks that do
follow the guidance of the JDBC 4.2 or higher specification and expect
to be able to obtain the LocalXXX types here.

If you declare that a column is Types.TIME(STAMP), then you should also
be able to return java.time.LocalTime, java.time.LocalDateTime (and of
course java.sql.Time/java.sql.Timestamp).

Declaring Types.TIME(STAMP), but not supporting java.time.LocalXXX is in
my opinion a worse 'violation' of the JDBC specification compared to
declaring Types.TIME(STAMP) instead of Types.TIME(STAMP)_WITH_TIMEZONE.
By saying you are Types.TIMESTAMP, you implicitly promise to deliver the
type conversions defined in Appendix B of JDBC 4.3 (B.4/B.5). Supporting
java.time.OffsetDateTime / java.time.OffsetTime on Types.TIME(STAMP) is
then just a non-standard extension.

That of course leaves the problem of ambiguity what local means in the
context of a type with time zone information.

Mark
--
Mark Rotteveel

In response to

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Dave Cramer 2019-04-10 14:20:39 Re: A method to asynchronously LISTEN ?
Previous Message Mark Rotteveel 2019-04-10 12:28:28 Re: Confusion regarding autocommit