aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Paquier <michael@paquier.xyz>2023-10-06 09:56:55 +0900
committerMichael Paquier <michael@paquier.xyz>2023-10-06 09:56:55 +0900
commitfd4d93d269c02081958e4c0c214f1d82186e5689 (patch)
treed192f0e7570a5e0941b1824cbf444669b05365b9 /src
parent991bb0f9653c61cf116338f295534d1378df2751 (diff)
downloadpostgresql-fd4d93d269c02081958e4c0c214f1d82186e5689.tar.gz
postgresql-fd4d93d269c02081958e4c0c214f1d82186e5689.zip
worker_spi: Fix test failure with BGWORKER_BYPASS_ALLOWCONN
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.
Diffstat (limited to 'src')
-rw-r--r--src/test/modules/worker_spi/worker_spi.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/test/modules/worker_spi/worker_spi.c b/src/test/modules/worker_spi/worker_spi.c
index 5d81cf45639..1c619d4b189 100644
--- a/src/test/modules/worker_spi/worker_spi.c
+++ b/src/test/modules/worker_spi/worker_spi.c
@@ -173,6 +173,15 @@ worker_spi_main(Datum main_arg)
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);