diff --git a/src/backend/storage/smgr/md.c b/src/backend/storage/smgr/md.c index f99c9d900134..1ef27ebffab7 100644 --- a/src/backend/storage/smgr/md.c +++ b/src/backend/storage/smgr/md.c @@ -137,8 +137,7 @@ static void mdunlinkfork(RelFileLocatorBackend rlocator, ForkNumber forknum, static MdfdVec *mdopenfork(SMgrRelation reln, ForkNumber forknum, int behavior); static void register_dirty_segment(SMgrRelation reln, ForkNumber forknum, MdfdVec *seg); -static void register_unlink_segment(RelFileLocatorBackend rlocator, ForkNumber forknum, - BlockNumber segno); +static void register_unlink_tombstone(RelFileLocatorBackend rlocator); static void register_forget_request(RelFileLocatorBackend rlocator, ForkNumber forknum, BlockNumber segno); static void _fdvec_resize(SMgrRelation reln, @@ -410,7 +409,7 @@ mdunlinkfork(RelFileLocatorBackend rlocator, ForkNumber forknum, bool isRedo) /* Register request to unlink first segment later */ save_errno = errno; - register_unlink_segment(rlocator, forknum, 0 /* first seg */ ); + register_unlink_tombstone(rlocator); errno = save_errno; } @@ -1532,15 +1531,16 @@ register_dirty_segment(SMgrRelation reln, ForkNumber forknum, MdfdVec *seg) } /* - * register_unlink_segment() -- Schedule a file to be deleted after next checkpoint + * register_unlink_tombstone() + * + * Schedule a file to be deleted after next checkpoint */ static void -register_unlink_segment(RelFileLocatorBackend rlocator, ForkNumber forknum, - BlockNumber segno) +register_unlink_tombstone(RelFileLocatorBackend rlocator) { FileTag tag; - INIT_MD_FILETAG(tag, rlocator.locator, forknum, segno); + INIT_MD_FILETAG(tag, rlocator.locator, MAIN_FORKNUM, 0); /* Should never be used with temp relations */ Assert(!RelFileLocatorBackendIsTemp(rlocator)); @@ -1933,6 +1933,9 @@ mdunlinkfiletag(const FileTag *ftag, char *path) { RelPathStr p; + /* We only unlink tombstone files through this mechanism */ + Assert(ftag->forknum == MAIN_FORKNUM && ftag->segno == 0); + /* Compute the path. */ p = relpathperm(ftag->rlocator, MAIN_FORKNUM); strlcpy(path, p.str, MAXPGPATH);