@@ -1311,7 +1311,9 @@ check_external_dir_mapping(pgBackup *backup)
13111311 return ;
13121312 }
13131313
1314- external_dirs_to_restore = make_external_directory_list (backup -> external_dir_str );
1314+ external_dirs_to_restore = make_external_directory_list (
1315+ backup -> external_dir_str ,
1316+ false);
13151317 /* 1 - each OLDDIR must have an entry in external_dirs_to_restore */
13161318 for (cell = external_remap_list .head ; cell ; cell = cell -> next )
13171319 {
@@ -1707,11 +1709,11 @@ pgFileSize(const char *path)
17071709}
17081710
17091711/*
1710- * Construct parray containing external directories paths
1712+ * Construct parray containing remmaped external directories paths
17111713 * from string like /path1:/path2
17121714 */
17131715parray *
1714- make_external_directory_list (const char * colon_separated_dirs )
1716+ make_external_directory_list (const char * colon_separated_dirs , bool remap )
17151717{
17161718 char * p ;
17171719 parray * list = parray_new ();
@@ -1730,7 +1732,20 @@ make_external_directory_list(const char *colon_separated_dirs)
17301732
17311733 canonicalize_path (external_path );
17321734 if (is_absolute_path (external_path ))
1735+ {
1736+ if (remap )
1737+ {
1738+ char * full_path = get_external_remap (external_path );
1739+
1740+ if (full_path != external_path )
1741+ {
1742+ full_path = pg_strdup (full_path );
1743+ pfree (external_path );
1744+ external_path = full_path ;
1745+ }
1746+ }
17331747 parray_append (list , external_path );
1748+ }
17341749 else
17351750 elog (ERROR , "External directory \"%s\" is not an absolute path" ,
17361751 external_path );
0 commit comments