
- Avoid forcing table name to lower case in FixupBlobXrefs - Removed fmtId calls for all ArchiveEntry name fields. This fixes quoting problems in trigger enable/disable code for mixed case table names, and avoids commands like 'pg_restore -t '"TblA"'
175 lines
4.7 KiB
C
175 lines
4.7 KiB
C
/*-------------------------------------------------------------------------
|
|
*
|
|
* pg_backup.h
|
|
*
|
|
* Public interface to the pg_dump archiver routines.
|
|
*
|
|
* See the headers to pg_restore for more details.
|
|
*
|
|
* Copyright (c) 2000, Philip Warner
|
|
* Rights are granted to use this software in any way so long
|
|
* as this notice is not removed.
|
|
*
|
|
* The author is not responsible for loss or damages that may
|
|
* result from it's use.
|
|
*
|
|
*
|
|
* IDENTIFICATION
|
|
* $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_backup.h,v 1.8 2001/03/19 02:35:28 pjw Exp $
|
|
*
|
|
* Modifications - 28-Jun-2000 - pjw@rhyme.com.au
|
|
*
|
|
* Initial version.
|
|
*
|
|
*
|
|
* Modifications - 28-Jul-2000 - pjw@rhyme.com.au (1.45)
|
|
*
|
|
* Added --create, --no-owner, --superuser, --no-reconnect (pg_dump & pg_restore)
|
|
* Added code to dump 'Create Schema' statement (pg_dump)
|
|
* Don't bother to disable/enable triggers if we don't have a superuser (pg_restore)
|
|
* Cleaned up code for reconnecting to database.
|
|
* Force a reconnect as superuser before enabling/disabling triggers.
|
|
*
|
|
* Modifications - 31-Jul-2000 - pjw@rhyme.com.au (1.46, 1.47)
|
|
* Added & Removed --throttle (pg_dump)
|
|
* Fixed minor bug in language dumping code: expbuffres were not being reset.
|
|
* Fixed version number initialization in _allocAH (pg_backup_archiver.c)
|
|
* Added second connection when restoring BLOBs to allow temp. table to survive
|
|
* (db reconnection causes temp tables to be lost).
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
|
|
#ifndef PG_BACKUP__
|
|
#define PG_BACKUP__
|
|
|
|
#include "postgres_fe.h"
|
|
|
|
#include "libpq-fe.h"
|
|
|
|
typedef enum _archiveFormat {
|
|
archUnknown = 0,
|
|
archCustom = 1,
|
|
archFiles = 2,
|
|
archTar = 3,
|
|
archNull = 4
|
|
} ArchiveFormat;
|
|
|
|
/*
|
|
* We may want to have so user-readbale data, but in the mean
|
|
* time this gives us some abstraction and type checking.
|
|
*/
|
|
typedef struct _Archive {
|
|
int verbose;
|
|
/* The rest is private */
|
|
} Archive;
|
|
|
|
typedef int (*DataDumperPtr)(Archive* AH, char* oid, void* userArg);
|
|
|
|
typedef struct _restoreOptions {
|
|
int create; /* Issue commands to create the database */
|
|
int noOwner; /* Don't reconnect to database to match original object owner */
|
|
int noReconnect; /* Don't reconnect to database under any cirsumstances */
|
|
char *superuser; /* Username to use as superuser */
|
|
int dataOnly;
|
|
int dropSchema;
|
|
char *filename;
|
|
int schemaOnly;
|
|
int verbose;
|
|
int aclsSkip;
|
|
int tocSummary;
|
|
char *tocFile;
|
|
int oidOrder;
|
|
int origOrder;
|
|
int rearrange;
|
|
int format;
|
|
char *formatName;
|
|
|
|
int selTypes;
|
|
int selIndex;
|
|
int selFunction;
|
|
int selTrigger;
|
|
int selTable;
|
|
char *indexNames;
|
|
char *functionNames;
|
|
char *tableNames;
|
|
char *triggerNames;
|
|
|
|
int useDB;
|
|
char *dbname;
|
|
char *pgport;
|
|
char *pghost;
|
|
int ignoreVersion;
|
|
int requirePassword;
|
|
|
|
int *idWanted;
|
|
int limitToList;
|
|
int compression;
|
|
|
|
} RestoreOptions;
|
|
|
|
/*
|
|
* Main archiver interface.
|
|
*/
|
|
|
|
extern void exit_horribly(Archive *AH, const char *fmt, ...);
|
|
|
|
/* Lets the archibe know we have a DB connection to shutdown if it dies */
|
|
|
|
PGconn* ConnectDatabase(Archive *AH,
|
|
const char* dbname,
|
|
const char* pghost,
|
|
const char* pgport,
|
|
const int reqPwd,
|
|
const int ignoreVersion);
|
|
|
|
|
|
/* Called to add a TOC entry */
|
|
extern void ArchiveEntry(Archive* AH, const char* oid, const char* name,
|
|
const char* desc, const char* (deps[]), const char* defn,
|
|
const char* dropStmt, const char* copyStmt, const char* owner,
|
|
DataDumperPtr dumpFn, void* dumpArg);
|
|
|
|
/* Called to write *data* to the archive */
|
|
extern int WriteData(Archive* AH, const void* data, int dLen);
|
|
|
|
/*
|
|
extern int StartBlobs(Archive* AH);
|
|
extern int EndBlobs(Archive* AH);
|
|
*/
|
|
extern int StartBlob(Archive* AH, int oid);
|
|
extern int EndBlob(Archive* AH, int oid);
|
|
|
|
extern void CloseArchive(Archive* AH);
|
|
|
|
extern void RestoreArchive(Archive* AH, RestoreOptions *ropt);
|
|
|
|
/* Open an existing archive */
|
|
extern Archive* OpenArchive(const char* FileSpec, const ArchiveFormat fmt);
|
|
|
|
/* Create a new archive */
|
|
extern Archive* CreateArchive(const char* FileSpec, const ArchiveFormat fmt,
|
|
const int compression);
|
|
|
|
/* The --list option */
|
|
extern void PrintTOCSummary(Archive* AH, RestoreOptions *ropt);
|
|
|
|
extern RestoreOptions* NewRestoreOptions(void);
|
|
|
|
/* Rearrange TOC entries */
|
|
extern void MoveToStart(Archive* AH, char *oType);
|
|
extern void MoveToEnd(Archive* AH, char *oType);
|
|
extern void SortTocByOID(Archive* AH);
|
|
extern void SortTocByID(Archive* AH);
|
|
extern void SortTocFromFile(Archive* AH, RestoreOptions *ropt);
|
|
|
|
/* Convenience functions used only when writing DATA */
|
|
extern int archputs(const char *s, Archive* AH);
|
|
extern int archputc(const char c, Archive* AH);
|
|
extern int archprintf(Archive* AH, const char *fmt, ...);
|
|
|
|
#endif
|
|
|
|
|
|
|