I've noticed that two variables in RelationCopyStorage() are defined in a scope higher than necessary. Please see the patch.
-- Antonin Houska Web: https://www.cybertec-postgresql.com
diff --git a/src/backend/catalog/storage.c b/src/backend/catalog/storage.c index fddfbf1d8c..14d170823f 100644 --- a/src/backend/catalog/storage.c +++ b/src/backend/catalog/storage.c @@ -336,15 +336,11 @@ void RelationCopyStorage(SMgrRelation src, SMgrRelation dst, ForkNumber forkNum, char relpersistence) { - PGAlignedBlock buf; - Page page; bool use_wal; bool copying_initfork; BlockNumber nblocks; BlockNumber blkno; - page = (Page) buf.data; - /* * The init fork for an unlogged relation in many respects has to be * treated the same as normal relation, changes need to be WAL logged and @@ -364,6 +360,9 @@ RelationCopyStorage(SMgrRelation src, SMgrRelation dst, for (blkno = 0; blkno < nblocks; blkno++) { + PGAlignedBlock buf; + Page page = (Page) buf.data; + /* If we got a cancel signal during the copy of the data, quit */ CHECK_FOR_INTERRUPTS();