From 3514e6e89a2ddd100057f5820a5cfd0f203cd3f3 Mon Sep 17 00:00:00 2001 From: MMeent Date: Fri, 16 Dec 2022 21:14:57 +0100 Subject: [PATCH] Use neon_nblocks instead of get_cached_relsize (#3132) This prevents us from overwriting all blocks of a relation when we extend the relation without first caching the size - get_cached_relsize does not guarantee a correct result when it returns `false`. --- pgxn/neon/pagestore_smgr.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pgxn/neon/pagestore_smgr.c b/pgxn/neon/pagestore_smgr.c index 73bf330baf..900f44ca10 100644 --- a/pgxn/neon/pagestore_smgr.c +++ b/pgxn/neon/pagestore_smgr.c @@ -1669,7 +1669,7 @@ neon_extend(SMgrRelation reln, ForkNumber forkNum, BlockNumber blkno, * (leaving holes). But this rule is violated in PG-15 where CreateAndCopyRelationData * call smgrextend for destination relation n using size of source relation */ - get_cached_relsize(reln->smgr_rnode.node, forkNum, &n_blocks); + n_blocks = neon_nblocks(reln, forkNum); while (n_blocks < blkno) neon_wallog_page(reln, forkNum, n_blocks++, buffer, true);