Invalidate smgr_targblock in smgrrelease().
authorThomas Munro <tmunro@postgresql.org>
Thu, 17 Aug 2023 03:45:13 +0000 (15:45 +1200)
committerThomas Munro <tmunro@postgresql.org>
Thu, 17 Aug 2023 03:45:13 +0000 (15:45 +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 <hlinnaka@iki.fi>
Discussion: https://postgr.es/m/CA%2BhUKGJ8NTvqLHz6dqbQnt2c8XCki4r2QvXjBQcXpVwxTY_pvA%40mail.gmail.com

src/backend/storage/smgr/smgr.c

index f76c4605dbbe34168e25edaf80d06acd62088455..5d0f3d515c311a4a3f4b5dc0c294d7dea3f7e56c 100644 (file)
@@ -296,6 +296,7 @@ smgrrelease(SMgrRelation reln)
        smgrsw[reln->smgr_which].smgr_close(reln, forknum);
        reln->smgr_cached_nblocks[forknum] = InvalidBlockNumber;
    }
+   reln->smgr_targblock = InvalidBlockNumber;
 }
 
 /*