33#include "catalog/pg_class_d.h"
34#include "catalog/pg_largeobject_metadata_d.h"
35#include "catalog/pg_shdepend_d.h"
48#define TEXT_DUMP_HEADER "--\n-- PostgreSQL database dump\n--\n\n"
49#define TEXT_DUMPALL_HEADER "--\n-- PostgreSQL database cluster dump\n--\n\n"
51#define TOC_PREFIX_NONE ""
52#define TOC_PREFIX_DATA "Data for "
53#define TOC_PREFIX_STATS "Statistics for "
114 void *callback_data);
118 void *callback_data);
151 opts->include_everything =
true;
154 opts->dumpSchema =
true;
155 opts->dumpData =
true;
156 opts->dumpStatistics =
false;
271 pg_fatal(
"could not close output file: %m");
325 pg_fatal(
"unexpected section code %d",
367 pg_fatal(
"parallel restore is not supported with this archive file format");
371 pg_fatal(
"parallel restore is not supported with archives made by pre-8.0 pg_dump");
392 pg_fatal(
"cannot restore from compressed archive (%s)",
414 pg_fatal(
"direct database connections are not supported in pre-1.3 archives");
468 ahprintf(AH,
"--\n-- PostgreSQL database dump\n--\n\n");
482 ahprintf(AH,
"-- Dumped from database version %s\n",
485 ahprintf(AH,
"-- Dumped by pg_dump version %s\n",
570 "SELECT pg_catalog.lo_unlink(oid) "
571 "FROM pg_catalog.pg_largeobject_metadata "
572 "WHERE oid = '",
"'");
575 "SELECT pg_catalog.lo_unlink('",
613 if (
strncmp(dropStmt,
"ALTER TABLE", 11) == 0)
616 "ALTER TABLE IF EXISTS");
617 dropStmt = dropStmt + 11;
640 strcmp(te->
desc,
"DATABASE PROPERTIES") == 0 ||
641 strncmp(dropStmt,
"CREATE OR REPLACE VIEW", 22) == 0)
651 strcpy(buffer,
"DROP CONSTRAINT");
653 snprintf(buffer,
sizeof(buffer),
"DROP %s",
668 pg_log_warning(
"could not find where to insert IF EXISTS in statement \"%s\"",
832 ahprintf(AH,
"--\n-- PostgreSQL database dump complete\n--\n\n");
912 te->
desc, te->namespace, te->
tag);
1013 pg_log_info(
"processing data for table \"%s.%s\"",
1014 te->namespace, te->
tag);
1047 ahprintf(AH,
"TRUNCATE TABLE ONLY %s;\n\n",
1108 ahprintf(AH,
"COMMIT;\nBEGIN;\n\n");
1135 opts->compression_spec.level = 0;
1136 opts->dumpSchema =
true;
1137 opts->dumpData =
true;
1138 opts->dumpStatistics =
true;
1165 ahprintf(AH,
"ALTER TABLE %s DISABLE TRIGGER ALL;\n\n",
1191 ahprintf(AH,
"ALTER TABLE %s ENABLE TRIGGER ALL;\n\n",
1210 strncmp(te->
defn,
"-- load via partition root ", 27) == 0)
1243 pg_fatal(
"internal error -- WriteData cannot be called outside the context of a DataDumper routine");
1291 if (
opts->nDeps > 0)
1344 ahprintf(AH,
"; dbname: %s\n; TOC Entries: %d\n; Compression: %s\n",
1364 ahprintf(AH,
"; Dump Version: %d.%d-%d\n",
1370 ahprintf(AH,
"; Dumped from database version: %s\n",
1373 ahprintf(AH,
"; Dumped by pg_dump version: %s\n",
1376 ahprintf(AH,
";\n;\n; Selected TOC Entries:\n;\n");
1438 pg_fatal(
"large-object output not supported in chosen format");
1502 "restored %d large objects",
1528 pg_log_info(
"restoring large object with OID %u", oid);
1540 pg_fatal(
"could not create large object %u: %s",
1545 pg_fatal(
"could not open large object %u: %s",
1551 ahprintf(AH,
"SELECT pg_catalog.lo_open(pg_catalog.lo_create('%u'), %d);\n",
1554 ahprintf(AH,
"SELECT pg_catalog.lo_open('%u', %d);\n",
1579 ahprintf(AH,
"SELECT pg_catalog.lo_close(0);\n\n");
1636 pg_fatal(
"could not find entry for ID %d",
1659 pg_fatal(
"could not close TOC file: %m");
1729 fn = fileno(stdout);
1732 fn = fileno(AH->
FH);
1738 fn = fileno(stdout);
1752 pg_fatal(
"could not open output file: %m");
1769 pg_fatal(
"could not close output file: %m");
1836 "wrote %zu bytes of large object data (result = %d)",
1849 (
const unsigned char *) AH->
lo_buf,
1855 ahprintf(AH,
"SELECT pg_catalog.lowrite(0, %s);\n",
buf->data);
1884 ptr = (
const char *) ptr + avail;
2043 pg_fatal(
"bad table dumpId for TABLE DATA item");
2083 for (off = 0; off <
sizeof(
pgoff_t); off++)
2141 for (off = 0; off < AH->
offSize; off++)
2148 pg_fatal(
"file offset in dump file is too large");
2259 pg_fatal(
"directory name too long: \"%s\"", dir);
2272 pg_log_debug(
"attempting to ascertain archive format");
2309 pg_fatal(
"directory \"%s\" does not appear to be a valid archive (\"toc.dat\" does not exist)",
2317 pg_fatal(
"could not open input file \"%s\": %m", AH->
fSpec);
2324 pg_fatal(
"could not open input file: %m");
2330 pg_fatal(
"could not read input file: %m");
2332 pg_fatal(
"input file is too short (read %zu, expected 5)", cnt);
2363 pg_fatal(
"input file appears to be a text format dump. Please use psql.");
2369 pg_fatal(
"input file does not appear to be a valid archive (too short?)");
2375 pg_fatal(
"input file does not appear to be a valid archive");
2384 pg_fatal(
"could not close input file: %m");
2463 pg_fatal(
"could not open stdout for appending: %m");
2551 for (
int i = 0;
i <
ntes;
i++)
2587 void *callback_data)
2593 pg_fatal(
"worker process failed: exit code %d",
2618 (*startPtr) (AH, te);
2691 pg_fatal(
"unexpected TOC entry in WriteToc(): %d %s %s",
2695 pg_fatal(
"error during file seek: %m");
2753 pg_fatal(
"entry ID %d out of range -- perhaps a corrupt TOC",
2788 else if (
strcmp(te->
desc,
"TABLE DATA") == 0 ||
2792 else if (
strcmp(te->
desc,
"CONSTRAINT") == 0 ||
2829 if (
strcmp(tmp,
"true") == 0)
2836 pg_log_warning(
"restoring tables WITH OIDS is not supported anymore");
2894 else if (
strcmp(te->
desc,
"STDSTRINGS") == 0)
2896 else if (
strcmp(te->
desc,
"SEARCHPATH") == 0)
2918 pg_fatal(
"unrecognized encoding \"%s\"",
2924 pg_fatal(
"invalid ENCODING item: %s",
2942 pg_fatal(
"invalid STDSTRINGS item: %s",
3029 if ((
strcmp(te->
desc,
"STATISTICS DATA") == 0) ||
3030 (
strcmp(te->
desc,
"EXTENDED STATISTICS DATA") == 0))
3044 strcmp(te->
desc,
"DATABASE PROPERTIES") == 0)
3113 strcmp(te->
desc,
"PUBLICATION TABLE") == 0 ||
3114 strcmp(te->
desc,
"PUBLICATION TABLES IN SCHEMA") == 0))
3211 for (
int i = 0;
i < te->
nDeps;
i++)
3252 strcmp(te->
desc,
"MATERIALIZED VIEW") == 0 ||
3253 strcmp(te->
desc,
"MATERIALIZED VIEW DATA") == 0 ||
3271 else if (
strcmp(te->
desc,
"FUNCTION") == 0 ||
3314 strncmp(te->
tag,
"LARGE OBJECT", 12) == 0) ||
3316 strncmp(te->
tag,
"LARGE OBJECT", 12) == 0) ||
3329 strncmp(te->
defn,
"-- load via partition root ", 27) == 0)
3355 strncmp(te->
tag,
"LARGE OBJECT", 12) == 0) ||
3357 strncmp(te->
tag,
"LARGE OBJECT", 12) == 0) ||
3359 strncmp(te->
tag,
"LARGE OBJECT", 12) == 0))))
3383 if (
strcmp(te->
desc,
"EVENT TRIGGER") == 0 ||
3384 strcmp(te->
desc,
"MATERIALIZED VIEW DATA") == 0)
3408 if (
strcmp(te->
desc,
"STATISTICS DATA") == 0 &&
3446 ahprintf(AH,
"SET statement_timeout = 0;\n");
3447 ahprintf(AH,
"SET lock_timeout = 0;\n");
3448 ahprintf(AH,
"SET idle_in_transaction_session_timeout = 0;\n");
3449 ahprintf(AH,
"SET transaction_timeout = 0;\n");
3452 ahprintf(AH,
"SET client_encoding = '%s';\n",
3456 ahprintf(AH,
"SET standard_conforming_strings = %s;\n",
3468 ahprintf(AH,
"SET check_function_bodies = false;\n");
3471 ahprintf(AH,
"SET xmloption = content;\n");
3474 ahprintf(AH,
"SET client_min_messages = warning;\n");
3478 ahprintf(AH,
"SET row_security = on;\n");
3480 ahprintf(AH,
"SET row_security = off;\n");
3527 pg_fatal(
"could not set session user to \"%s\": %s",
3669 "could not set \"search_path\" to \"%s\": %s",
3730 "could not set \"default_tablespace\" to %s: %s",
3779 "could not set \"default_table_access_method\": %s",
3801 const char *tableam = te->
tableam;
3828 "could not alter table access method: %s",
3859 strcmp(
type,
"TEXT SEARCH DICTIONARY") == 0 ||
3860 strcmp(
type,
"TEXT SEARCH CONFIGURATION") == 0 ||
3874 if (te->namespace && *te->namespace)
3900 last = first +
strlen(first) - 1;
3903 while (last >= first && (*last ==
'\n' || *last ==
';'))
3932 pg_fatal(
"don't know how to set owner for object type \"%s\"",
type);
3969 ahprintf(AH,
"-- TOC entry %d (class %u OID %u)\n",
3986 ahprintf(AH,
"-- %sName: %s; Type: %s; Schema: %s; Owner: %s",
4035 else if (
strcmp(te->
desc,
"BLOB METADATA") == 0)
4067 pg_fatal(
"unexpected TOC entry in _printTocEntry(): %d %s %s",
4092 const char *p = te->
defn;
4140 ahprintf(AH,
"ALTER %s OWNER TO %s;\n\n",
4215 pg_fatal(
"did not find magic string in file header");
4229 pg_fatal(
"unsupported version (%d.%d) in file header",
4236 if (AH->
intSize >
sizeof(
int))
4237 pg_log_warning(
"archive was made on a machine with larger integers, some operations might fail");
4247 pg_fatal(
"expected format (%d) differs from format found in file (%d)",
4269 pg_log_warning(
"archive is compressed, but this installation does not support compression (%s) -- no data will be available",
4650 for (
j = 0;
j <
te1->nLockDeps;
j++)
4652 for (k = 0; k <
te2->nDeps; k++)
4654 if (
te1->lockDeps[
j] ==
te2->dependencies[k])
4704 if (
te1->dataLength >
te2->dataLength)
4706 if (
te1->dataLength <
te2->dataLength)
4710 if (
te1->dumpId <
te2->dumpId)
4712 if (
te1->dumpId >
te2->dumpId)
4853 void *callback_data)
4869 else if (status != 0)
4870 pg_fatal(
"worker process failed: exit code %d",
5176 pg_log_info(
"table \"%s\" could not be created, will not restore its data",
5218 if (
clone->savedPassword)
5222 clone->public.n_errors = 0;
5232 clone->public.ropt->txn_size = 0;
int lo_write(int fd, const char *buf, int len)
void ParallelBackupEnd(ArchiveHandle *AH, ParallelState *pstate)
void WaitForWorkers(ArchiveHandle *AH, ParallelState *pstate, WFW_WaitOption mode)
ParallelState * ParallelBackupStart(ArchiveHandle *AH)
void DispatchJobForTocEntry(ArchiveHandle *AH, ParallelState *pstate, TocEntry *te, T_Action act, ParallelCompletionPtr callback, void *callback_data)
bool IsEveryWorkerIdle(ParallelState *pstate)
void binaryheap_remove_node(binaryheap *heap, int n)
void binaryheap_add(binaryheap *heap, bh_node_type d)
void binaryheap_free(binaryheap *heap)
binaryheap * binaryheap_allocate(int capacity, binaryheap_comparator compare, void *arg)
#define binaryheap_size(h)
#define binaryheap_empty(h)
#define binaryheap_get_node(h, n)
#define ngettext(s, p, n)
#define Assert(condition)
bool EndCompressFileHandle(CompressFileHandle *CFH)
char * supports_compression(const pg_compress_specification compression_spec)
CompressFileHandle * InitCompressFileHandle(const pg_compress_specification compression_spec)
const char * get_compress_algorithm_name(pg_compress_algorithm algorithm)
char * sanitize_line(const char *str, bool want_hyphen)
#define PGDUMP_STRFTIME_FMT
char * PQdb(const PGconn *conn)
char * PQerrorMessage(const PGconn *conn)
PGresult * PQexec(PGconn *conn, const char *query)
int lo_close(PGconn *conn, int fd)
int lo_open(PGconn *conn, Oid lobjId, int mode)
Oid lo_create(PGconn *conn, Oid lobjId)
void * pg_malloc(size_t size)
char * pg_strdup(const char *in)
void * pg_malloc0(size_t size)
#define pg_realloc_array(pointer, type, count)
#define pg_malloc_array(type, count)
#define pg_malloc0_object(type)
#define pg_malloc_object(type)
#define pg_malloc0_array(type, count)
@ DATA_DIR_SYNC_METHOD_FSYNC
static DataDirSyncMethod sync_method
void pg_log_generic_v(enum pg_log_level level, enum pg_log_part part, const char *pg_restrict fmt, va_list ap)
#define pg_log_debug(...)
static size_t append_data(char *buf, size_t size, size_t nmemb, void *userdata)
static AmcheckOptions opts
void(* SetupWorkerPtrType)(Archive *AH)
enum _archiveFormat ArchiveFormat
void ConnectDatabaseAhx(Archive *AHX, const ConnParams *cparams, bool isReconnect)
void DisconnectDatabase(Archive *AHX)
enum _teSection teSection
static void fix_dependencies(ArchiveHandle *AH)
static void repoint_table_dependencies(ArchiveHandle *AH)
void DeCloneArchive(ArchiveHandle *AH)
static int _discoverArchiveFormat(ArchiveHandle *AH)
#define TEXT_DUMPALL_HEADER
int TocIDRequired(ArchiveHandle *AH, DumpId id)
void ahwrite(const void *ptr, size_t size, size_t nmemb, ArchiveHandle *AH)
void warn_or_exit_horribly(ArchiveHandle *AH, const char *fmt,...)
void WriteDataChunksForTocEntry(ArchiveHandle *AH, TocEntry *te)
static void _becomeOwner(ArchiveHandle *AH, TocEntry *te)
void WriteHead(ArchiveHandle *AH)
int EndLO(Archive *AHX, Oid oid)
static CompressFileHandle * SaveOutput(ArchiveHandle *AH)
static void _becomeUser(ArchiveHandle *AH, const char *user)
static void pending_list_append(TocEntry *l, TocEntry *te)
size_t WriteInt(ArchiveHandle *AH, int i)
void ProcessArchiveRestoreOptions(Archive *AHX)
static int restore_toc_entry(ArchiveHandle *AH, TocEntry *te, bool is_parallel)
static void _moveBefore(TocEntry *pos, TocEntry *te)
RestoreOptions * NewRestoreOptions(void)
static bool _tocEntryIsACL(TocEntry *te)
static void move_to_ready_heap(TocEntry *pending_list, binaryheap *ready_heap, RestorePass pass)
char * ReadStr(ArchiveHandle *AH)
static void _getObjectDescription(PQExpBuffer buf, const TocEntry *te)
static void buildTocEntryArrays(ArchiveHandle *AH)
static void identify_locking_dependencies(ArchiveHandle *AH, TocEntry *te)
static void processEncodingEntry(ArchiveHandle *AH, TocEntry *te)
static void processSearchPathEntry(ArchiveHandle *AH, TocEntry *te)
int archprintf(Archive *AH, const char *fmt,...)
static void StrictNamesCheck(RestoreOptions *ropt)
static void mark_restore_job_done(ArchiveHandle *AH, TocEntry *te, int status, void *callback_data)
size_t WriteOffset(ArchiveHandle *AH, pgoff_t o, int wasSet)
static RestorePass _tocEntryRestorePass(TocEntry *te)
TocEntry * ArchiveEntry(Archive *AHX, CatalogId catalogId, DumpId dumpId, ArchiveOpts *opts)
int StartLO(Archive *AHX, Oid oid)
static void _printTocEntry(ArchiveHandle *AH, TocEntry *te, const char *pfx)
ArchiveHandle * CloneArchive(ArchiveHandle *AH)
static void setupRestoreWorker(Archive *AHX)
static void _reconnectToDB(ArchiveHandle *AH, const char *dbname)
static int TocEntrySizeCompareQsort(const void *p1, const void *p2)
Archive * OpenArchive(const char *FileSpec, const ArchiveFormat fmt)
void StartRestoreLOs(ArchiveHandle *AH)
void RestoreArchive(Archive *AHX, bool append_data)
void CloseArchive(Archive *AHX)
static void pending_list_header_init(TocEntry *l)
static void restore_toc_entries_parallel(ArchiveHandle *AH, ParallelState *pstate, TocEntry *pending_list)
TocEntry * getTocEntryByDumpId(ArchiveHandle *AH, DumpId id)
static void mark_create_done(ArchiveHandle *AH, TocEntry *te)
static void _selectTableAccessMethod(ArchiveHandle *AH, const char *tableam)
void WriteDataChunks(ArchiveHandle *AH, ParallelState *pstate)
static void dumpTimestamp(ArchiveHandle *AH, const char *msg, time_t tim)
int ahprintf(ArchiveHandle *AH, const char *fmt,...)
static void _selectOutputSchema(ArchiveHandle *AH, const char *schemaName)
static void mark_dump_job_done(ArchiveHandle *AH, TocEntry *te, int status, void *callback_data)
static bool is_load_via_partition_root(TocEntry *te)
Archive * CreateArchive(const char *FileSpec, const ArchiveFormat fmt, const pg_compress_specification compression_spec, bool dosync, ArchiveMode mode, SetupWorkerPtrType setupDumpWorker, DataDirSyncMethod sync_method)
static void _enableTriggersIfNecessary(ArchiveHandle *AH, TocEntry *te)
DumpOptions * NewDumpOptions(void)
void SortTocFromFile(Archive *AHX)
int ReadOffset(ArchiveHandle *AH, pgoff_t *o)
static void inhibit_data_for_failed_table(ArchiveHandle *AH, TocEntry *te)
int ReadInt(ArchiveHandle *AH)
static void restore_toc_entries_prefork(ArchiveHandle *AH, TocEntry *pending_list)
static void _printTableAccessMethodNoStorage(ArchiveHandle *AH, TocEntry *te)
static void restore_toc_entries_postfork(ArchiveHandle *AH, TocEntry *pending_list)
static void RestoreOutput(ArchiveHandle *AH, CompressFileHandle *savedOutput)
static void _doSetFixedOutputState(ArchiveHandle *AH)
void PrintTOCSummary(Archive *AHX)
static void processStdStringsEntry(ArchiveHandle *AH, TocEntry *te)
static int TocEntrySizeCompareBinaryheap(void *p1, void *p2, void *arg)
static int RestoringToDB(ArchiveHandle *AH)
void ReadHead(ArchiveHandle *AH)
void SetArchiveOptions(Archive *AH, DumpOptions *dopt, RestoreOptions *ropt)
static void pending_list_remove(TocEntry *te)
static bool has_lock_conflicts(TocEntry *te1, TocEntry *te2)
void ReadToc(ArchiveHandle *AH)
static void reduce_dependencies(ArchiveHandle *AH, TocEntry *te, binaryheap *ready_heap)
void EndRestoreLO(ArchiveHandle *AH, Oid oid)
static void _selectTablespace(ArchiveHandle *AH, const char *tablespace)
void WriteToc(ArchiveHandle *AH)
void archputs(const char *s, Archive *AH)
static bool _fileExistsInDirectory(const char *dir, const char *filename)
static void SetOutput(ArchiveHandle *AH, const char *filename, const pg_compress_specification compression_spec, bool append_data)
DumpOptions * dumpOptionsFromRestoreOptions(RestoreOptions *ropt)
static int _tocEntryRequired(TocEntry *te, teSection curSection, ArchiveHandle *AH)
static void _doSetSessionAuth(ArchiveHandle *AH, const char *user)
void EndRestoreLOs(ArchiveHandle *AH)
void StartRestoreLO(ArchiveHandle *AH, Oid oid, bool drop)
void InitDumpOptions(DumpOptions *opts)
static ArchiveHandle * _allocAH(const char *FileSpec, const ArchiveFormat fmt, const pg_compress_specification compression_spec, bool dosync, ArchiveMode mode, SetupWorkerPtrType setupWorkerPtr, DataDirSyncMethod sync_method)
static void dump_lo_buf(ArchiveHandle *AH)
static TocEntry * pop_next_work_item(binaryheap *ready_heap, ParallelState *pstate)
void WriteData(Archive *AHX, const void *data, size_t dLen)
int parallel_restore(ArchiveHandle *AH, TocEntry *te)
size_t WriteStr(ArchiveHandle *AH, const char *c)
static void _disableTriggersIfNecessary(ArchiveHandle *AH, TocEntry *te)
void InitArchiveFmt_Null(ArchiveHandle *AH)
#define WORKER_CREATE_DONE
void IssueACLPerBlob(ArchiveHandle *AH, TocEntry *te)
#define appendByteaLiteralAHX(buf, str, len, AH)
void struct _archiveOpts ArchiveOpts
void(* EndDataPtrType)(ArchiveHandle *AH, TocEntry *te)
void(* StartDataPtrType)(ArchiveHandle *AH, TocEntry *te)
#define ARCHIVE_MAJOR(version)
#define ARCHIVE_MINOR(version)
#define RESTORE_PASS_LAST
void InitArchiveFmt_Custom(ArchiveHandle *AH)
void InitArchiveFmt_Tar(ArchiveHandle *AH)
#define appendStringLiteralAHX(buf, str, AH)
void DropLOIfExists(ArchiveHandle *AH, Oid oid)
#define MAKE_ARCHIVE_VERSION(major, minor, rev)
void ReconnectToServer(ArchiveHandle *AH, const char *dbname)
#define ARCHIVE_REV(version)
bool isValidTarHeader(char *header)
#define WORKER_IGNORED_ERRORS
void IssueCommandPerBlob(ArchiveHandle *AH, TocEntry *te, const char *cmdBegin, const char *cmdEnd)
#define K_OFFSET_POS_NOT_SET
#define READ_ERROR_EXIT(fd)
void InitArchiveFmt_Directory(ArchiveHandle *AH)
#define WORKER_INHIBIT_DATA
void EndDBCopyMode(Archive *AHX, const char *tocEntryTag)
int ExecuteSqlCommandBuf(Archive *AHX, const char *buf, size_t bufLen)
void exit_nicely(int code)
static PgChecksumMode mode
static void setupDumpWorker(Archive *AH)
bool pg_get_line_buf(FILE *stream, StringInfo buf)
static char buf[DEFAULT_XLOG_SEG_SIZE]
#define pg_encoding_to_char
#define pg_char_to_encoding
#define pg_log_warning(...)
#define qsort(a, b, c, d)
PQExpBuffer createPQExpBuffer(void)
void initPQExpBuffer(PQExpBuffer str)
void appendPQExpBuffer(PQExpBuffer str, const char *fmt,...)
void destroyPQExpBuffer(PQExpBuffer str)
void appendPQExpBufferChar(PQExpBuffer str, char ch)
void appendPQExpBufferStr(PQExpBuffer str, const char *data)
void termPQExpBuffer(PQExpBuffer str)
size_t pvsnprintf(char *buf, size_t len, const char *fmt, va_list args)
char * psprintf(const char *fmt,...)
const char * simple_string_list_not_touched(SimpleStringList *list)
bool simple_string_list_member(SimpleStringList *list, const char *val)
const char * fmtQualifiedId(const char *schema, const char *id)
const char * fmtId(const char *rawid)
void setFmtEncoding(int encoding)
void appendPsqlMetaConnect(PQExpBuffer buf, const char *dbname)
void initStringInfo(StringInfo str)
SimpleStringListCell * head
DeClonePtrType DeClonePtr
DataDirSyncMethod sync_method
struct _tocEntry * lastErrorTE
ReadExtraTocPtrType ReadExtraTocPtr
char * archiveDumpVersion
struct _tocEntry * currentTE
CustomOutPtrType CustomOutPtr
StartLOsPtrType StartLOsPtr
ArchiveEntryPtrType ArchiveEntryPtr
pg_compress_specification compression_spec
WriteDataPtrType WriteDataPtr
StartLOPtrType StartLOPtr
struct _tocEntry ** tocsByDumpId
WriteBufPtrType WriteBufPtr
PrepParallelRestorePtrType PrepParallelRestorePtr
WriteExtraTocPtrType WriteExtraTocPtr
ReadBytePtrType ReadBytePtr
PrintTocDataPtrType PrintTocDataPtr
struct _tocEntry * currToc
WriteBytePtrType WriteBytePtr
ReadBufPtrType ReadBufPtr
PrintExtraTocPtrType PrintExtraTocPtr
ArchiverStage lastErrorStage
StartDataPtrType StartDataPtr
ArchiverOutput outputKind
EndDataPtrType EndDataPtr
char * archiveRemoteVersion
SetupWorkerPtrType SetupWorkerPtr
int disable_dollar_quoting
const char * lockWaitTimeout
SimpleStringList schemaExcludeNames
SimpleStringList functionNames
SimpleStringList tableNames
SimpleStringList indexNames
pg_compress_specification compression_spec
SimpleStringList triggerNames
int disable_dollar_quoting
SimpleStringList schemaNames
const char * lockWaitTimeout
int noDataForFailedTables
struct _tocEntry * pending_next
struct _tocEntry * pending_prev
const void * dataDumperArg
const void * defnDumperArg
pg_compress_algorithm algorithm
static void * fn(void *arg)
#define fseeko(stream, offset, origin)
static void StartTransaction(void)
static void CommitTransaction(void)