]> granicus.if.org Git - postgresql/commitdiff
Remove unnecessary PQconsumeInput call from PQputCopyData; it's redundant
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 25 Jan 2006 20:44:32 +0000 (20:44 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
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)