diff options
Diffstat (limited to 'src/backend/storage')
| -rw-r--r-- | src/backend/storage/smgr/smgr.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/backend/storage/smgr/smgr.c b/src/backend/storage/smgr/smgr.c index 7d1cd5af168..9379e337930 100644 --- a/src/backend/storage/smgr/smgr.c +++ b/src/backend/storage/smgr/smgr.c @@ -194,6 +194,24 @@ smgrsetowner(SMgrRelation *owner, SMgrRelation reln) } /* + * smgrclearowner() -- Remove long-lived reference to an SMgrRelation object + * if one exists + */ +void +smgrclearowner(SMgrRelation *owner, SMgrRelation reln) +{ + /* Do nothing if the SMgrRelation object is not owned by the owner */ + if (reln->smgr_owner != owner) + return; + + /* unset the owner's reference */ + *owner = NULL; + + /* unset our reference to the owner */ + reln->smgr_owner = NULL; +} + +/* * smgrexists() -- Does the underlying file for a fork exist? */ bool |
