]> granicus.if.org Git - postgresql/commitdiff
Fix failure of --jobs with vacuumdb on Windows
authorMichael Paquier <michael@paquier.xyz>
Tue, 27 Aug 2019 00:12:10 +0000 (09:12 +0900)
committerMichael Paquier <michael@paquier.xyz>
Tue, 27 Aug 2019 00:12:10 +0000 (09:12 +0900)
FD_SETSIZE needs to be declared before winsock2.h, or it is possible to
run into buffer overflow issues when using --jobs.  This is similar to
pgbench's solution done in a23c641.

This has been introduced by 71d84ef, and older versions have been using
the default value of FD_SETSIZE, defined at 64.  While on it, add a
missing newline to the previously-added error message.

Per buildfarm member jacana, but this impacts all Windows animals
running the TAP tests.  I have reproduced the failure locally to check
the patch.

Author: Michael Paquier
Reviewed-by: Andrew Dunstan
Discussion: https://postgr.es/m/20190826054000.GE7005@paquier.xyz
Backpatch-through: 9.5

src/bin/scripts/vacuumdb.c

index a4fe5f86294e9d0fd23a080b8d6c689375116061..14c7306bab9ea0a61ac0de5f72a8aad6480a4705 100644 (file)
  *-------------------------------------------------------------------------
  */
 
+#ifdef WIN32
+#define FD_SETSIZE 1024                        /* must set before winsock2.h is included */
+#endif
+
 #include "postgres_fe.h"
 
 #ifdef HAVE_SYS_SELECT_H
@@ -440,7 +444,7 @@ vacuum_one_database(const char *dbname, vacuumingOptions *vacopts,
                        if (PQsocket(conn) >= FD_SETSIZE)
                        {
                                fprintf(stderr,
-                                               _("%s: too many jobs for this platform -- try %d"),
+                                               _("%s: too many jobs for this platform -- try %d\n"),
                                                progname, i);
                                exit(1);
                        }