Re: undefined behaviour for sub-transactions? - Mailing list pgsql-general

From Tim Bunce
Subject Re: undefined behaviour for sub-transactions?
Date
Msg-id 20051130233555.GA13698@timac.local
Whole thread Raw
In response to Re: undefined behaviour for sub-transactions?  (Andrew Sullivan <ajs@crankycanuck.ca>)
Responses Re: undefined behaviour for sub-transactions?
List pgsql-general
On Wed, Nov 30, 2005 at 04:19:18PM -0500, Andrew Sullivan wrote:
> On Tue, Nov 29, 2005 at 07:44:05PM +0000, Tim Bunce wrote:
> > On Tue, Nov 29, 2005 at 10:50:01AM -0800, Tyler MacDonald wrote:
> > > PostgreSQL, doing a SELECT on a table that doesn't exist poisons the rest of
> > > the transaction, whereas under MySQL and SQLite2 the transaction is allowed
> > > to continue.
> >
> > PostgreSQL is non-standard (and inconvenient) in this respect.
>
> The inconvenience I'll grant, but the non-standard claim I think
> needs some justification.  When the database encounters an error in a
> transaction, it is supposed to report an error. An error in a
> transaction causes the whole transaction to fail: that's what the
> atomicity rule of ACID means, I think.

The fact that an individual statement has failed and returned an error
(such as a duplicate key on insert) does not mean that the whole
transaction has failed (ie been implicitly rolled back).

The application may choose to explicitly rollback after it is informed
that a statement has failed, or it could try an alternative action.

I believe that's the case for Oracle, DB2, and Ingres (showing my age)
but I don't have standards docs to hand - nor the time to read them :)

No doubt someone will quote the relevant parts. (And no doubt the
relevant parts will say "it depends" :)

Tim.

> I actually am sort of
> unconvinced that SQLite's transactions are real ones -- I just did
> some playing around with it, and it seems that any error allows you
> to commit anyway.  Certainly, MySQL's support of transactions is
> occasionally pretty dodgy, unless you use the strict mode.
>
> But it's worth knowing that in Pg 8.1 and later, you can wrap such
> things in a subtransaction and get out of it that way.
>
> A
>
> --
> Andrew Sullivan  | ajs@crankycanuck.ca
> I remember when computers were frustrating because they *did* exactly what
> you told them to.  That actually seems sort of quaint now.
>         --J.D. Baldwin

pgsql-general by date:

Previous
From: Philippe Ferreira
Date:
Subject: Switchover : WAL archiving and shutdown...
Next
From: &ru
Date:
Subject: number of dimensions of a multi-dimensional array