diff options
| author | Andres Freund | 2025-03-18 17:43:10 +0000 |
|---|---|---|
| committer | Andres Freund | 2025-03-18 17:44:10 +0000 |
| commit | ee578921b60ef9a14eaea54b608549e4f8b14f26 (patch) | |
| tree | d3fbb4800eeda5ea1f5114eb1fd501f6d13d657b /src/backend | |
| parent | 09ef2f8df1cd746d711ffd916bdd2e9526c51b65 (diff) | |
smgr: Make SMgrRelation initialization safer against errors
In case the smgr_open callback failed, the ->pincount field would not be
initialized and the relation would not be put onto the unpinned_relns list.
This buglet was introduced in 21d9c3ee4ef7, in 17.
Discussion: https://postgr.es/m/3vae7l5ozvqtxmd7rr7zaeq3qkuipz365u3rtim5t5wdkr6f4g@vkgf2fogjirl
Backpatch-through: 17
Diffstat (limited to 'src/backend')
| -rw-r--r-- | src/backend/storage/smgr/smgr.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/backend/storage/smgr/smgr.c b/src/backend/storage/smgr/smgr.c index 465e3356c53..bfdaac4721d 100644 --- a/src/backend/storage/smgr/smgr.c +++ b/src/backend/storage/smgr/smgr.c @@ -231,12 +231,12 @@ smgropen(RelFileLocator rlocator, ProcNumber backend) reln->smgr_cached_nblocks[i] = InvalidBlockNumber; reln->smgr_which = 0; /* we only have md.c at present */ - /* implementation-specific initialization */ - smgrsw[reln->smgr_which].smgr_open(reln); - /* it is not pinned yet */ reln->pincount = 0; dlist_push_tail(&unpinned_relns, &reln->node); + + /* implementation-specific initialization */ + smgrsw[reln->smgr_which].smgr_open(reln); } return reln; |
