Get rid of extraneous newline in PQendcopy error output (was causing
authorTom Lane
Sat, 21 Jun 2003 23:25:38 +0000 (23:25 +0000)
committerTom Lane
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);