diff --git a/src/bin/pg_dump/pg_backup_archiver.c b/src/bin/pg_dump/pg_backup_archiver.c index c57799e84f..e091d87a52 100644 --- a/src/bin/pg_dump/pg_backup_archiver.c +++ b/src/bin/pg_dump/pg_backup_archiver.c @@ -3265,6 +3265,12 @@ restore_toc_entries_parallel(ArchiveHandle *AH) if (AH->version < K_VERS_1_8) die_horribly(AH, modulename, "parallel restore is not supported with archives made by pre-8.0 pg_dump\n"); + /* + * It's also not gonna work if we can't reopen the input file, so let's + * try that immediately. + */ + (AH->ReopenPtr) (AH); + slots = (ParallelSlot *) calloc(sizeof(ParallelSlot), n_slots); /* Adjust dependency information */ diff --git a/src/bin/pg_dump/pg_backup_custom.c b/src/bin/pg_dump/pg_backup_custom.c index 01d5e37999..9224d7bbe2 100644 --- a/src/bin/pg_dump/pg_backup_custom.c +++ b/src/bin/pg_dump/pg_backup_custom.c @@ -735,10 +735,15 @@ _ReopenArchive(ArchiveHandle *AH) if (AH->mode == archModeWrite) die_horribly(AH, modulename, "can only reopen input archives\n"); + + /* + * These two cases are user-facing errors since they represent unsupported + * (but not invalid) use-cases. Word the error messages appropriately. + */ if (AH->fSpec == NULL || strcmp(AH->fSpec, "") == 0) - die_horribly(AH, modulename, "cannot reopen stdin\n"); + die_horribly(AH, modulename, "parallel restore from stdin is not supported\n"); if (!ctx->hasSeek) - die_horribly(AH, modulename, "cannot reopen non-seekable file\n"); + die_horribly(AH, modulename, "parallel restore from non-seekable file is not supported\n"); errno = 0; tpos = ftello(AH->FH);