diff options
author | Tom Lane | 2025-01-31 20:17:15 +0000 |
---|---|---|
committer | Tom Lane | 2025-01-31 20:17:15 +0000 |
commit | 53a49365052026907afff7613929710d1e7f0da0 (patch) | |
tree | 39a4c01fc1222431506d584506879e0099f8c6b8 | |
parent | d4c3a6b8ad830882066122081a7141ecd573f45d (diff) |
Doc: add commentary about cowboy assignment of maintenance_work_mem.
Whilst working on commit 041e8b95b I happened to notice that
parallel_vacuum_main() assigns directly to the maintenance_work_mem
GUC. This is definitely not per project conventions, so I tried to
fix it to use SetConfigOption(). But that fails with "parameter
cannot be set during a parallel operation". It doesn't seem worth
working on a cleaner answer, at least not till we have a few more
instances of similar problems. But add some commentary, just so
nobody gets the idea that this is an approved way to set a GUC.
-rw-r--r-- | src/backend/commands/vacuumparallel.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/backend/commands/vacuumparallel.c b/src/backend/commands/vacuumparallel.c index 49e605a6ffc..dc3322c256b 100644 --- a/src/backend/commands/vacuumparallel.c +++ b/src/backend/commands/vacuumparallel.c @@ -1032,6 +1032,13 @@ parallel_vacuum_main(dsm_segment *seg, shm_toc *toc) vac_open_indexes(rel, RowExclusiveLock, &nindexes, &indrels); Assert(nindexes > 0); + /* + * Apply the desired value of maintenance_work_mem within this process. + * Really we should use SetConfigOption() to change a GUC, but since we're + * already in parallel mode guc.c would complain about that. Fortunately, + * by the same token guc.c will not let any user-defined code change it. + * So just avert your eyes while we do this: + */ if (shared->maintenance_work_mem_worker > 0) maintenance_work_mem = shared->maintenance_work_mem_worker; |