PostgreSQL Source Code git master
Loading...
Searching...
No Matches
parallel.h
Go to the documentation of this file.
1/*-------------------------------------------------------------------------
2 *
3 * parallel.h
4 * Infrastructure for launching parallel workers
5 *
6 * Portions Copyright (c) 1996-2026, PostgreSQL Global Development Group
7 * Portions Copyright (c) 1994, Regents of the University of California
8 *
9 * src/include/access/parallel.h
10 *
11 *-------------------------------------------------------------------------
12 */
13
14#ifndef PARALLEL_H
15#define PARALLEL_H
16
17#include <signal.h>
18
19#include "access/xlogdefs.h"
20#include "lib/ilist.h"
21#include "postmaster/bgworker.h"
22#include "storage/shm_mq.h"
23#include "storage/shm_toc.h"
24
26
32
51
57
61
62#define IsParallelWorker() (ParallelWorkerNumber >= 0)
63
64extern ParallelContext *CreateParallelContext(const char *library_name,
65 const char *function_name, int nworkers);
66extern void InitializeParallelDSM(ParallelContext *pcxt);
68extern void ReinitializeParallelWorkers(ParallelContext *pcxt, int nworkers_to_launch);
69extern void LaunchParallelWorkers(ParallelContext *pcxt);
73extern bool ParallelContextActive(void);
74
75extern void HandleParallelMessageInterrupt(void);
76extern void ProcessParallelMessages(void);
77extern void AtEOXact_Parallel(bool isCommit);
79extern void ParallelWorkerReportLastRecEnd(XLogRecPtr last_xlog_end);
80
82
83#endif /* PARALLEL_H */
#define PGDLLIMPORT
Definition c.h:1356
uint32 SubTransactionId
Definition c.h:682
PGDLLIMPORT volatile sig_atomic_t ParallelMessagePending
Definition parallel.c:119
void HandleParallelMessageInterrupt(void)
Definition parallel.c:1045
void ProcessParallelMessages(void)
Definition parallel.c:1056
void InitializeParallelDSM(ParallelContext *pcxt)
Definition parallel.c:212
PGDLLIMPORT int ParallelWorkerNumber
Definition parallel.c:116
void WaitForParallelWorkersToFinish(ParallelContext *pcxt)
Definition parallel.c:804
void LaunchParallelWorkers(ParallelContext *pcxt)
Definition parallel.c:582
void ReinitializeParallelDSM(ParallelContext *pcxt)
Definition parallel.c:510
void DestroyParallelContext(ParallelContext *pcxt)
Definition parallel.c:958
void ParallelWorkerReportLastRecEnd(XLogRecPtr last_xlog_end)
Definition parallel.c:1593
PGDLLIMPORT bool InitializingParallelWorker
Definition parallel.c:122
ParallelContext * CreateParallelContext(const char *library_name, const char *function_name, int nworkers)
Definition parallel.c:174
bool ParallelContextActive(void)
Definition parallel.c:1032
void ParallelWorkerMain(Datum main_arg)
Definition parallel.c:1300
void(* parallel_worker_main_type)(dsm_segment *seg, shm_toc *toc)
Definition parallel.h:25
void ReinitializeParallelWorkers(ParallelContext *pcxt, int nworkers_to_launch)
Definition parallel.c:567
void WaitForParallelWorkersToAttach(ParallelContext *pcxt)
Definition parallel.c:701
void AtEOSubXact_Parallel(bool isCommit, SubTransactionId mySubId)
Definition parallel.c:1262
void AtEOXact_Parallel(bool isCommit)
Definition parallel.c:1283
uint64_t Datum
Definition postgres.h:70
static int fb(int x)
char * library_name
Definition parallel.h:40
dsm_segment * seg
Definition parallel.h:44
bool * known_attached_workers
Definition parallel.h:49
ErrorContextCallback * error_context_stack
Definition parallel.h:42
SubTransactionId subid
Definition parallel.h:36
shm_toc_estimator estimator
Definition parallel.h:43
int nknown_attached_workers
Definition parallel.h:48
ParallelWorkerInfo * worker
Definition parallel.h:47
shm_toc * toc
Definition parallel.h:46
dlist_node node
Definition parallel.h:35
void * private_memory
Definition parallel.h:45
int nworkers_launched
Definition parallel.h:39
int nworkers_to_launch
Definition parallel.h:38
char * function_name
Definition parallel.h:41
dsm_segment * seg
Definition parallel.h:54
BackgroundWorkerHandle * bgwhandle
Definition parallel.h:29
shm_mq_handle * error_mqh
Definition parallel.h:30
uint64 XLogRecPtr
Definition xlogdefs.h:21