here's the whole version of delta patch diff --git a/src/bin/pg_dump/pg_restore.c b/src/bin/pg_dump/pg_restore.c index 42c4fe3ce2..90e6b71a50 100644 --- a/src/bin/pg_dump/pg_restore.c +++ b/src/bin/pg_dump/pg_restore.c @@ -84,7 +84,7 @@ static int restoreAllDatabases(PGconn *conn, const char *dumpdirpath, SimpleStringList db_exclude_patterns, RestoreOptions *opts, int numWorkers); static void execute_global_sql_commands(PGconn *conn, const char *dumpdirpath, const char *outfile); -static void copy_global_file_to_out_file(const char *outfile, FILE *pfile); +static void copy_global_file(const char *outfile, FILE *pfile); static int filter_dbnames_for_restore(PGconn *conn, SimpleDatabaseOidList *dbname_oid_list, SimpleStringList db_exclude_patterns); @@ -1178,7 +1178,7 @@ execute_global_sql_commands(PGconn *conn, const char *dumpdirpath, const char *o */ if (outfile) { - copy_global_file_to_out_file(outfile, pfile); + copy_global_file(outfile, pfile); return; }
@@ -1207,24 +1207,35 @@ execute_global_sql_commands(PGconn *conn, const char *dumpdirpath, const char *o } /* - * copy_global_file_to_out_file + * copy_global_file * - * This will copy global.dat file into out file. + * This will copy global.dat file into out file, if file is given + * else copies to stdout. + * */ static void -copy_global_file_to_out_file(const char *outfile, FILE *pfile) +copy_global_file(const char *outfile, FILE *pfile) { char out_file_path[MAXPGPATH]; FILE *ofile; int c; - snprintf(out_file_path, MAXPGPATH, "%s", outfile); - ofile = fopen(out_file_path, PG_BINARY_W); + if (strcmp(outfile, "-") == 0) + { + int fn = fileno(stdout); + ofile = fdopen(dup(fn), PG_BINARY_W); + } + else + { + snprintf(out_file_path, MAXPGPATH, "%s", outfile); + ofile = fopen(out_file_path, PG_BINARY_W); + } + if (ofile == NULL) { fclose(pfile); - pg_fatal("could not open file: \"%s\"", out_file_path); + pg_fatal("could not open file: \"%s\"", outfile); } /* Now append global.dat into out file. */ > Regards, > Srinath Reddy Sadipiralla, > EDB: https://www.enterprisedb.com <http://www.enterprisedb.com/> > >>