Re: BUG #15964: vacuumdb.c:187:10: error: use of undeclared identifier 'FD_SETSIZE'

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: Andres Freund <andres@anarazel.de>
Cc: jungleboogie0@gmail.com, pgsql-bugs@lists.postgresql.org, Michael Paquier <michael@paquier.xyz>
Date: 2019-08-17T21:59:05Z
Lists: pgsql-bugs
Andres Freund <andres@anarazel.de> writes:
> On 2019-08-17 16:31:01 -0400, Tom Lane wrote:
>> PG Bug reporting form <noreply@postgresql.org> writes:
>>> vacuumdb.c:184:26: error: use of undeclared identifier 'FD_SETSIZE'

>> 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?

Yeah, that would likely be cleaner than just responding to this directly.

>> But I wonder why the OpenBSD machines in the buildfarm aren't complaining.

> Or even why it works on other platforms.

Indeed.  I've confirmed the bug report on a local OpenBSD 6.4 build
(clang 6.0.0), and with "make -k" I can see that reindexdb.c fails
likewise.  But this is unsurprising given that POSIX says that
FD_SETSIZE is declared by sys/select.h.  And I'm not that astonished
by it not failing on Linux, either; the glibc headers are well known
for #including much more than POSIX says they must.  But it's
surprising and worrisome that none of our other buildfarm platforms
complained.  Seems like somebody should start running an animal with
a more modern OpenBSD, at least.

			regards, tom lane



Commits

  1. Fix error handling of vacuumdb when running out of fds

  2. Fix error handling of vacuumdb and reindexdb when running out of fds

  3. Fix compilation failure of vacuumdb and reindexdb with OpenBSD

  4. Improve Assert output

  5. Refactor parallelization processing code in src/bin/scripts/

  6. vacuumdb: enable parallel mode