Skip to content

Commit 8427f74

Browse files
committed
Merge branch 'PGPROEE9_6_transfer_tables' into PGPROEE9_6
2 parents 6d99895 + 9b36b64 commit 8427f74

File tree

4 files changed

+43
-24
lines changed

4 files changed

+43
-24
lines changed

src/bin/pg_dump/pg_backup.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,7 @@ extern RelFileMap* fillRelFileMapSeq(Archive *fout, int *nrels,
318318
const char *dbname, const char *tblname);
319319
extern RelFileMap * fillRelFileMapToast(Archive *fout, RelFileMap *map,
320320
int nrels, int ntoastrels);
321-
extern void transfer_relfile(RelFileMap *map, const char *type_suffix,
321+
extern void transfer_relfile(RelFileMap *map, const char *type_suffix, const char *cfm_suffix,
322322
const char *transfer_dir, bool is_restore,
323323
bool is_copy_mode, bool is_verbose);
324324
extern void transferCheckControlData(Archive *fout, const char *transfer_dir, bool isRestore);

src/bin/pg_dump/pg_backup_db.c

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -626,11 +626,13 @@ doTransferRelRestore(ArchiveHandle *AH, TocEntry *te)
626626
{
627627
ahprintf(AH, "SELECT pg_transfer_cleanup_shmem(%u::oid);", (&map[i])->reloid);
628628

629-
transfer_relfile(&map[i], "", ropt->transfer_dir,
629+
transfer_relfile(&map[i], "", "", ropt->transfer_dir,
630630
is_restore, copy_mode, is_verbose);
631-
transfer_relfile(&map[i], "_fsm", ropt->transfer_dir,
631+
transfer_relfile(&map[i], "", ".cfm", ropt->transfer_dir,
632632
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,
634636
is_restore, copy_mode, is_verbose);
635637
if (ropt->generate_wal)
636638
ahprintf(AH, "SELECT pg_transfer_wal(%u::oid);", (&map[i])->reloid);
@@ -641,7 +643,9 @@ doTransferRelRestore(ArchiveHandle *AH, TocEntry *te)
641643
{
642644
ahprintf(AH, "SELECT pg_transfer_cleanup_shmem(%u::oid);", (&sequencemap[i])->reloid);
643645

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,
645649
is_restore, copy_mode, is_verbose);
646650
if (ropt->generate_wal)
647651
ahprintf(AH, "SELECT pg_transfer_wal(%u::oid);", (&sequencemap[i])->reloid);
@@ -652,11 +656,13 @@ doTransferRelRestore(ArchiveHandle *AH, TocEntry *te)
652656
{
653657
ahprintf(AH, "SELECT pg_transfer_cleanup_shmem(%u::oid);", (&toastmap[i])->reloid);
654658

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,
656662
is_restore, copy_mode, is_verbose);
657-
transfer_relfile(&toastmap[i], "_fsm", ropt->transfer_dir,
663+
transfer_relfile(&toastmap[i], "_fsm", "", ropt->transfer_dir,
658664
is_restore, copy_mode, is_verbose);
659-
transfer_relfile(&toastmap[i], "_vm", ropt->transfer_dir,
665+
transfer_relfile(&toastmap[i], "_vm", "", ropt->transfer_dir,
660666
is_restore, copy_mode, is_verbose);
661667
if (ropt->generate_wal)
662668
ahprintf(AH, "SELECT pg_transfer_wal(%u::oid);", (&toastmap[i])->reloid);
@@ -1241,6 +1247,7 @@ win32_pghardlink(const char *src, const char *dst)
12411247
*/
12421248
void
12431249
transfer_relfile(RelFileMap *map, const char *type_suffix,
1250+
const char *cfm_suffix,
12441251
const char *transfer_dir, bool is_restore,
12451252
bool is_copy_mode, bool is_verbose)
12461253
{
@@ -1262,29 +1269,33 @@ transfer_relfile(RelFileMap *map, const char *type_suffix,
12621269
else
12631270
snprintf(extent_suffix, sizeof(extent_suffix), ".%d", segno);
12641271

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",
12661273
map->datadir,
12671274
map->tablespace,
12681275
map->db_oid,
12691276
map->relfilenode,
12701277
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",
12731281
transfer_dir,
12741282
map->relname,
12751283
type_suffix,
1276-
extent_suffix);
1284+
extent_suffix,
1285+
cfm_suffix);
12771286

12781287
/* Did file open fail? */
12791288
if (!is_restore)
12801289
{
12811290
if (stat(db_file, &statbuf) != 0)
12821291
{
12831292
/*
1284-
* vm or fsm or non-first segment file does not exist?
1293+
* vm, fsm, cfm or non-first segment file does not exist?
12851294
* That's OK, just return
12861295
*/
1287-
if (type_suffix[0] != '\0' || segno != 0)
1296+
if (type_suffix[0] != '\0'
1297+
|| cfm_suffix[0] != '\0'
1298+
|| segno != 0)
12881299
{
12891300
if (errno == ENOENT)
12901301
return;
@@ -1298,10 +1309,12 @@ transfer_relfile(RelFileMap *map, const char *type_suffix,
12981309
if (stat(transfer_file, &statbuf) != 0)
12991310
{
13001311
/*
1301-
* vm or fsm or non-first segment file does not exist?
1312+
* vm, fsm, cfm or non-first segment file does not exist?
13021313
* That's OK, just return
13031314
*/
1304-
if (type_suffix[0] != '\0' || segno != 0)
1315+
if (type_suffix[0] != '\0'
1316+
|| cfm_suffix[0] != '\0'
1317+
|| segno != 0)
13051318
{
13061319
if (errno == ENOENT)
13071320
return;

src/bin/pg_dump/pg_dump.c

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2052,17 +2052,21 @@ doTransferRelDump(Archive *fout, void *dcontext)
20522052
*/
20532053
for (i = 0; i < nrels; i++)
20542054
{
2055-
transfer_relfile(&map[i], "", fout->dopt->transfer_dir,
2055+
transfer_relfile(&map[i], "", "", fout->dopt->transfer_dir,
20562056
is_restore, copy_mode, is_verbose);
2057-
transfer_relfile(&map[i], "_fsm", fout->dopt->transfer_dir,
2057+
transfer_relfile(&map[i], "", ".cfm", fout->dopt->transfer_dir,
20582058
is_restore, copy_mode, is_verbose);
2059-
transfer_relfile(&map[i], "_vm", fout->dopt->transfer_dir,
2059+
transfer_relfile(&map[i], "_fsm", "", fout->dopt->transfer_dir,
2060+
is_restore, copy_mode, is_verbose);
2061+
transfer_relfile(&map[i], "_vm", "", fout->dopt->transfer_dir,
20602062
is_restore, copy_mode, is_verbose);
20612063
}
20622064

20632065
for (i = 0; i < nseqrels; i++)
20642066
{
2065-
transfer_relfile(&sequencemap[i], "", fout->dopt->transfer_dir,
2067+
transfer_relfile(&sequencemap[i], "", "", fout->dopt->transfer_dir,
2068+
is_restore, copy_mode, is_verbose);
2069+
transfer_relfile(&sequencemap[i], "", ".cfm", fout->dopt->transfer_dir,
20662070
is_restore, copy_mode, is_verbose);
20672071
}
20682072

@@ -2072,11 +2076,13 @@ doTransferRelDump(Archive *fout, void *dcontext)
20722076
*/
20732077
for (i = 0; i < ntoastrels*2; i++)
20742078
{
2075-
transfer_relfile(&toastmap[i], "", fout->dopt->transfer_dir,
2079+
transfer_relfile(&toastmap[i], "", "", fout->dopt->transfer_dir,
2080+
is_restore, copy_mode, is_verbose);
2081+
transfer_relfile(&toastmap[i], "", ".cfm", fout->dopt->transfer_dir,
20762082
is_restore, copy_mode, is_verbose);
2077-
transfer_relfile(&toastmap[i], "_fsm", fout->dopt->transfer_dir,
2083+
transfer_relfile(&toastmap[i], "_fsm", "", fout->dopt->transfer_dir,
20782084
is_restore, copy_mode, is_verbose);
2079-
transfer_relfile(&toastmap[i], "_vm", fout->dopt->transfer_dir,
2085+
transfer_relfile(&toastmap[i], "_vm", "", fout->dopt->transfer_dir,
20802086
is_restore, copy_mode, is_verbose);
20812087
}
20822088

src/include/catalog/catversion.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,6 @@
5353
*/
5454

5555
/* yyyymmddN */
56-
#define CATALOG_VERSION_NO 201608131
56+
#define CATALOG_VERSION_NO 201608191
5757

5858
#endif

0 commit comments

Comments
 (0)