From c90096009347469ce12f389d5e3b8fc5cc319813 Mon Sep 17 00:00:00 2001 From: Michael Paquier Date: Tue, 27 Aug 2019 09:11:48 +0900 Subject: [PATCH] Fix failure of --jobs with vacuumdb on Windows 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 | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/bin/scripts/vacuumdb.c b/src/bin/scripts/vacuumdb.c index fa4fb724836..81d40659a09 100644 --- a/src/bin/scripts/vacuumdb.c +++ b/src/bin/scripts/vacuumdb.c @@ -10,6 +10,10 @@ *------------------------------------------------------------------------- */ +#ifdef WIN32 +#define FD_SETSIZE 1024 /* must set before winsock2.h is included */ +#endif + #include "postgres_fe.h" #ifdef HAVE_SYS_SELECT_H @@ -446,7 +450,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); }