Re: BUG #15964: vacuumdb.c:187:10: error: use of undeclared identifier 'FD_SETSIZE'
Andres Freund <andres@anarazel.de>
From: Andres Freund <andres@anarazel.de>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: jungleboogie0@gmail.com, pgsql-bugs@lists.postgresql.org
Date: 2019-08-17T21:00:25Z
Lists: pgsql-bugs
Hi, On 2019-08-17 16:31:01 -0400, Tom Lane wrote: > PG Bug reporting form <noreply@postgresql.org> writes: > > I'm trying to compile Postgresql from master on my OpenBSD machine, but I'm > > getting a build failure here: > > vacuumdb.c:184:26: error: use of undeclared identifier 'FD_SETSIZE' > > if (concurrentCons > FD_SETSIZE - 1) > > ^ > > Hmm, it seems somebody removed the "#include <sys/select.h>" from > that file, which was a pretty not-bright idea. Most of the parallel code was move into bin/scripts/scripts_parallel.c - but there's still the above error check. Seems like we ought to add a ParallelSlotsMax() or such, and use that in the error check, rather than check FD_SETSIZE directly? > But I wonder why the OpenBSD machines in the buildfarm aren't complaining. Or even why it works on other platforms. On linux/glibc it looks like sys/select.h is included by sys/types.h under certain conditions: #ifdef __USE_MISC /* In BSD <sys/types.h> is expected to define BYTE_ORDER. */ # include <endian.h> /* It also defines `fd_set' and the FD_* macros for `select'. */ # include <sys/select.h> #endif /* Use misc. */ which in turn is included by stddef.h under certain conditions: #if defined __USE_MISC || defined __USE_XOPEN_EXTENDED # include <sys/types.h> /* we need int32_t... */ stddef.h is included by c.h, so will obviously be included in any of our .c files. _USE_MISC and _XOPEN_SOURCE_EXTENDED are defined by default, unless they're explicitly specified (which we don't). I assume there's some compiler specific going on. Our animals use an old gcc version, whereas Sean's uses a modern clang. Not hard to imagine that the compiler specific bits look different enough to cause such a discrepancy. Greetings, Andres Freund
Commits
-
Fix error handling of vacuumdb when running out of fds
- a21ec1a959ef 9.5.20 landed
- eb91b8ee6572 9.6.16 landed
- 4fca1460099e 10.11 landed
- 5d76c8037329 11.6 landed
- 63fc3b124008 12.0 landed
-
Fix error handling of vacuumdb and reindexdb when running out of fds
- 71d84efba714 13.0 landed
-
Fix compilation failure of vacuumdb and reindexdb with OpenBSD
- 56f8f9624ba0 13.0 landed
-
Improve Assert output
- d78d452bc5ac 13.0 cited
-
Refactor parallelization processing code in src/bin/scripts/
- 5f3840370b63 13.0 cited
-
vacuumdb: enable parallel mode
- a17923204736 9.5.0 cited