From: | "Peter Kovacs" <maxottovonstirlitz(at)gmail(dot)com> |
---|---|
To: | "Dave Cramer" <pg(at)fastcrypt(dot)com> |
Cc: | "Guillaume Cottenceau" <gc(at)mnc(dot)ch>, pgsql-jdbc(at)postgresql(dot)org |
Subject: | Re: setQueryTimeout problem !?!?! |
Date: | 2008-03-18 16:21:47 |
Message-ID: | b6e8f2e80803180921q7ddc7238o98fefdea81c736d@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-jdbc |
I wonder how "systematically" backward-compatibility and compliance
issues are (can be) dealt with in the driver. Just firing off a blind
shot: what about
1. drawing a base-line for non-compliant features by picking a driver
version released some suitable point in the past with which current
and future driver versions should be backward compatible and create a
list of non-compliant features of that baseline version;
2. introducing a driver option (a configuration property) for each
feature that has a compliant version to turn on the compliant
behavior;
3. having an "umbrella option" for turning on full currently possible
compliance?
Does this make sense? Or is a policy along similar lines already
implemented in the driver?
Thanks
Peter
On Tue, Mar 18, 2008 at 3:25 PM, Dave Cramer <pg(at)fastcrypt(dot)com> wrote:
>
>
> On 18-Mar-08, at 9:44 AM, Guillaume Cottenceau wrote:
>
> > Dave Cramer <pg 'at' fastcrypt.com> writes:
> >
> >>> See previous discussion that prompted this change at http://archives.postgresql.org/pgsql-jdbc/2008-01/msg00088.php
> >>
> >> Unfortunately the argument assumes that our users are developing new
> >> applications, not using the driver in an existing application. I
> >> think
> >> this change should be reversed. A considerable number of people will
> >> not be in a position to use an old driver with newer servers just to
> >> avoid this.
> >
> > That's really a matter of practice - how much do you afford to
> > break in order to fix previous problems or add features. Here,
> > the story is to fix an unexpected behaviour of the JDBC driver
> > (setQueryTimeout silently did nothing; it's *bad* to accept a
> > query timeout value but then not implement any timeout; a
> > correctly designed application will legally assume that the
> > queries will timeout after the configured amount of time, which
> > is not the case).
> >
> > Last year, we have upgraded from a 7.4 server to a 8.2 server. I
> > can tell you that it's quite incorrect to assume that the
> > application, running fine on 7.4, would magically run fine on 8.2
> > too - actually, quite a lot of SQL queries were "broken", because
> > of 8.2 not accepting UPDATE and DELETE FROM with implicit SELECT
> > on different tables. We've had to validate our application again,
> > and I think it's normal.
> >
> > That is to say, when the database is migrated from major
> > releases, the application (or the DB layer) sometimes needs
> > slight modifications, and it would be unreasonable deployment
> > practices to not validate the application again anyway.
>
>
> This is bound to be a controversial issue where there is no clear cut
> answer. Everyone who has an app that needs it to be silent will
> complain that it is now throwing an exception. Everyone who expects it
> to honour the spec will complain that it doesn't work. I doubt there
> are any drivers in existence which honour *all* of the spec.
>
> That being said, my opinion is that changing it to throw an exception
> will be more painful than reverting it and letting people who write
> new apps code around it.
>
> Dave
>
>
>
> --
> Sent via pgsql-jdbc mailing list (pgsql-jdbc(at)postgresql(dot)org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-jdbc
>
From | Date | Subject | |
---|---|---|---|
Next Message | Oliver Jowett | 2008-03-18 23:15:55 | Re: setQueryTimeout problem !?!?! |
Previous Message | Dave Cramer | 2008-03-18 15:28:39 | Re: Atomic operations? |