Re: problem with new autocommit config parameter and jdbc - Mailing list pgsql-hackers

From Stephan Szabo
Subject Re: problem with new autocommit config parameter and jdbc
Date
Msg-id 20020911054311.Q34783-100000@megazone23.bigpanda.com
Whole thread Raw
In response to Re: problem with new autocommit config parameter and jdbc  (snpe <snpe@snpe.co.yu>)
Responses Re: problem with new autocommit config parameter and jdbc  (snpe <snpe@snpe.co.yu>)
List pgsql-hackers
On Wed, 11 Sep 2002, snpe wrote:

> On Wednesday 11 September 2002 03:14 am, Stephan Szabo wrote:
> > On Wed, 11 Sep 2002, snpe wrote:
> > > On Wednesday 11 September 2002 02:09 am, Stephan Szabo wrote:
> > > > On Wed, 11 Sep 2002, snpe wrote:
> > > > > yes, we're going around in circles.
> > > > >
> > > > > Ok.I agreed (I think because Oracle do different)
> > > > > Transaction start
> > > > > I type invalid command
> > > > > I correct command
> > > > > I get error
> > > > >
> > > > > Why.If is it transactin, why I get error
> > > > > I want continue.
> > > > > I am see this error with JDeveloper (work with Oracle, DB2 an SQL
> > > > > Server)
> > > >
> > > > Right, that's a separate issue (I alluded to it earlier, but wasn't
> > > > sure that's what you were interested in).  PostgreSQL treats all errors
> > > > as unrecoverable.  It may be a little loose about immediately rolling
> > > > back due to the fact that historically autocommit was on and it seemed
> > > > better to not go into autocommit mode after the error.
> > > >
> > > > I doubt that 7.3 is going to change that behavior, but a case might be
> > > > made that when autocommit is off the error immediately causes a
> > > > rollback and new transaction will start upon the next statement (that
> > > > would normally start a transaction).
> > >
> > > Why rollback.This is error (typing error).Nothing happen.
> >
> > Postgresql currently has no real notion of a recoverable error.
> > In the case of the error you had, probably nothing bad would happen
> > if it continued, but what if that was a unique constraint violation?
> > Continuing would currently probably let you see the table in an
> > invalid state.
> >
> If decision (transaction or not) is after parser (before execute) this isn't
> problem.
> I don't know when postgresql make decision, but that is best after parser.
> I parser find error simple return error and nothing happen

Are you saying that it's okay for:
insert into nonexistant values (3);
and
insert into existant values (3);
where 3 is invalid for existant to work
differently?
I think that'd be tough to get past some people, but you might
want to write a proposal for why it should act that way. (Don't
expect anything for 7.3, but 7.4's devel will start sometime.)

> > > I think that we need clear set : what is start transaction ?
> > > I think that transaction start with change data in database
> > > (what don't change data this start not transaction.
> > > Oracle dot this and I think that is correct))
> >
> > I disagree because I think that two serializable select statements
> > in autocommit=off (without a commit or rollback of course) should
> > see the same snapshot.
> >
> Question ?
> All select in one transaction return same data - no matter if any change and
> commit data ?

It depends on the isolation level of the transaction I believe.
This sequence in read committed (in postgresql) and serializable give
different results.

T1: begin;
T1: select * from a;
T2: begin;
T2: insert into a values (3);
T2: commit;
T1: select * from a;

In serializable mode, you can't get "non-repeatable read" effects:
SQL-transaction T1 reads a row.  SQL-transaction T2 then modifies
or deletes that row and performs a COMMIT. If T1 then attempts to
reread the row, it may receive the modified value of discover that the
row has been deleted.



pgsql-hackers by date:

Previous
From: snpe
Date:
Subject: Re: problem with new autocommit config parameter and jdbc
Next
From: Michael Meskes
Date:
Subject: Re: 7.3beta and ecpg