From 9b79196b25b01d5c9eb3ceb3e2ea906ac61c6c7a Mon Sep 17 00:00:00 2001 From: "Anton A. Melnikov" Date: Wed, 20 Dec 2023 10:46:12 +0300 Subject: [PATCH] PGPRO-9031: Use updated parse_filename_for_nontemp_relation() interface. Caused by: - 5c47c6546c413d5eb51c1626070a807026e6139d (PostgreSQL) Refactor parse_filename_for_nontemp_relation to parse more. - f1352d75b3790d43cd252c7584efec8336179212 (ptrack extension) Ptrack 2.0 initial release Tags: ptrack --- engine.c | 10 ++++------ ptrack.c | 10 ++++------ 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/engine.c b/engine.c index 1efc627..cd36435 100644 --- a/engine.c +++ b/engine.c @@ -506,8 +506,8 @@ ptrack_mark_file(Oid dbOid, Oid tablespaceOid, BlockNumber blkno, nblocks = 0; struct stat stat_buf; - int oidchars; - char oidbuf[OIDCHARS + 1]; + RelFileNumber relNumber; + unsigned segno; /* Do not track temporary relations */ if (looks_like_temp_rel_name(filename)) @@ -519,12 +519,10 @@ ptrack_mark_file(Oid dbOid, Oid tablespaceOid, nodeDb(nodeOf(rnode)) = dbOid; nodeSpc(nodeOf(rnode)) = tablespaceOid; - if (!parse_filename_for_nontemp_relation(filename, &oidchars, &forknum)) + if (!parse_filename_for_nontemp_relation(filename, &relNumber, &forknum, &segno)) return; - memcpy(oidbuf, filename, oidchars); - oidbuf[oidchars] = '\0'; - nodeRel(nodeOf(rnode)) = atooid(oidbuf); + nodeRel(nodeOf(rnode)) = relNumber; /* Compute number of blocks based on file size */ if (stat(filepath, &stat_buf) == 0) diff --git a/ptrack.c b/ptrack.c index 704e2ee..1c59f18 100644 --- a/ptrack.c +++ b/ptrack.c @@ -330,15 +330,15 @@ ptrack_gather_filelist(List **filelist, char *path, Oid spcOid, Oid dbOid) /* Regular file inside database directory, otherwise skip it */ if (dbOid != InvalidOid || spcOid == GLOBALTABLESPACE_OID) { - int oidchars; - char oidbuf[OIDCHARS + 1]; + RelFileNumber relNumber; + unsigned segno; char *segpath; PtrackFileList_i *pfl = palloc0(sizeof(PtrackFileList_i)); /* * Check that filename seems to be a regular relation file. */ - if (!parse_filename_for_nontemp_relation(de->d_name, &oidchars, &pfl->forknum)) + if (!parse_filename_for_nontemp_relation(de->d_name, &relNumber, &pfl->forknum, &segno)) continue; /* Parse segno */ @@ -346,9 +346,7 @@ ptrack_gather_filelist(List **filelist, char *path, Oid spcOid, Oid dbOid) pfl->segno = segpath != NULL ? atoi(segpath + 1) : 0; /* Fill the pfl in */ - memcpy(oidbuf, de->d_name, oidchars); - oidbuf[oidchars] = '\0'; - nodeRel(pfl->relnode) = atooid(oidbuf); + nodeRel(pfl->relnode) = relNumber; nodeDb(pfl->relnode) = dbOid; nodeSpc(pfl->relnode) = spcOid == InvalidOid ? DEFAULTTABLESPACE_OID : spcOid; pfl->path = GetRelationPath(dbOid, nodeSpc(pfl->relnode),