From 9e857436ef7dff8fb8a0bf43cfe62650e2be6be9 Mon Sep 17 00:00:00 2001 From: Heikki Linnakangas Date: Wed, 4 Dec 2013 00:10:47 +0200 Subject: Don't include unused space in LOG_NEWPAGE records. This is the same trick we use when taking a full page image of a buffer passed to XLogInsert. --- src/backend/commands/tablecmds.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src/backend/commands/tablecmds.c') diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c index 1aa1ad91277..1d9f29a7b7c 100644 --- a/src/backend/commands/tablecmds.c +++ b/src/backend/commands/tablecmds.c @@ -9130,9 +9130,13 @@ copy_relation_data(SMgrRelation src, SMgrRelation dst, src->smgr_rnode.backend, forkNum)))); - /* XLOG stuff */ + /* + * WAL-log the copied page. Unfortunately we don't know what kind of + * a page this is, so we have to log the full page including any + * unused space. + */ if (use_wal) - log_newpage(&dst->smgr_rnode.node, forkNum, blkno, page); + log_newpage(&dst->smgr_rnode.node, forkNum, blkno, page, false); PageSetChecksumInplace(page, blkno); -- cgit v1.2.3