diff options
author | Jeff Davis <jdavis@postgresql.org> | 2022-07-15 12:24:10 -0700 |
---|---|---|
committer | Jeff Davis <jdavis@postgresql.org> | 2022-07-20 10:15:47 -0700 |
commit | 6c31ac091f31171601ee00972e131d8683e7b828 (patch) | |
tree | f8c510af284bbd2e9127aabf2e0bd3f1c7550134 /src/backend/tcop/postgres.c | |
parent | 2d04277121f2f8e18b65190f0dfa8ca97e9c29cb (diff) | |
download | postgresql-6c31ac091f31171601ee00972e131d8683e7b828.tar.gz postgresql-6c31ac091f31171601ee00972e131d8683e7b828.zip |
Process shared_preload_libraries in single-user mode.
Without processing shared_preload_libraries, it's impossible to
recover if custom WAL resource managers are needed. It may also pose a
problem running VACUUM on a table with a custom AM, if the module
implementing the AM is expecting to be loaded by
shared_preload_libraries.
The reason this wasn't done before was just the general principle to
do fewer things in single-user mode. But it's easy enough to just set
shared_preload_libraries to empty, for the same effect.
Discussion: https://postgr.es/m/9decc18a42634f8a2f15c97a385a0f51a752f396.camel%40j-davis.com
Reviewed-by: Tom Lane, Andres Freund
Backpatch-through: 15
Diffstat (limited to 'src/backend/tcop/postgres.c')
-rw-r--r-- | src/backend/tcop/postgres.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c index 6f18b688569..8ba1c170f02 100644 --- a/src/backend/tcop/postgres.c +++ b/src/backend/tcop/postgres.c @@ -3933,9 +3933,32 @@ PostgresSingleUserMain(int argc, char *argv[], /* read control file (error checking and contains config ) */ LocalProcessControlFile(false); + /* + * process any libraries that should be preloaded at postmaster start + */ + process_shared_preload_libraries(); + /* Initialize MaxBackends */ InitializeMaxBackends(); + /* + * Give preloaded libraries a chance to request additional shared memory. + */ + process_shmem_requests(); + + /* + * Now that loadable modules have had their chance to request additional + * shared memory, determine the value of any runtime-computed GUCs that + * depend on the amount of shared memory required. + */ + InitializeShmemGUCs(); + + /* + * Now that modules have been loaded, we can process any custom resource + * managers specified in the wal_consistency_checking GUC. + */ + InitializeWalConsistencyChecking(); + CreateSharedMemoryAndSemaphores(); /* |