@ -194,6 +194,7 @@ void
RestoreArchive ( Archive * AHX , RestoreOptions * ropt )
{
ArchiveHandle * AH = ( ArchiveHandle * ) AHX ;
bool parallel_mode ;
TocEntry * te ;
teReqs reqs ;
OutputContext sav ;
@ -219,6 +220,27 @@ RestoreArchive(Archive *AHX, RestoreOptions *ropt)
if ( ropt - > create & & ropt - > single_txn )
die_horribly ( AH , modulename , " -C and -1 are incompatible options \n " ) ;
/*
* If we ' re going to do parallel restore , there are some restrictions .
*/
parallel_mode = ( ropt - > number_of_jobs > 1 & & ropt - > useDB ) ;
if ( parallel_mode )
{
/* We haven't got round to making this work for all archive formats */
if ( AH - > ClonePtr = = NULL | | AH - > ReopenPtr = = NULL )
die_horribly ( AH , modulename , " parallel restore is not supported with this archive file format \n " ) ;
/* Doesn't work if the archive represents dependencies as OIDs */
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 ) ;
}
/*
* Make sure we won ' t need ( de ) compression we haven ' t got
*/
@ -357,7 +379,7 @@ RestoreArchive(Archive *AHX, RestoreOptions *ropt)
*
* In parallel mode , turn control over to the parallel - restore logic .
*/
if ( ropt - > number_of_jobs > 1 & & ropt - > useDB )
if ( parallel_mode )
restore_toc_entries_parallel ( AH ) ;
else
{
@ -3117,20 +3139,6 @@ restore_toc_entries_parallel(ArchiveHandle *AH)
ahlog ( AH , 2 , " entering restore_toc_entries_parallel \n " ) ;
/* we haven't got round to making this work for all archive formats */
if ( AH - > ClonePtr = = NULL | | AH - > ReopenPtr = = NULL )
die_horribly ( AH , modulename , " parallel restore is not supported with this archive file format \n " ) ;
/* doesn't work if the archive represents dependencies as OIDs, either */
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 */