1 /*-------------------------------------------------------------------------
5 * Parallel support for pg_dump and pg_restore
7 * Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group
8 * Portions Copyright (c) 1994, Regents of the University of California
11 * src/bin/pg_dump/parallel.h
13 *-------------------------------------------------------------------------
16 #ifndef PG_DUMP_PARALLEL_H
17 #define PG_DUMP_PARALLEL_H
21 #include "pg_backup_archiver.h"
23 /* Function to call in leader process on completion of a worker task */
24 typedef void (*ParallelCompletionPtr
) (ArchiveHandle
*AH
,
29 /* Wait options for WaitForWorkers */
39 * Maximum number of parallel jobs allowed.
41 * On Windows we can only have at most MAXIMUM_WAIT_OBJECTS (= 64 usually)
42 * parallel jobs because that's the maximum limit for the
43 * WaitForMultipleObjects() call.
46 #define PG_MAX_JOBS MAXIMUM_WAIT_OBJECTS
48 #define PG_MAX_JOBS INT_MAX
51 /* ParallelSlot is an opaque struct known only within parallel.c */
52 typedef struct ParallelSlot ParallelSlot
;
54 /* Overall state for parallel.c */
55 typedef struct ParallelState
57 int numWorkers
; /* allowed number of workers */
58 /* these arrays have numWorkers entries, one per worker: */
59 TocEntry
**te
; /* item being worked on, or NULL */
60 ParallelSlot
*parallelSlot
; /* private info about each worker */
64 extern bool parallel_init_done
;
65 extern DWORD mainThreadId
;
68 extern void init_parallel_dump_utils(void);
70 extern bool IsEveryWorkerIdle(ParallelState
*pstate
);
71 extern void WaitForWorkers(ArchiveHandle
*AH
, ParallelState
*pstate
,
74 extern ParallelState
*ParallelBackupStart(ArchiveHandle
*AH
);
75 extern void DispatchJobForTocEntry(ArchiveHandle
*AH
,
76 ParallelState
*pstate
,
79 ParallelCompletionPtr callback
,
81 extern void ParallelBackupEnd(ArchiveHandle
*AH
, ParallelState
*pstate
);
83 extern void set_archive_cancel_info(ArchiveHandle
*AH
, PGconn
*conn
);
85 #endif /* PG_DUMP_PARALLEL_H */