aboutsummaryrefslogtreecommitdiff
path: root/src/bin/pg_dump/pg_backup_null.c
diff options
context:
space:
mode:
authorAlvaro Herrera <alvherre@alvh.no-ip.org>2014-10-14 15:00:55 -0300
committerAlvaro Herrera <alvherre@alvh.no-ip.org>2014-10-14 15:00:55 -0300
commit0eea8047bf0e15b402b951e383e39236bdfe57d5 (patch)
tree450b0761bb6d674de42e9018ac38c1d5f40e11f3 /src/bin/pg_dump/pg_backup_null.c
parente0d97d77bf0875e4d5cc7dedfe701d9999bf678c (diff)
downloadpostgresql-0eea8047bf0e15b402b951e383e39236bdfe57d5.tar.gz
postgresql-0eea8047bf0e15b402b951e383e39236bdfe57d5.zip
pg_dump: Reduce use of global variables
Most pg_dump.c global variables, which were passed down individually to dumping routines, are now grouped as members of the new DumpOptions struct, which is used as a local variable and passed down into routines that need it. This helps future development efforts; in particular it is said to enable a mode in which a parallel pg_dump run can output multiple streams, and have them restored in parallel. Also take the opportunity to clean up the pg_dump header files somewhat, to avoid circularity. Author: Joachim Wieland, revised by Álvaro Herrera Reviewed by Peter Eisentraut
Diffstat (limited to 'src/bin/pg_dump/pg_backup_null.c')
-rw-r--r--src/bin/pg_dump/pg_backup_null.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/bin/pg_dump/pg_backup_null.c b/src/bin/pg_dump/pg_backup_null.c
index 3bce5885d09..77cf3fdc51a 100644
--- a/src/bin/pg_dump/pg_backup_null.c
+++ b/src/bin/pg_dump/pg_backup_null.c
@@ -21,12 +21,10 @@
*
*-------------------------------------------------------------------------
*/
+#include "postgres_fe.h"
#include "pg_backup_archiver.h"
#include "pg_backup_utils.h"
-#include "parallel.h"
-
-#include <unistd.h> /* for dup */
#include "libpq/libpq-fs.h"
@@ -35,7 +33,7 @@ static void _WriteBlobData(ArchiveHandle *AH, const void *data, size_t dLen);
static void _EndData(ArchiveHandle *AH, TocEntry *te);
static int _WriteByte(ArchiveHandle *AH, const int i);
static void _WriteBuf(ArchiveHandle *AH, const void *buf, size_t len);
-static void _CloseArchive(ArchiveHandle *AH);
+static void _CloseArchive(ArchiveHandle *AH, DumpOptions *dopt);
static void _PrintTocData(ArchiveHandle *AH, TocEntry *te, RestoreOptions *ropt);
static void _StartBlobs(ArchiveHandle *AH, TocEntry *te);
static void _StartBlob(ArchiveHandle *AH, TocEntry *te, Oid oid);
@@ -198,12 +196,16 @@ _PrintTocData(ArchiveHandle *AH, TocEntry *te, RestoreOptions *ropt)
{
if (te->dataDumper)
{
+ DumpOptions *dopt;
+
AH->currToc = te;
if (strcmp(te->desc, "BLOBS") == 0)
_StartBlobs(AH, te);
- (*te->dataDumper) ((Archive *) AH, te->dataDumperArg);
+ dopt = dumpOptionsFromRestoreOptions(ropt);
+ (*te->dataDumper) ((Archive *) AH, dopt, te->dataDumperArg);
+ pg_free(dopt);
if (strcmp(te->desc, "BLOBS") == 0)
_EndBlobs(AH, te);
@@ -227,7 +229,7 @@ _WriteBuf(ArchiveHandle *AH, const void *buf, size_t len)
}
static void
-_CloseArchive(ArchiveHandle *AH)
+_CloseArchive(ArchiveHandle *AH, DumpOptions *dopt)
{
/* Nothing to do */
}