Skip to content

Commit 936db26

Browse files
committed
Merge branch 'PGPRO-7068'
2 parents 4a3d24b + db6c522 commit 936db26

File tree

5 files changed

+51
-33
lines changed

5 files changed

+51
-33
lines changed

Diff for: datapagemap.h

-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
#ifndef DATAPAGEMAP_H
1010
#define DATAPAGEMAP_H
1111

12-
#include "storage/relfilenode.h"
1312
#include "storage/block.h"
1413

1514
struct datapagemap

Diff for: engine.c

+5-5
Original file line numberDiff line numberDiff line change
@@ -516,22 +516,22 @@ ptrack_mark_file(Oid dbOid, Oid tablespaceOid,
516516
/* Mark of non-temporary relation */
517517
rnode.backend = InvalidBackendId;
518518

519-
rnode.node.dbNode = dbOid;
520-
rnode.node.spcNode = tablespaceOid;
519+
nodeDb(nodeOf(rnode)) = dbOid;
520+
nodeSpc(nodeOf(rnode)) = tablespaceOid;
521521

522522
if (!parse_filename_for_nontemp_relation(filename, &oidchars, &forknum))
523523
return;
524524

525525
memcpy(oidbuf, filename, oidchars);
526526
oidbuf[oidchars] = '\0';
527-
rnode.node.relNode = atooid(oidbuf);
527+
nodeRel(nodeOf(rnode)) = atooid(oidbuf);
528528

529529
/* Compute number of blocks based on file size */
530530
if (stat(filepath, &stat_buf) == 0)
531531
nblocks = stat_buf.st_size / BLCKSZ;
532532

533533
elog(DEBUG1, "ptrack_mark_file %s, nblocks %u rnode db %u spc %u rel %u, forknum %d",
534-
filepath, nblocks, rnode.node.dbNode, rnode.node.spcNode, rnode.node.relNode, forknum);
534+
filepath, nblocks, nodeDb(nodeOf(rnode)), nodeSpc(nodeOf(rnode)), nodeRel(nodeOf(rnode)), forknum);
535535

536536
for (blkno = 0; blkno < nblocks; blkno++)
537537
ptrack_mark_block(rnode, forknum, blkno);
@@ -612,7 +612,7 @@ ptrack_mark_block(RelFileNodeBackend smgr_rnode,
612612
* relations */
613613
return;
614614

615-
bid.relnode = smgr_rnode.node;
615+
bid.relnode = nodeOf(smgr_rnode);
616616
bid.forknum = forknum;
617617
bid.blocknum = blocknum;
618618

Diff for: patches/master-ptrack-core.diff

+17-17
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
diff --git a/src/backend/replication/basebackup.c b/src/backend/replication/basebackup.c
2-
index 5244823ff85..160889b4a04 100644
3-
--- a/src/backend/replication/basebackup.c
4-
+++ b/src/backend/replication/basebackup.c
1+
diff --git a/src/backend/backup/basebackup.c b/src/backend/backup/basebackup.c
2+
index 715428029b3..81f3218540a 100644
3+
--- a/src/backend/backup/basebackup.c
4+
+++ b/src/backend/backup/basebackup.c
55
@@ -197,6 +197,13 @@ static const struct exclude_list_item excludeFiles[] =
66
{"postmaster.pid", false},
77
{"postmaster.opts", false},
@@ -52,7 +52,7 @@ index 658fd95ba95..eee38eba176 100644
5252
* Be paranoid here and fsync all files to ensure the copy is really done.
5353
* But if fsync is disabled, we're done.
5454
diff --git a/src/backend/storage/smgr/md.c b/src/backend/storage/smgr/md.c
55-
index 43edaf5d873..bbaf7500944 100644
55+
index 3deac496eed..07c4ee2ba03 100644
5656
--- a/src/backend/storage/smgr/md.c
5757
+++ b/src/backend/storage/smgr/md.c
5858
@@ -87,6 +87,8 @@ typedef struct _MdfdVec
@@ -63,29 +63,29 @@ index 43edaf5d873..bbaf7500944 100644
6363
+mdwrite_hook_type mdwrite_hook = NULL;
6464

6565
/* Populate a file tag describing an md.c segment file. */
66-
#define INIT_MD_FILETAG(a,xx_rnode,xx_forknum,xx_segno) \
67-
@@ -467,6 +469,9 @@ mdextend(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum,
66+
#define INIT_MD_FILETAG(a,xx_rlocator,xx_forknum,xx_segno) \
67+
@@ -484,6 +486,9 @@ mdextend(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum,
6868
register_dirty_segment(reln, forknum, v);
6969

7070
Assert(_mdnblocks(reln, forknum, v) <= ((BlockNumber) RELSEG_SIZE));
7171
+
7272
+ if (mdextend_hook)
73-
+ mdextend_hook(reln->smgr_rnode, forknum, blocknum);
73+
+ mdextend_hook(reln->smgr_rlocator, forknum, blocknum);
7474
}
7575

7676
/*
77-
@@ -756,6 +761,9 @@ mdwrite(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum,
77+
@@ -773,6 +778,9 @@ mdwrite(SMgrRelation reln, ForkNumber forknum, BlockNumber blocknum,
7878

7979
if (!skipFsync && !SmgrIsTemp(reln))
8080
register_dirty_segment(reln, forknum, v);
8181
+
8282
+ if (mdwrite_hook)
83-
+ mdwrite_hook(reln->smgr_rnode, forknum, blocknum);
83+
+ mdwrite_hook(reln->smgr_rlocator, forknum, blocknum);
8484
}
8585

8686
/*
8787
diff --git a/src/backend/storage/sync/sync.c b/src/backend/storage/sync/sync.c
88-
index e1fb6310038..76d75680b31 100644
88+
index 9d6a9e91090..990d0722229 100644
8989
--- a/src/backend/storage/sync/sync.c
9090
+++ b/src/backend/storage/sync/sync.c
9191
@@ -81,6 +81,8 @@ static MemoryContext pendingOpsCxt; /* context for the above */
@@ -108,7 +108,7 @@ index e1fb6310038..76d75680b31 100644
108108
sync_in_progress = false;
109109
}
110110
diff --git a/src/bin/pg_checksums/pg_checksums.c b/src/bin/pg_checksums/pg_checksums.c
111-
index 21dfe1b6ee5..266ac1ef40a 100644
111+
index 324ccf77834..e82cae5f325 100644
112112
--- a/src/bin/pg_checksums/pg_checksums.c
113113
+++ b/src/bin/pg_checksums/pg_checksums.c
114114
@@ -118,6 +118,11 @@ static const struct exclude_list_item skip[] = {
@@ -186,7 +186,7 @@ index d4772a29650..3318f64359d 100644
186186
/*
187187
* Write an empty XLOG file, containing only the checkpoint record
188188
diff --git a/src/bin/pg_rewind/filemap.c b/src/bin/pg_rewind/filemap.c
189-
index 62529310415..b496f54fb06 100644
189+
index 269ed6446e6..6318a8c1f55 100644
190190
--- a/src/bin/pg_rewind/filemap.c
191191
+++ b/src/bin/pg_rewind/filemap.c
192192
@@ -157,6 +157,10 @@ static const struct exclude_list_item excludeFiles[] =
@@ -228,25 +228,25 @@ index 50a26edeb06..af1602f5154 100644
228228
extern void copy_file(char *fromfile, char *tofile);
229229

230230
diff --git a/src/include/storage/md.h b/src/include/storage/md.h
231-
index ffffa40db71..3ff98e0bf01 100644
231+
index 10aa1b0109b..1415675824e 100644
232232
--- a/src/include/storage/md.h
233233
+++ b/src/include/storage/md.h
234234
@@ -19,6 +19,13 @@
235235
#include "storage/smgr.h"
236236
#include "storage/sync.h"
237237

238-
+typedef void (*mdextend_hook_type) (RelFileNodeBackend smgr_rnode,
238+
+typedef void (*mdextend_hook_type) (RelFileLocatorBackend smgr_rlocator,
239239
+ ForkNumber forknum, BlockNumber blocknum);
240240
+extern PGDLLIMPORT mdextend_hook_type mdextend_hook;
241-
+typedef void (*mdwrite_hook_type) (RelFileNodeBackend smgr_rnode,
241+
+typedef void (*mdwrite_hook_type) (RelFileLocatorBackend smgr_rlocator,
242242
+ ForkNumber forknum, BlockNumber blocknum);
243243
+extern PGDLLIMPORT mdwrite_hook_type mdwrite_hook;
244244
+
245245
/* md storage manager functionality */
246246
extern void mdinit(void);
247247
extern void mdopen(SMgrRelation reln);
248248
diff --git a/src/include/storage/sync.h b/src/include/storage/sync.h
249-
index 9737e1eb67c..914ad86328f 100644
249+
index 049af878dec..7689d49a24e 100644
250250
--- a/src/include/storage/sync.h
251251
+++ b/src/include/storage/sync.h
252252
@@ -55,6 +55,9 @@ typedef struct FileTag

Diff for: ptrack.c

+11-10
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
/* For file_is_in_cfs_tablespace() only. */
4141
#include "common/cfs_common.h"
4242
#endif
43+
#include "port/pg_crc32c.h"
4344
#include "storage/copydir.h"
4445
#include "storage/ipc.h"
4546
#include "storage/lmgr.h"
@@ -53,8 +54,8 @@
5354
#include "utils/pg_lsn.h"
5455

5556
#include "datapagemap.h"
56-
#include "engine.h"
5757
#include "ptrack.h"
58+
#include "engine.h"
5859

5960
PG_MODULE_MAGIC;
6061

@@ -356,16 +357,16 @@ ptrack_gather_filelist(List **filelist, char *path, Oid spcOid, Oid dbOid)
356357

357358
memcpy(oidbuf, de->d_name, oidchars);
358359
oidbuf[oidchars] = '\0';
359-
pfl->relnode.relNode = atooid(oidbuf);
360-
pfl->relnode.dbNode = dbOid;
361-
pfl->relnode.spcNode = spcOid == InvalidOid ? DEFAULTTABLESPACE_OID : spcOid;
362-
pfl->path = GetRelationPath(dbOid, pfl->relnode.spcNode,
363-
pfl->relnode.relNode, InvalidBackendId, pfl->forknum);
360+
nodeRel(pfl->relnode) = atooid(oidbuf);
361+
nodeDb(pfl->relnode) = dbOid;
362+
nodeSpc(pfl->relnode) = spcOid == InvalidOid ? DEFAULTTABLESPACE_OID : spcOid;
363+
pfl->path = GetRelationPath(dbOid, nodeSpc(pfl->relnode),
364+
nodeRel(pfl->relnode), InvalidBackendId, pfl->forknum);
364365

365366
*filelist = lappend(*filelist, pfl);
366367

367368
elog(DEBUG3, "ptrack: added file %s of rel %u to file list",
368-
pfl->path, pfl->relnode.relNode);
369+
pfl->path, nodeRel(pfl->relnode));
369370
}
370371
}
371372
else if (S_ISDIR(fst.st_mode))
@@ -426,9 +427,9 @@ ptrack_filelist_getnext(PtScanCtx * ctx)
426427
ctx->relpath = pfl->path;
427428
}
428429

429-
ctx->bid.relnode.spcNode = pfl->relnode.spcNode;
430-
ctx->bid.relnode.dbNode = pfl->relnode.dbNode;
431-
ctx->bid.relnode.relNode = pfl->relnode.relNode;
430+
nodeSpc(ctx->bid.relnode) = nodeSpc(pfl->relnode);
431+
nodeDb(ctx->bid.relnode) = nodeDb(pfl->relnode);
432+
nodeRel(ctx->bid.relnode) = nodeRel(pfl->relnode);
432433
ctx->bid.forknum = pfl->forknum;
433434
ctx->bid.blocknum = 0;
434435

Diff for: ptrack.h

+18
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,11 @@
1818
#include "access/xlogdefs.h"
1919
#include "storage/block.h"
2020
#include "storage/buf.h"
21+
#if PG_VERSION_NUM >= 160000
22+
#include "storage/relfilelocator.h"
23+
#else
2124
#include "storage/relfilenode.h"
25+
#endif
2226
#include "storage/smgr.h"
2327
#include "utils/relcache.h"
2428

@@ -29,6 +33,20 @@
2933
/* Last ptrack version that changed map file format */
3034
#define PTRACK_MAP_FILE_VERSION_NUM 220
3135

36+
#if PG_VERSION_NUM >= 160000
37+
#define RelFileNode RelFileLocator
38+
#define RelFileNodeBackend RelFileLocatorBackend
39+
#define nodeDb(node) (node).dbOid
40+
#define nodeSpc(node) (node).spcOid
41+
#define nodeRel(node) (node).relNumber
42+
#define nodeOf(ndbck) (ndbck).locator
43+
#else
44+
#define nodeDb(node) (node).dbNode
45+
#define nodeSpc(node) (node).spcNode
46+
#define nodeRel(node) (node).relNode
47+
#define nodeOf(ndbck) (ndbck).node
48+
#endif
49+
3250
/*
3351
* Structure identifying block on the disk.
3452
*/

0 commit comments

Comments
 (0)