]> granicus.if.org Git - postgresql/commitdiff
Get rid of extraneous newline in PQendcopy error output (was causing
authorTom Lane <tgl@sss.pgh.pa.us>
Sat, 21 Jun 2003 23:25:38 +0000 (23:25 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sat, 21 Jun 2003 23:25:38 +0000 (23:25 +0000)
regression test diffs...).

src/interfaces/libpq/fe-protocol2.c
src/interfaces/libpq/fe-protocol3.c

index 6b909334079d0ab60c994d95df6c004fa47d0986..2a15e19e1d58e22bed4aee15c1f361b35a52b975 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-protocol2.c,v 1.2 2003/06/21 21:51:34 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-protocol2.c,v 1.3 2003/06/21 23:25:38 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1183,15 +1183,30 @@ pqEndcopy2(PGconn *conn)
        }
 
        /*
-        * Trouble. The worst case is that we've lost sync with the backend
-        * entirely due to application screwup of the copy in/out protocol. To
-        * recover, reset the connection (talk about using a sledgehammer...)
+        * Trouble. For backwards-compatibility reasons, we issue the error
+        * message as if it were a notice (would be nice to get rid of this
+        * silliness, but too many apps probably don't handle errors from
+        * PQendcopy reasonably).  Note that the app can still obtain the
+        * error status from the PGconn object.
         */
-       PQclear(result);
-
        if (conn->errorMessage.len > 0)
+       {
+               /* We have to strip the trailing newline ... pain in neck... */
+               char    svLast = conn->errorMessage.data[conn->errorMessage.len-1];
+
+               if (svLast == '\n')
+                       conn->errorMessage.data[conn->errorMessage.len-1] = '\0';
                PGDONOTICE(conn, conn->errorMessage.data);
+               conn->errorMessage.data[conn->errorMessage.len-1] = svLast;
+       }
 
+       PQclear(result);
+
+       /*
+        * The worst case is that we've lost sync with the backend
+        * entirely due to application screwup of the copy in/out protocol. To
+        * recover, reset the connection (talk about using a sledgehammer...)
+        */
        PGDONOTICE(conn, libpq_gettext("lost synchronization with server, resetting connection"));
 
        /*
index 05543f8e76dd04d88d395e9a05e3b879c72197e6..6b404c3531b947ecd1a5d34aaeb4d49d16800a4a 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *       $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-protocol3.c,v 1.2 2003/06/21 21:51:34 tgl Exp $
+ *       $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-protocol3.c,v 1.3 2003/06/21 23:25:38 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1113,7 +1113,15 @@ pqEndcopy3(PGconn *conn)
         * error status from the PGconn object.
         */
        if (conn->errorMessage.len > 0)
+       {
+               /* We have to strip the trailing newline ... pain in neck... */
+               char    svLast = conn->errorMessage.data[conn->errorMessage.len-1];
+
+               if (svLast == '\n')
+                       conn->errorMessage.data[conn->errorMessage.len-1] = '\0';
                PGDONOTICE(conn, conn->errorMessage.data);
+               conn->errorMessage.data[conn->errorMessage.len-1] = svLast;
+       }
 
        PQclear(result);