Re: Transaction aborts on syntax error. - Mailing list pgsql-hackers

From Simon Riggs
Subject Re: Transaction aborts on syntax error.
Date
Msg-id 003601c3f02d$c14428d0$8a7c893e@LaptopDellXP
Whole thread Raw
In response to Re: Transaction aborts on syntax error.  (Andrej Czapszys <czapszys@comcast.net>)
Responses Re: Transaction aborts on syntax error.  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
>Andrej Czapszys
> This is a major bug which greatly diminishes the confidence of my
> co-workers in postgresql. 

This is NOT a bug. Transactional robustness is important and PostgreSQL
has a very strict implementation in this area.


>Greg Stark
> Bruce Momjian <pgman@candle.pha.pa.us> writes:
> > Edwin S. Ramirez wrote:
> > > Is is possible to change the transaction behaviour not to abort
when a
> > > syntax error occurs.
> > >
> > > I've done some searches on the list, and have not found anything.
> >
> > No, we need nested transactions for that.  We are working on it or
at
> > least have a plan.
> 
> I'm not clear why nested transactions are necessary. Oracle certainly
> doesn't
> require dealing with nested transactions to get this, and its been a
long
> time
> but I don't recall MSSQL doing anything like that either. If I recall
> correctly they both do this by automatically by default.

Greg is correct I believe. DB2 also implements transactions in this way.

There are other databases which have historically implemented
Transaction control in this way, notably earlier versions of Teradata
RDBMS.

Most importantly, other references I have state that: the ANSI SQL-99
specification does require that if a statement errors then only that
statement's changes are rolled back. Control is returned to the calling
application to decide what to do. Some statement types are theoretically
retryable, such as those which have been evicted because of deadlock
errors, so this is a normal situation (on some rdbms!).

Having said that it's not a bug, I'm not sure exactly where it says it
behaves like this in the PostgreSQL manual. I've checked the ANSI SQL-99
unsupported features section and nothing springs out at me from there;
if anybody has a copy of the actual spec could they check on this, so we
can at least document carefully the current behaviour.

Archaeology aside :), I couldn't comment on whether implementing this in
PostgreSQL would require the equivalent of nested transaction behaviour.
If Bruce says so...

Also this makes me think there may be some investigation required into
XA two-phase commit behaviour regarding this point. Anybody?

Best regards, Simon Riggs




pgsql-hackers by date:

Previous
From: "Simon Riggs"
Date:
Subject: Summary of Changes since last release (7.4.1)
Next
From: Mike Mascari
Date:
Subject: Re: Summary of Changes since last release (7.4.1)