On Aug 15, 2011, at 5:46 PM, Joachim Wieland wrote:
> On Mon, Aug 15, 2011 at 6:09 PM, Jim Nasby <j...@nasby.net> wrote:
>> I suspect that all the other cases of BEGIN failing would be syntax errors, 
>> so
>> you would immediately know in testing that something was wrong. A missing 
>> file
>> is definitely not a syntax error, so we can't really depend on user testing 
>> to ensure
>> this is handled correctly. IMO, that makes it critical that that error puts 
>> us in an
>> aborted transaction.
> 
> Why can we not just require the user to verify if his BEGIN query
> failed or succeeded?
> Is that really too much to ask for?

It's something else that you have to remember to get right. psql, for example, 
will blindly continue on unless you remembered to tell it to exit on an error.

Also, an invalid transaction seems to be the result of least surprise... if you 
cared enough to begin a transaction, you're going to expect that either 
everything between that and the COMMIT succeeds or fails, not something 
in-between.

> Also see what Robert wrote about proxies in between that keep track of
> the transaction
> state. Consider they see a BEGIN query that fails. How would they know
> if the session
> is now in an aborted transaction or not in a transaction at all?

AFAIK a proxy can tell if a transaction is in progress or not via libpq. 
Worst-case, it just needs to send an extra ROLLBACK.
--
Jim C. Nasby, Database Architect                   j...@nasby.net
512.569.9461 (cell)                         http://jim.nasby.net



-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to