Remove unnecessary PQconsumeInput call from PQputCopyData; it's redundant
authorTom Lane
Wed, 25 Jan 2006 20:44:32 +0000 (20:44 +0000)
committerTom Lane
Wed, 25 Jan 2006 20:44:32 +0000 (20:44 +0000)
because pqSendSome will absorb input data anytime it'd be forced to block.
Avoiding a kernel call per PQputCopyData call helps COPY speed materially.

Alon Goldshuv

src/interfaces/libpq/fe-exec.c

index 2b324916df19d37b41cdf333ed5bbed5472718ba..4edb065c9cc341ad3028de587ca89469501d073e 100644 (file)
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *   $PostgreSQL: pgsql/src/interfaces/libpq/fe-exec.c,v 1.178 2006/01/11 08:43:13 neilc Exp $
+ *   $PostgreSQL: pgsql/src/interfaces/libpq/fe-exec.c,v 1.179 2006/01/25 20:44:32 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1476,13 +1476,13 @@ PQputCopyData(PGconn *conn, const char *buffer, int nbytes)
    }
 
    /*
-    * Check for NOTICE messages coming back from the server.  Since the
-    * server might generate multiple notices during the COPY, we have to
-    * consume those in a reasonably prompt fashion to prevent the comm
-    * buffers from filling up and possibly blocking the server.
+    * Process any NOTICE or NOTIFY messages that might be pending in the
+    * input buffer.  Since the server might generate many notices during
+    * the COPY, we want to clean those out reasonably promptly to prevent
+    * indefinite expansion of the input buffer.  (Note: the actual read
+    * of input data into the input buffer happens down inside pqSendSome,
+    * but it's not authorized to get rid of the data again.)
     */
-   if (!PQconsumeInput(conn))
-       return -1;              /* I/O failure */
    parseInput(conn);
 
    if (nbytes > 0)