Re: Vote totals for SET in aborted transaction - Mailing list pgsql-hackers

From Scott Marlowe
Subject Re: Vote totals for SET in aborted transaction
Date
Msg-id Pine.LNX.4.33.0204290855570.19728-100000@css120.ihs.com
Whole thread Raw
In response to Re: Vote totals for SET in aborted transaction  (Philip Warner <pjw@rhyme.com.au>)
Responses Re: Vote totals for SET in aborted transaction  (Hannu Krosing <hannu@tm.ee>)
Re: Vote totals for SET in aborted transaction  (Tom Lane <tgl@sss.pgh.pa.us>)
Re: Vote totals for SET in aborted transaction  ("Marc G. Fournier" <scrappy@hub.org>)
List pgsql-hackers
I've been thinking this over and over, and it seems to me, that the way 
SETS in transactions SHOULD work is that they are all rolled back, period, 
whether the transaction successfully completes OR NOT.

Transactions ensure that either all or none of the DATA in the database is 
changed.  That nature is good.  But does it make sense to apply 
transactional mechanics to SETtings?  I don't think it does.

SETtings aren't data operators, so they don't need to be rolled back / 
committed so to speak.  Their purpose is to affect the way things like the 
database works in a more overreaching sense, not the data underneath it.

For this reason, I propose that a transaction should "inherit" its 
environment, and that all changes EXCEPT for those affecting tuples should 
be rolled back after completion, leaving the environment the way we found 
it.  If you need the environment changed, do it OUTSIDE the transaction.

I would argue that the rollback on failure / don't rollback on completion 
is actually the worse possible way to handle this, because, again, this 
isn't about data, it's about environment.  And I don't think things inside 
a transaction should be mucking with the environment around them when 
they're done.

But that's just my opinion, I could be wrong.  Scott Marlowe



pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: MetaData (size of datatype)
Next
From: Olivier PRENANT
Date:
Subject: clarification of timestamp