Invalidate smgr_targblock in smgrrelease().
authorThomas Munro
Thu, 17 Aug 2023 03:45:13 +0000 (15:45 +1200)
committerThomas Munro
Thu, 17 Aug 2023 03:54:31 +0000 (15:54 +1200)
In rare circumstances involving relfilenode reuse, it might have been
possible for smgr_targblock to finish up pointing past the end.

Oversight in b74e94dc.  Back-patch to 15.

Reviewed-by: Heikki Linnakangas
Discussion: https://postgr.es/m/CA%2BhUKGJ8NTvqLHz6dqbQnt2c8XCki4r2QvXjBQcXpVwxTY_pvA%40mail.gmail.com

src/backend/storage/smgr/smgr.c

index a477f70f0e382af85e8113208ec18dc7da14b659..631733bb6600172867269473dfa101b79279e8c3 100644 (file)
@@ -292,6 +292,7 @@ smgrrelease(SMgrRelation reln)
        smgrsw[reln->smgr_which].smgr_close(reln, forknum);
        reln->smgr_cached_nblocks[forknum] = InvalidBlockNumber;
    }
+   reln->smgr_targblock = InvalidBlockNumber;
 }
 
 /*