Tom Lane wrote:
> Jonathan Beit-Aharon <jbeitaharon@intrusic.com> writes:
> > if (!conn)<br>
> >
DBLINK_CONN_NOT_AVAIL;<br>
>
> Could we see this in a less broken format?
Here is the patch in text format.
--
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
--- dblink.c Sat Jan 1 00:43:05 2005
+++
/home/jbeitaharon/dev/third/postgreSQL/contrib/dblink/dblink.c
Thu Sep 22 16:10:20 2005
@@ -329,12 +329,16 @@
if (!conn)
DBLINK_CONN_NOT_AVAIL;
+
+ if (rcon)
+ rcon->remoteTrFlag = (PQtransactionStatus(conn) !=
PQTRANS_IDLE);
- res = PQexec(conn, "BEGIN");
- if (PQresultStatus(res) != PGRES_COMMAND_OK)
- DBLINK_RES_INTERNALERROR("begin error");
-
- PQclear(res);
+ if ((!rcon) || (!(rcon->remoteTrFlag))) {
+ res = PQexec(conn, "BEGIN");
+ if (PQresultStatus(res) != PGRES_COMMAND_OK)
+ DBLINK_RES_INTERNALERROR("begin error");
+ PQclear(res);
+ }
appendStringInfo(str, "DECLARE %s CURSOR FOR %s", curname,
sql);
res = PQexec(conn, str->data);
@@ -424,12 +428,13 @@
PQclear(res);
- /* commit the transaction */
- res = PQexec(conn, "COMMIT");
- if (PQresultStatus(res) != PGRES_COMMAND_OK)
- DBLINK_RES_INTERNALERROR("commit error");
-
- PQclear(res);
+ if ((!rcon) || (!(rcon->remoteTrFlag))) {
+ /* commit the transaction */
+ res = PQexec(conn, "COMMIT");
+ if (PQresultStatus(res) != PGRES_COMMAND_OK)
+ DBLINK_RES_INTERNALERROR("commit error");
+ PQclear(res);
+ }
PG_RETURN_TEXT_P(GET_TEXT("OK"));
}