Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitf518cf5

Browse files
committed
resolve bgw_main_* functions by name (BGW)
1 parent8249f7e commitf518cf5

File tree

1 file changed

+23
-15
lines changed

1 file changed

+23
-15
lines changed

‎src/pathman_workers.c

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -47,15 +47,19 @@ PG_FUNCTION_INFO_V1( show_concurrent_part_tasks_internal );
4747
PG_FUNCTION_INFO_V1(stop_concurrent_part_task );
4848

4949

50+
/*
51+
* Dynamically resolve functions (for BGW API).
52+
*/
53+
externPGDLLEXPORTvoidbgw_main_spawn_partitions(Datummain_arg);
54+
externPGDLLEXPORTvoidbgw_main_concurrent_part(Datummain_arg);
55+
56+
5057
staticvoidhandle_sigterm(SIGNAL_ARGS);
5158
staticvoidbg_worker_load_config(constchar*bgw_name);
5259
staticvoidstart_bg_worker(constcharbgworker_name[BGW_MAXLEN],
53-
bgworker_main_typebgw_main_func,
60+
constcharbgworker_proc[BGW_MAXLEN],
5461
Datumbgw_arg,boolwait_for_shutdown);
5562

56-
staticvoidbgw_main_spawn_partitions(Datummain_arg);
57-
staticvoidbgw_main_concurrent_part(Datummain_arg);
58-
5963

6064
/*
6165
* Function context for concurrent_part_tasks_internal() SRF.
@@ -157,7 +161,7 @@ bg_worker_load_config(const char *bgw_name)
157161
*/
158162
staticvoid
159163
start_bg_worker(constcharbgworker_name[BGW_MAXLEN],
160-
bgworker_main_typebgw_main_func,
164+
constcharbgworker_proc[BGW_MAXLEN],
161165
Datumbgw_arg,boolwait_for_shutdown)
162166
{
163167
#defineHandleError(condition,new_state) \
@@ -179,12 +183,16 @@ start_bg_worker(const char bgworker_name[BGW_MAXLEN],
179183

180184
/* Initialize worker struct */
181185
memcpy(worker.bgw_name,bgworker_name,BGW_MAXLEN);
182-
worker.bgw_flags=BGWORKER_SHMEM_ACCESS |BGWORKER_BACKEND_DATABASE_CONNECTION;
183-
worker.bgw_start_time=BgWorkerStart_RecoveryFinished;
184-
worker.bgw_restart_time=BGW_NEVER_RESTART;
185-
worker.bgw_main=bgw_main_func;
186-
worker.bgw_main_arg=bgw_arg;
187-
worker.bgw_notify_pid=MyProcPid;
186+
memcpy(worker.bgw_function_name,bgworker_proc,BGW_MAXLEN);
187+
memcpy(worker.bgw_library_name,"pg_pathman",BGW_MAXLEN);
188+
189+
worker.bgw_flags=BGWORKER_SHMEM_ACCESS |
190+
BGWORKER_BACKEND_DATABASE_CONNECTION;
191+
worker.bgw_start_time=BgWorkerStart_RecoveryFinished;
192+
worker.bgw_restart_time=BGW_NEVER_RESTART;
193+
worker.bgw_main=NULL;
194+
worker.bgw_main_arg=bgw_arg;
195+
worker.bgw_notify_pid=MyProcPid;
188196

189197
/* Start dynamic worker */
190198
bgw_started=RegisterDynamicBackgroundWorker(&worker,&bgw_handle);
@@ -301,7 +309,7 @@ create_partitions_for_value_bg_worker(Oid relid, Datum value, Oid value_type)
301309

302310
/* Start worker and wait for it to finish */
303311
start_bg_worker(spawn_partitions_bgw,
304-
bgw_main_spawn_partitions,
312+
CppAsString(bgw_main_spawn_partitions),
305313
UInt32GetDatum(segment_handle),
306314
true);
307315

@@ -323,7 +331,7 @@ create_partitions_for_value_bg_worker(Oid relid, Datum value, Oid value_type)
323331
/*
324332
* Entry point for SpawnPartitionsWorker's process.
325333
*/
326-
staticvoid
334+
void
327335
bgw_main_spawn_partitions(Datummain_arg)
328336
{
329337
dsm_handlehandle=DatumGetUInt32(main_arg);
@@ -403,7 +411,7 @@ bgw_main_spawn_partitions(Datum main_arg)
403411
/*
404412
* Entry point for ConcurrentPartWorker's process.
405413
*/
406-
staticvoid
414+
void
407415
bgw_main_concurrent_part(Datummain_arg)
408416
{
409417
introws;
@@ -671,7 +679,7 @@ partition_table_concurrently(PG_FUNCTION_ARGS)
671679

672680
/* Start worker (we should not wait) */
673681
start_bg_worker(concurrent_part_bgw,
674-
bgw_main_concurrent_part,
682+
CppAsString(bgw_main_concurrent_part),
675683
Int32GetDatum(empty_slot_idx),
676684
false);
677685

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp