Move routines to manipulate WAL into PostgreSQL::Test::Cluster
[pgsql.git] / src / bin / pg_dump / parallel.h
blobbeddfaa6d3192ee83fe65215e6031c155052ba3d
1 /*-------------------------------------------------------------------------
3 * parallel.h
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
10 * IDENTIFICATION
11 * src/bin/pg_dump/parallel.h
13 *-------------------------------------------------------------------------
16 #ifndef PG_DUMP_PARALLEL_H
17 #define PG_DUMP_PARALLEL_H
19 #include <limits.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,
25 TocEntry *te,
26 int status,
27 void *callback_data);
29 /* Wait options for WaitForWorkers */
30 typedef enum
32 WFW_NO_WAIT,
33 WFW_GOT_STATUS,
34 WFW_ONE_IDLE,
35 WFW_ALL_IDLE,
36 } WFW_WaitOption;
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.
45 #ifdef WIN32
46 #define PG_MAX_JOBS MAXIMUM_WAIT_OBJECTS
47 #else
48 #define PG_MAX_JOBS INT_MAX
49 #endif
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 */
61 } ParallelState;
63 #ifdef WIN32
64 extern bool parallel_init_done;
65 extern DWORD mainThreadId;
66 #endif
68 extern void init_parallel_dump_utils(void);
70 extern bool IsEveryWorkerIdle(ParallelState *pstate);
71 extern void WaitForWorkers(ArchiveHandle *AH, ParallelState *pstate,
72 WFW_WaitOption mode);
74 extern ParallelState *ParallelBackupStart(ArchiveHandle *AH);
75 extern void DispatchJobForTocEntry(ArchiveHandle *AH,
76 ParallelState *pstate,
77 TocEntry *te,
78 T_Action act,
79 ParallelCompletionPtr callback,
80 void *callback_data);
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 */