Re: Add parallelism and glibc dependent only options to reindexdb

Michael Paquier <michael@paquier.xyz>

From: Michael Paquier <michael@paquier.xyz>
To: Julien Rouhaud <rjuju123@gmail.com>
Cc: Sergei Kornilov <sk@zsrv.org>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2019-07-27T13:27:18Z
Lists: pgsql-hackers
On Sat, Jul 27, 2019 at 11:44:47AM +0200, Julien Rouhaud wrote:
> That's probably still more intuitive than having the count coming from
> either main() or from get_parallel_object_list() depending on the
> process type, so I'm fine with that alternative.  Maybe we could bite
> the bullet and add a count meber to Simple*List, also providing a
> macro to initialize a new list so that next time a field is added
> there won't be a massive boilerplate code change?

Perhaps, we could discuss about that on a separate thread.  For now I
have gone with the simplest approach of counting the items, and
stopping the count if there are more items than jobs.  While reviewing
I have found a double-free in your patch when building a list of
relations for schemas or databases.  If the list finishes empty,
PQfinish() was called twice on the connection, leading to a crash.  I
have added a test for that, done an extra pass on the patch adjusting
a couple of things then committed the patch with the restriction on
--index and --jobs.  This entry is now marked as committed in the CF
app.
--
Michael

Commits

  1. Add support for --jobs in reindexdb

  2. Remove more progname references in vacuumdb.c

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