A bgworker can spawn parallel workers of its own when executing queries,
and if the worker uses BGWORKER_BYPASS_ALLOWCONN while the database it
is connected to does not allow connections, a parallel worker would fail
to startup. In the case of this module, the step checking for the
presence of the schema to create was spawning a worker, failing the last
test introduced by
991bb0f9653c.
This issue could be reproduced with debug_parallel_query = 'regress',
for example.
Per buildfarm member crake.
BackgroundWorkerInitializeConnection(worker_spi_database,
worker_spi_role, flags);
+ /*
+ * Disable parallel query for workers started with BYPASS_ALLOWCONN so as
+ * these don't attempt connections to the database that may not allow
+ * that.
+ */
+ if (flags & BGWORKER_BYPASS_ALLOWCONN)
+ SetConfigOption("max_parallel_workers_per_gather", "0",
+ PGC_USERSET, PGC_S_OVERRIDE);
+
elog(LOG, "%s initialized with %s.%s",
MyBgworkerEntry->bgw_name, table->schema, table->name);
initialize_worker_spi(table);