This has already been implemented in CVS as a psql \set variable: ON_ERROR_ROLLBACK = 'interactive' and will appear in 8.1. --------------------------------------------------------------------------- Michael Paesold wrote: > Tom Lane wrote: > > > "Michael Paesold" <mpaesold@xxxxxx> writes: > > > On the other hand, the scenario of a psql option (read: I have > > > given up the idea of a backend implementation) to rollback only > > > last statement on error is quite different. > > > > Sure (and we already have one for autocommit). But I thought you were > > asking about a backend implementation. > > I have implemented what I have suggested for psql. I have attached a first > patch for review here, because I have a few questions. Also I want to make > sure the whole thing is reasonable. > > I have named the option "IMPLICIT_SAVEPOINTS", because that's what it is. If > someone has a better name that would describe the purpose of the feature, I > am happy to change it. > > The feature is activated, if > * \set IMPLICIT_SAVEPOINTS 'on' > * connection is in "idle in transaction" state > * psql session is interactive > > The code executes an implicit "SAVEPOINT pg_internal_psql" in > common.c/SendQuery to which it will try to rollback to, if the executed > query fails. > > Open questions: > * Should psql print a notice in the case of that rollback? > Something like "Rollback of last statement successful."? > > * What is currently missing, is a detection of \i ... obviously this feature > should not be used for each query in \i. Perhaps only for the whole \i > command? > So what should I do to detect \i? > Add an extra argument to MainLoop, SendQuery and process_file()? (many > changes) > Add a global variable in common.c/h (e.g. bool > deactivate_implicit_savepoints) that can be used in process_file to > temporarily deactivate the code path? > (more local changes, but rather a hack imho) > > Please have a look at the patch and comment. > > Best Regards, > Michael Paesold [ Attachment, skipping... ] > > ---------------------------(end of broadcast)--------------------------- > TIP 9: the planner will ignore your desire to choose an index scan if your > joining column's datatypes do not match -- Bruce Momjian | http://candle.pha.pa.us pgman@xxxxxxxxxxxxxxxx | (610) 359-1001 + If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square, Pennsylvania 19073 ---------------------------(end of broadcast)--------------------------- TIP 9: the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match