Re: Patching dblink.c to avoid warning about open transaction

Поиск
Список
Период
Сортировка
От Bruce Momjian
Тема Re: Patching dblink.c to avoid warning about open transaction
Дата
Msg-id 200509232139.j8NLdFW21624@candle.pha.pa.us
обсуждение исходный текст
Ответ на Re: Patching dblink.c to avoid warning about open transaction  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: Patching dblink.c to avoid warning about open transaction  (Bruce Momjian <pgman@candle.pha.pa.us>)
Список pgsql-hackers
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"));
 }

В списке pgsql-hackers по дате отправления:

Предыдущее
От: "Dann Corbit"
Дата:
Сообщение: Re: [PERFORM] Releasing memory during External sorting?
Следующее
От: Tom Lane
Дата:
Сообщение: Re: 64-bit API for large objects