Skip to content

Commit

Permalink
PGPRO-9031: Use updated parse_filename_for_nontemp_relation() interface.
Browse files Browse the repository at this point in the history
  Caused by:
  - 5c47c6546c413d5eb51c1626070a807026e6139d (PostgreSQL)
    Refactor parse_filename_for_nontemp_relation to parse more.
  - f1352d7  (ptrack extension)
    Ptrack 2.0 initial release
  Tags: ptrack
  • Loading branch information
antamel committed Dec 20, 2023
1 parent d427f73 commit 9b79196
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 12 deletions.
10 changes: 4 additions & 6 deletions engine.c
Original file line number Diff line number Diff line change
Expand Up @@ -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))
Expand All @@ -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)
Expand Down
10 changes: 4 additions & 6 deletions ptrack.c
Original file line number Diff line number Diff line change
Expand Up @@ -330,25 +330,23 @@ 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 */
segpath = strstr(de->d_name, ".");
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),
Expand Down

0 comments on commit 9b79196

Please sign in to comment.