Re: Continue transactions after errors in psql
От | Robert Treat |
---|---|
Тема | Re: Continue transactions after errors in psql |
Дата | |
Msg-id | 200501280148.44060.xzilla@users.sourceforge.net обсуждение исходный текст |
Ответ на | Continue transactions after errors in psql (Greg Sabino Mullane <greg@turnstep.com>) |
Ответы |
Re: Continue transactions after errors in psql
Re: Continue transactions after errors in psql |
Список | pgsql-patches |
On Tuesday 25 January 2005 22:07, Greg Sabino Mullane wrote: > Attached is a patch that takes advantage of savepoints to enable > transactions to continue even after errors in psql. The name of it > is \reseterror, and it is off by default. It's backwards compatible, > and allows things like this to work on 8.0 and up servers: > > \reseterror > BEGIN; > DELETE FROM foobar; > INSERT INTO foobar(a) VALUES(1); > ISNER INTO foobar(a) VALUES(2); > INSERT INTO foobar(a) VALUES(3); > COMMIT; > > Doing a SELECT(a) FROM foobar will show two values, 1 and 3. This > is a great help for those of us that tend to type typos into our > psql session, and end up cursing as we have to restart our current > transaction. :) I've been testing this patch and found the following bug: test=# \reseterror Reset error is on. test=# begin; BEGIN test=# select * from t; c --- 1 (1 row) test=# delete from t; DELETE 1 test=# select * from tt; ERROR: relation "tt" does not exist ERROR: relation "tt" does not exist test=# select * from t; c --- (0 rows) test=# commit; COMMIT ERROR: RELEASE SAVEPOINT may only be used in transaction blocks ERROR: RELEASE SAVEPOINT may only be used in transaction blocks I've attached a revised patch which fixes the problem, however I'm sure there is a better way. Thanks to Neil for putting up with me on irc :-) -- Robert Treat Build A Brighter Lamp :: Linux Apache {middleware} PostgreSQL
Вложения
В списке pgsql-patches по дате отправления: