@@ -626,11 +626,13 @@ doTransferRelRestore(ArchiveHandle *AH, TocEntry *te)
626
626
{
627
627
ahprintf (AH , "SELECT pg_transfer_cleanup_shmem(%u::oid);" , (& map [i ])-> reloid );
628
628
629
- transfer_relfile (& map [i ], "" , ropt -> transfer_dir ,
629
+ transfer_relfile (& map [i ], "" , "" , ropt -> transfer_dir ,
630
630
is_restore , copy_mode , is_verbose );
631
- transfer_relfile (& map [i ], "_fsm " , ropt -> transfer_dir ,
631
+ transfer_relfile (& map [i ], "" , ".cfm " , ropt -> transfer_dir ,
632
632
is_restore , copy_mode , is_verbose );
633
- transfer_relfile (& map [i ], "_vm" , ropt -> transfer_dir ,
633
+ transfer_relfile (& map [i ], "_fsm" , "" , ropt -> transfer_dir ,
634
+ is_restore , copy_mode , is_verbose );
635
+ transfer_relfile (& map [i ], "_vm" , "" , ropt -> transfer_dir ,
634
636
is_restore , copy_mode , is_verbose );
635
637
if (ropt -> generate_wal )
636
638
ahprintf (AH , "SELECT pg_transfer_wal(%u::oid);" , (& map [i ])-> reloid );
@@ -641,7 +643,9 @@ doTransferRelRestore(ArchiveHandle *AH, TocEntry *te)
641
643
{
642
644
ahprintf (AH , "SELECT pg_transfer_cleanup_shmem(%u::oid);" , (& sequencemap [i ])-> reloid );
643
645
644
- transfer_relfile (& sequencemap [i ], "" , ropt -> transfer_dir ,
646
+ transfer_relfile (& sequencemap [i ], "" , "" , ropt -> transfer_dir ,
647
+ is_restore , copy_mode , is_verbose );
648
+ transfer_relfile (& sequencemap [i ], "" , ".cfm" , ropt -> transfer_dir ,
645
649
is_restore , copy_mode , is_verbose );
646
650
if (ropt -> generate_wal )
647
651
ahprintf (AH , "SELECT pg_transfer_wal(%u::oid);" , (& sequencemap [i ])-> reloid );
@@ -652,11 +656,13 @@ doTransferRelRestore(ArchiveHandle *AH, TocEntry *te)
652
656
{
653
657
ahprintf (AH , "SELECT pg_transfer_cleanup_shmem(%u::oid);" , (& toastmap [i ])-> reloid );
654
658
655
- transfer_relfile (& toastmap [i ], "" , ropt -> transfer_dir ,
659
+ transfer_relfile (& toastmap [i ], "" , "" , ropt -> transfer_dir ,
660
+ is_restore , copy_mode , is_verbose );
661
+ transfer_relfile (& toastmap [i ], "" , ".cfm" , ropt -> transfer_dir ,
656
662
is_restore , copy_mode , is_verbose );
657
- transfer_relfile (& toastmap [i ], "_fsm" , ropt -> transfer_dir ,
663
+ transfer_relfile (& toastmap [i ], "_fsm" , "" , ropt -> transfer_dir ,
658
664
is_restore , copy_mode , is_verbose );
659
- transfer_relfile (& toastmap [i ], "_vm" , ropt -> transfer_dir ,
665
+ transfer_relfile (& toastmap [i ], "_vm" , "" , ropt -> transfer_dir ,
660
666
is_restore , copy_mode , is_verbose );
661
667
if (ropt -> generate_wal )
662
668
ahprintf (AH , "SELECT pg_transfer_wal(%u::oid);" , (& toastmap [i ])-> reloid );
@@ -1241,6 +1247,7 @@ win32_pghardlink(const char *src, const char *dst)
1241
1247
*/
1242
1248
void
1243
1249
transfer_relfile (RelFileMap * map , const char * type_suffix ,
1250
+ const char * cfm_suffix ,
1244
1251
const char * transfer_dir , bool is_restore ,
1245
1252
bool is_copy_mode , bool is_verbose )
1246
1253
{
@@ -1262,29 +1269,33 @@ transfer_relfile(RelFileMap *map, const char *type_suffix,
1262
1269
else
1263
1270
snprintf (extent_suffix , sizeof (extent_suffix ), ".%d" , segno );
1264
1271
1265
- snprintf (db_file , sizeof (db_file ), "%s%s/%u/%u%s%s" ,
1272
+ snprintf (db_file , sizeof (db_file ), "%s%s/%u/%u%s%s%s " ,
1266
1273
map -> datadir ,
1267
1274
map -> tablespace ,
1268
1275
map -> db_oid ,
1269
1276
map -> relfilenode ,
1270
1277
type_suffix ,
1271
- extent_suffix );
1272
- snprintf (transfer_file , sizeof (transfer_file ), "%s%s%s%s" ,
1278
+ extent_suffix ,
1279
+ cfm_suffix );
1280
+ snprintf (transfer_file , sizeof (transfer_file ), "%s%s%s%s%s" ,
1273
1281
transfer_dir ,
1274
1282
map -> relname ,
1275
1283
type_suffix ,
1276
- extent_suffix );
1284
+ extent_suffix ,
1285
+ cfm_suffix );
1277
1286
1278
1287
/* Did file open fail? */
1279
1288
if (!is_restore )
1280
1289
{
1281
1290
if (stat (db_file , & statbuf ) != 0 )
1282
1291
{
1283
1292
/*
1284
- * vm or fsm or non-first segment file does not exist?
1293
+ * vm, fsm, cfm or non-first segment file does not exist?
1285
1294
* That's OK, just return
1286
1295
*/
1287
- if (type_suffix [0 ] != '\0' || segno != 0 )
1296
+ if (type_suffix [0 ] != '\0'
1297
+ || cfm_suffix [0 ] != '\0'
1298
+ || segno != 0 )
1288
1299
{
1289
1300
if (errno == ENOENT )
1290
1301
return ;
@@ -1298,10 +1309,12 @@ transfer_relfile(RelFileMap *map, const char *type_suffix,
1298
1309
if (stat (transfer_file , & statbuf ) != 0 )
1299
1310
{
1300
1311
/*
1301
- * vm or fsm or non-first segment file does not exist?
1312
+ * vm, fsm, cfm or non-first segment file does not exist?
1302
1313
* That's OK, just return
1303
1314
*/
1304
- if (type_suffix [0 ] != '\0' || segno != 0 )
1315
+ if (type_suffix [0 ] != '\0'
1316
+ || cfm_suffix [0 ] != '\0'
1317
+ || segno != 0 )
1305
1318
{
1306
1319
if (errno == ENOENT )
1307
1320
return ;
0 commit comments