| From: | Ryan VanderBijl <rvbijl-pgsql(at)vanderbijlfamily(dot)com> |
|---|---|
| To: | pgsql-general(at)postgresql(dot)org |
| Subject: | commit errors |
| Date: | 2003-02-03 05:21:00 |
| Message-ID: | 20030203052100.GA2934@vanderbijlfamily.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-general |
Hello,
Within an application, if I receive an error executing 'BEGIN',
'ROLLBACK', or 'COMMIT', what should I do?
What is the "official" recommendation, if any?
What do you (anyone) do?
I'm especially interested in serializable transactions, if that
makes a difference.
Yes, the documentation says I should either get 'COMMIT' back,
or 'WARNING: COMMIT: no transaciton in progress'. However,
what if, for example, the tcp/ip connection drops at that
point? What should my application do?
Currently my code looks something like:
bool function_to_do_whatever() {
while(1) {
if (!begin_serializable_transaction()) {
log("aborting: begin transaction failure");
return false;
}
if (!execute( ... )) {
if (!rollback_transaction()) {
log("aborting: error rollback transaction");
return false;
}
log("retrying: error executing ...");
continue;
}
if (!commit_transaction()) {
log("aborting: commit transaction failure");
return false;
}
break;
}
log("database transaction commited.");
return true;
}
--
Ryan VanderBijl rvbijl(at)vanderbijlfamily(dot)com
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Tom Lane | 2003-02-03 05:22:22 | Re: Query plan question, and a memory leak |
| Previous Message | Greg Stark | 2003-02-03 04:38:43 | Re: Query plan question, and a memory leak |