Tom Lane wrote: > Bruce Momjian <pgman@candle.pha.pa.us> writes: > > Well, as I said in the patch email: > > > The reported problem is that dblink_open/dblink_close() (for cursor > > reads) do a BEGIN/COMMIT regardless of the transaction state of the > > remote connection. There was code in dblink.c to track the remote > > transaction state (rconn), but it was not being maintained or used. > > You should lose the remoteXactOpen flag entirely, in favor of just > testing PQtransactionStatus() on-the-fly when necessary. Simpler, > more reliable, not notably slower. > > With that change, the separate remoteConn struct could be dropped > altogether in favor of just using the PGconn pointer. This would > make things notationally simpler, and in fact perhaps allow undoing > the bulk of the edits in your patch. As-is I think the patch is > pretty risky to apply during beta.
The problem with not using rconn is that we are not saving the transaction status at the _start_ of the cursor open. If we don't do that, we have no way of knowing on close if _we_ opened the transaction or whether it was opened by the user. -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (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 3: Have you checked our extensive FAQ? http://www.postgresql.org/docs/faq