PostgreSQL Source Code  git master
pg_backup.h
Go to the documentation of this file.
1 /*-------------------------------------------------------------------------
2  *
3  * pg_backup.h
4  *
5  * Public interface to the pg_dump archiver routines.
6  *
7  * See the headers to pg_restore for more details.
8  *
9  * Copyright (c) 2000, Philip Warner
10  * Rights are granted to use this software in any way so long
11  * as this notice is not removed.
12  *
13  * The author is not responsible for loss or damages that may
14  * result from its use.
15  *
16  *
17  * IDENTIFICATION
18  * src/bin/pg_dump/pg_backup.h
19  *
20  *-------------------------------------------------------------------------
21  */
22 
23 #ifndef PG_BACKUP_H
24 #define PG_BACKUP_H
25 
26 #include "common/compression.h"
27 #include "common/file_utils.h"
28 #include "fe_utils/simple_list.h"
29 #include "libpq-fe.h"
30 
31 
32 typedef enum trivalue
33 {
38 
39 typedef enum _archiveFormat
40 {
43  archTar = 3,
44  archNull = 4,
47 
48 typedef enum _archiveMode
49 {
54 
55 typedef enum _teSection
56 {
57  SECTION_NONE = 1, /* comments, ACLs, etc; can be anywhere */
58  SECTION_PRE_DATA, /* stuff to be processed before data */
59  SECTION_DATA, /* table data, large objects, LO comments */
60  SECTION_POST_DATA, /* stuff to be processed after data */
62 
63 /* We need one enum entry per prepared query in pg_dump */
65 {
77 };
78 
79 #define NUM_PREP_QUERIES (PREPQUERY_GETDOMAINCONSTRAINTS + 1)
80 
81 /* Parameters needed by ConnectDatabase; same for dump and restore */
82 typedef struct _connParams
83 {
84  /* These fields record the actual command line parameters */
85  char *dbname; /* this may be a connstring! */
86  char *pgport;
87  char *pghost;
88  char *username;
90  /* If not NULL, this overrides the dbname obtained from command line */
91  /* (but *only* the DB name, not anything else in the connstring) */
94 
95 typedef struct _restoreOptions
96 {
97  int createDB; /* Issue commands to create the database */
98  int noOwner; /* Don't try to match original object owner */
99  int noTableAm; /* Don't issue table-AM-related commands */
100  int noTablespace; /* Don't issue tablespace-related commands */
101  int disable_triggers; /* disable triggers during data-only
102  * restore */
103  int use_setsessauth; /* Use SET SESSION AUTHORIZATION commands
104  * instead of OWNER TO */
105  char *superuser; /* Username to use as superuser */
106  char *use_role; /* Issue SET ROLE to this */
109  int dump_inserts; /* 0 = COPY, otherwise rows per INSERT */
112  int no_comments; /* Skip comments */
113  int no_publications; /* Skip publication entries */
114  int no_security_labels; /* Skip security label entries */
115  int no_subscriptions; /* Skip subscription entries */
117 
118  const char *filename;
120  int verbose;
121  int aclsSkip;
122  const char *lockWaitTimeout;
124 
126  char *tocFile;
127  int format;
128  char *formatName;
129 
130  int selTypes;
131  int selIndex;
134  int selTable;
141 
142  int useDB;
143  ConnParams cparams; /* parameters to use if useDB */
144 
148  * compression */
149  int suppressDumpWarnings; /* Suppress output of WARNING entries
150  * to stderr */
151 
152  bool single_txn; /* restore all TOCs in one transaction */
153  int txn_size; /* restore this many TOCs per txn, if > 0 */
154 
155  bool *idWanted; /* array showing which dump IDs to emit */
157  int sequence_data; /* dump sequence data even in schema-only mode */
159 
160  /* flags derived from the user-settable flags */
162  bool dumpData;
164 
165 typedef struct _dumpOptions
166 {
168 
170 
171  /* various user-settable parameters */
172  int dumpSections; /* bitmask of chosen sections */
173  bool aclsSkip;
174  const char *lockWaitTimeout;
175  int dump_inserts; /* 0 = COPY, otherwise rows per INSERT */
176 
177  /* flags for various command-line long options */
194 
195  /* default, if no "inclusion" switches appear, is to dump everything */
197 
200  bool outputLOs;
204 
205  int sequence_data; /* dump sequence data even in schema-only mode */
207 
208  /* flags derived from the user-settable flags */
210  bool dumpData;
212 
213 /*
214  * We may want to have some more user-readable data, but in the mean
215  * time this gives us some abstraction and type checking.
216  */
217 typedef struct Archive
218 {
219  DumpOptions *dopt; /* options, if dumping */
220  RestoreOptions *ropt; /* options, if restoring */
221 
222  int verbose;
223  char *remoteVersionStr; /* server's version string */
224  int remoteVersion; /* same in numeric form */
225  bool isStandby; /* is server a standby node */
226 
227  int minRemoteVersion; /* allowable range */
229 
230  int numWorkers; /* number of parallel processes */
231  char *sync_snapshot_id; /* sync snapshot id for parallel operation */
232 
233  /* info needed for string escaping */
234  int encoding; /* libpq code for client_encoding */
235  bool std_strings; /* standard_conforming_strings */
236 
237  /* other important stuff */
238  char *searchpath; /* search_path to set during restore */
239  char *use_role; /* Issue SET ROLE to this */
240 
241  /* error handling */
242  bool exit_on_error; /* whether to exit on SQL errors... */
243  int n_errors; /* number of errors (if no die) */
244 
245  /* prepared-query status */
246  bool *is_prepared; /* indexed by enum _dumpPreparedQueries */
247 
248  /* The rest is private */
250 
251 
252 /*
253  * pg_dump uses two different mechanisms for identifying database objects:
254  *
255  * CatalogId represents an object by the tableoid and oid of its defining
256  * entry in the system catalogs. We need this to interpret pg_depend entries,
257  * for instance.
258  *
259  * DumpId is a simple sequential integer counter assigned as dumpable objects
260  * are identified during a pg_dump run. We use DumpId internally in preference
261  * to CatalogId for two reasons: it's more compact, and we can assign DumpIds
262  * to "objects" that don't have a separate CatalogId. For example, it is
263  * convenient to consider a table, its data, and its ACL as three separate
264  * dumpable "objects" with distinct DumpIds --- this lets us reason about the
265  * order in which to dump these things.
266  */
267 
268 typedef struct
269 {
270  /* Note: this struct must not contain any unused bytes */
273 } CatalogId;
274 
275 typedef int DumpId;
276 
277 #define InvalidDumpId 0
278 
279 /*
280  * Function pointer prototypes for assorted callback methods.
281  */
282 
283 typedef int (*DataDumperPtr) (Archive *AH, const void *userArg);
284 
285 typedef void (*SetupWorkerPtrType) (Archive *AH);
286 
287 /*
288  * Main archiver interface.
289  */
290 
291 extern void ConnectDatabase(Archive *AHX,
292  const ConnParams *cparams,
293  bool isReconnect);
294 extern void DisconnectDatabase(Archive *AHX);
295 extern PGconn *GetConnection(Archive *AHX);
296 
297 /* Called to write *data* to the archive */
298 extern void WriteData(Archive *AHX, const void *data, size_t dLen);
299 
300 extern int StartLO(Archive *AHX, Oid oid);
301 extern int EndLO(Archive *AHX, Oid oid);
302 
303 extern void CloseArchive(Archive *AHX);
304 
305 extern void SetArchiveOptions(Archive *AH, DumpOptions *dopt, RestoreOptions *ropt);
306 
307 extern void ProcessArchiveRestoreOptions(Archive *AHX);
308 
309 extern void RestoreArchive(Archive *AHX);
310 
311 /* Open an existing archive */
312 extern Archive *OpenArchive(const char *FileSpec, const ArchiveFormat fmt);
313 
314 /* Create a new archive */
315 extern Archive *CreateArchive(const char *FileSpec, const ArchiveFormat fmt,
316  const pg_compress_specification compression_spec,
317  bool dosync, ArchiveMode mode,
320 
321 /* The --list option */
322 extern void PrintTOCSummary(Archive *AHX);
323 
324 extern RestoreOptions *NewRestoreOptions(void);
325 
326 extern DumpOptions *NewDumpOptions(void);
327 extern void InitDumpOptions(DumpOptions *opts);
329 
330 /* Rearrange and filter TOC entries */
331 extern void SortTocFromFile(Archive *AHX);
332 
333 /* Convenience functions used only when writing DATA */
334 extern void archputs(const char *s, Archive *AH);
335 extern int archprintf(Archive *AH, const char *fmt,...) pg_attribute_printf(2, 3);
336 
337 #define appendStringLiteralAH(buf,str,AH) \
338  appendStringLiteral(buf, str, (AH)->encoding, (AH)->std_strings)
339 
340 #endif /* PG_BACKUP_H */
#define pg_attribute_printf(f, a)
Definition: c.h:206
DataDirSyncMethod
Definition: file_utils.h:28
static DataDirSyncMethod sync_method
Definition: initdb.c:170
static void const char * fmt
static AmcheckOptions opts
Definition: pg_amcheck.c:112
void ConnectDatabase(Archive *AHX, const ConnParams *cparams, bool isReconnect)
Definition: pg_backup_db.c:108
_teSection
Definition: pg_backup.h:56
@ SECTION_NONE
Definition: pg_backup.h:57
@ SECTION_POST_DATA
Definition: pg_backup.h:60
@ SECTION_PRE_DATA
Definition: pg_backup.h:58
@ SECTION_DATA
Definition: pg_backup.h:59
int DumpId
Definition: pg_backup.h:275
int EndLO(Archive *AHX, Oid oid)
void ProcessArchiveRestoreOptions(Archive *AHX)
void(* SetupWorkerPtrType)(Archive *AH)
Definition: pg_backup.h:285
RestoreOptions * NewRestoreOptions(void)
int StartLO(Archive *AHX, Oid oid)
Archive * CreateArchive(const char *FileSpec, const ArchiveFormat fmt, const pg_compress_specification compression_spec, bool dosync, ArchiveMode mode, SetupWorkerPtrType setupDumpWorker, DataDirSyncMethod sync_method)
enum _archiveFormat ArchiveFormat
PGconn * GetConnection(Archive *AHX)
Definition: pg_backup_db.c:252
struct Archive Archive
void CloseArchive(Archive *AHX)
struct _connParams ConnParams
void SortTocFromFile(Archive *AHX)
_archiveMode
Definition: pg_backup.h:49
@ archModeWrite
Definition: pg_backup.h:51
@ archModeAppend
Definition: pg_backup.h:50
@ archModeRead
Definition: pg_backup.h:52
_dumpPreparedQueries
Definition: pg_backup.h:65
@ PREPQUERY_DUMPFUNC
Definition: pg_backup.h:71
@ PREPQUERY_DUMPTABLEATTACH
Definition: pg_backup.h:74
@ PREPQUERY_DUMPBASETYPE
Definition: pg_backup.h:67
@ PREPQUERY_DUMPRANGETYPE
Definition: pg_backup.h:73
@ PREPQUERY_DUMPOPR
Definition: pg_backup.h:72
@ PREPQUERY_DUMPDOMAIN
Definition: pg_backup.h:69
@ PREPQUERY_DUMPCOMPOSITETYPE
Definition: pg_backup.h:68
@ PREPQUERY_DUMPAGG
Definition: pg_backup.h:66
@ PREPQUERY_GETCOLUMNACLS
Definition: pg_backup.h:75
@ PREPQUERY_GETDOMAINCONSTRAINTS
Definition: pg_backup.h:76
@ PREPQUERY_DUMPENUMTYPE
Definition: pg_backup.h:70
trivalue
Definition: pg_backup.h:33
@ TRI_YES
Definition: pg_backup.h:36
@ TRI_DEFAULT
Definition: pg_backup.h:34
@ TRI_NO
Definition: pg_backup.h:35
int archprintf(Archive *AH, const char *fmt,...) pg_attribute_printf(2
struct _restoreOptions RestoreOptions
void PrintTOCSummary(Archive *AHX)
void SetArchiveOptions(Archive *AH, DumpOptions *dopt, RestoreOptions *ropt)
DumpOptions * NewDumpOptions(void)
void DisconnectDatabase(Archive *AHX)
Definition: pg_backup_db.c:223
void RestoreArchive(Archive *AHX)
void archputs(const char *s, Archive *AH)
enum _teSection teSection
struct _dumpOptions DumpOptions
enum _archiveMode ArchiveMode
_archiveFormat
Definition: pg_backup.h:40
@ archUnknown
Definition: pg_backup.h:41
@ archTar
Definition: pg_backup.h:43
@ archCustom
Definition: pg_backup.h:42
@ archDirectory
Definition: pg_backup.h:45
@ archNull
Definition: pg_backup.h:44
Archive * OpenArchive(const char *FileSpec, const ArchiveFormat fmt)
void InitDumpOptions(DumpOptions *opts)
DumpOptions * dumpOptionsFromRestoreOptions(RestoreOptions *ropt)
void WriteData(Archive *AHX, const void *data, size_t dLen)
int(* DataDumperPtr)(Archive *AH, const void *userArg)
Definition: pg_backup.h:283
static PgChecksumMode mode
Definition: pg_checksums.c:55
const void * data
static bool dosync
Definition: pg_dump.c:145
static void setupDumpWorker(Archive *AH)
Definition: pg_dump.c:1428
unsigned int Oid
Definition: postgres_ext.h:31
int minRemoteVersion
Definition: pg_backup.h:227
int remoteVersion
Definition: pg_backup.h:224
char * remoteVersionStr
Definition: pg_backup.h:223
DumpOptions * dopt
Definition: pg_backup.h:219
bool * is_prepared
Definition: pg_backup.h:246
bool exit_on_error
Definition: pg_backup.h:242
char * searchpath
Definition: pg_backup.h:238
bool isStandby
Definition: pg_backup.h:225
int maxRemoteVersion
Definition: pg_backup.h:228
int n_errors
Definition: pg_backup.h:243
bool std_strings
Definition: pg_backup.h:235
int numWorkers
Definition: pg_backup.h:230
int encoding
Definition: pg_backup.h:234
char * use_role
Definition: pg_backup.h:239
char * sync_snapshot_id
Definition: pg_backup.h:231
int verbose
Definition: pg_backup.h:222
RestoreOptions * ropt
Definition: pg_backup.h:220
Oid tableoid
Definition: pg_backup.h:271
char * override_dbname
Definition: pg_backup.h:92
char * pgport
Definition: pg_backup.h:86
char * pghost
Definition: pg_backup.h:87
trivalue promptPassword
Definition: pg_backup.h:89
char * username
Definition: pg_backup.h:88
char * dbname
Definition: pg_backup.h:85
int dump_inserts
Definition: pg_backup.h:175
int no_toast_compression
Definition: pg_backup.h:185
int column_inserts
Definition: pg_backup.h:179
bool dontOutputLOs
Definition: pg_backup.h:201
int use_setsessauth
Definition: pg_backup.h:191
int outputCreateDB
Definition: pg_backup.h:199
bool include_everything
Definition: pg_backup.h:196
int sequence_data
Definition: pg_backup.h:205
int disable_dollar_quoting
Definition: pg_backup.h:178
bool dumpSchema
Definition: pg_backup.h:209
bool outputLOs
Definition: pg_backup.h:200
int no_comments
Definition: pg_backup.h:181
int serializable_deferrable
Definition: pg_backup.h:187
int outputNoTableAm
Definition: pg_backup.h:189
int enable_row_security
Definition: pg_backup.h:192
char * outputSuperuser
Definition: pg_backup.h:203
int dumpSections
Definition: pg_backup.h:172
int no_security_labels
Definition: pg_backup.h:182
bool dumpData
Definition: pg_backup.h:210
int no_unlogged_table_data
Definition: pg_backup.h:186
int no_publications
Definition: pg_backup.h:183
ConnParams cparams
Definition: pg_backup.h:167
const char * lockWaitTimeout
Definition: pg_backup.h:174
int no_subscriptions
Definition: pg_backup.h:184
bool aclsSkip
Definition: pg_backup.h:173
int load_via_partition_root
Definition: pg_backup.h:193
int outputClean
Definition: pg_backup.h:198
int do_nothing
Definition: pg_backup.h:206
int outputNoTablespaces
Definition: pg_backup.h:190
int disable_triggers
Definition: pg_backup.h:188
int outputNoOwner
Definition: pg_backup.h:202
int binary_upgrade
Definition: pg_backup.h:169
SimpleStringList schemaExcludeNames
Definition: pg_backup.h:138
int include_everything
Definition: pg_backup.h:123
bool * idWanted
Definition: pg_backup.h:155
int suppressDumpWarnings
Definition: pg_backup.h:149
ConnParams cparams
Definition: pg_backup.h:143
SimpleStringList functionNames
Definition: pg_backup.h:136
char * use_role
Definition: pg_backup.h:106
SimpleStringList tableNames
Definition: pg_backup.h:140
SimpleStringList indexNames
Definition: pg_backup.h:135
pg_compress_specification compression_spec
Definition: pg_backup.h:147
int no_subscriptions
Definition: pg_backup.h:115
SimpleStringList triggerNames
Definition: pg_backup.h:139
int disable_dollar_quoting
Definition: pg_backup.h:108
char * formatName
Definition: pg_backup.h:128
SimpleStringList schemaNames
Definition: pg_backup.h:137
const char * filename
Definition: pg_backup.h:118
int no_security_labels
Definition: pg_backup.h:114
char * tocFile
Definition: pg_backup.h:126
char * superuser
Definition: pg_backup.h:105
const char * lockWaitTimeout
Definition: pg_backup.h:122
int enable_row_security
Definition: pg_backup.h:156
int disable_triggers
Definition: pg_backup.h:101
int noDataForFailedTables
Definition: pg_backup.h:145
trivalue
Definition: vacuumlo.c:35
ArchiveMode
Definition: xlog.h:64