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

From: Dave Cramer <pg(at)fastcrypt(dot)com>
To: Mark Rotteveel <mark(at)lawinegevaar(dot)nl>
Cc: pgsql-jdbc(at)lists(dot)postgresql(dot)org
Subject: Re: ResultSet.getObject(..., LocalTime.class) not working with Postgres timetz type
Date: 2019-04-16 00:20:03
Message-ID: CADK3HH+Z6M+sf_U6mfmuL+o1ZDhJKvaMMnBej2WC4HqSk5yQtw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

On Wed, 10 Apr 2019 at 08:43, Mark Rotteveel <mark(at)lawinegevaar(dot)nl> wrote:

> 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
>

The whole time, timestamp, timezone thing was not well thought out and is
the bane of all driver implementers existence...

Dave Cramer

davec(at)postgresintl(dot)com
www.postgresintl.com

In response to

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Mark Rotteveel 2019-04-16 16:46:58 Re: ResultSet.getObject(..., LocalTime.class) not working with Postgres timetz type
Previous Message Philippe Ebersohl 2019-04-12 20:03:21 Re: A method to asynchronously LISTEN ?