From 03361a368e7bf909283cc7721af004317fdabd3d Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Wed, 27 Jul 2022 12:00:10 -0400 Subject: [PATCH] Add missing PGDLLEXPORT markings in contrib/pg_prewarm. After commit 089480c07, it's necessary for background worker entry points to be marked PGDLLEXPORT, else they aren't findable by LookupBackgroundWorkerFunction(). Since pg_prewarm lacks any regression tests, it's not surprising its worker entry points were overlooked. (A quick search turned up no other such oversights.) I added some documentation pointing out the need for this, too. Robins Tharakan and Tom Lane CAEP4nAzndnQv3-1QKb=D-hLoK3Rko12HHMFHHtdj2GQAUXO3gw@mail.gmail.com --- contrib/pg_prewarm/autoprewarm.c | 4 ++-- doc/src/sgml/bgworker.sgml | 11 ++++++----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/contrib/pg_prewarm/autoprewarm.c b/contrib/pg_prewarm/autoprewarm.c index b2d60260934..d9ab39dd900 100644 --- a/contrib/pg_prewarm/autoprewarm.c +++ b/contrib/pg_prewarm/autoprewarm.c @@ -82,8 +82,8 @@ typedef struct AutoPrewarmSharedState int prewarmed_blocks; } AutoPrewarmSharedState; -void autoprewarm_main(Datum main_arg); -void autoprewarm_database_main(Datum main_arg); +PGDLLEXPORT void autoprewarm_main(Datum main_arg); +PGDLLEXPORT void autoprewarm_database_main(Datum main_arg); PG_FUNCTION_INFO_V1(autoprewarm_start_worker); PG_FUNCTION_INFO_V1(autoprewarm_dump_now); diff --git a/doc/src/sgml/bgworker.sgml b/doc/src/sgml/bgworker.sgml index 73207f72fe1..3d4e4afcf91 100644 --- a/doc/src/sgml/bgworker.sgml +++ b/doc/src/sgml/bgworker.sgml @@ -141,14 +141,15 @@ typedef struct BackgroundWorker which the initial entry point for the background worker should be sought. The named library will be dynamically loaded by the worker process and bgw_function_name will be used to identify the - function to be called. If loading a function from the core code, this must - be set to "postgres". + function to be called. If calling a function in the core code, this must + be set to "postgres". - bgw_function_name is the name of a function in - a dynamically loaded library which should be used as the initial entry point - for a new background worker. + bgw_function_name is the name of the function + to use as the initial entry point for the new background worker. If + this function is in a dynamically loaded library, it must be marked + PGDLLEXPORT (and not static). -- 2.30.2