diff options
Diffstat (limited to 'src/bin/pg_dump/pg_restore.c')
-rw-r--r-- | src/bin/pg_dump/pg_restore.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/bin/pg_dump/pg_restore.c b/src/bin/pg_dump/pg_restore.c index 5dbe98f7145..0cc17fd416e 100644 --- a/src/bin/pg_dump/pg_restore.c +++ b/src/bin/pg_dump/pg_restore.c @@ -71,6 +71,7 @@ main(int argc, char **argv) RestoreOptions *opts; int c; int exit_code; + int numWorkers = 1; Archive *AH; char *inputFileSpec; static int disable_triggers = 0; @@ -182,7 +183,7 @@ main(int argc, char **argv) break; case 'j': /* number of restore jobs */ - opts->number_of_jobs = atoi(optarg); + numWorkers = atoi(optarg); break; case 'l': /* Dump the TOC summary */ @@ -313,7 +314,7 @@ main(int argc, char **argv) } /* Can't do single-txn mode with multiple connections */ - if (opts->single_txn && opts->number_of_jobs > 1) + if (opts->single_txn && numWorkers > 1) { fprintf(stderr, _("%s: cannot specify both --single-transaction and multiple jobs\n"), progname); @@ -372,6 +373,18 @@ main(int argc, char **argv) if (opts->tocFile) SortTocFromFile(AH, opts); + /* See comments in pg_dump.c */ +#ifdef WIN32 + if (numWorkers > MAXIMUM_WAIT_OBJECTS) + { + fprintf(stderr, _("%s: maximum number of parallel jobs is %d\n"), + progname, MAXIMUM_WAIT_OBJECTS); + exit(1); + } +#endif + + AH->numWorkers = numWorkers; + if (opts->tocSummary) PrintTOCSummary(AH, opts); else |