aboutsummaryrefslogtreecommitdiff
path: root/src/backend/commands/tablecmds.c
diff options
context:
space:
mode:
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>2013-12-04 00:10:47 +0200
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>2013-12-04 00:10:47 +0200
commit9e857436ef7dff8fb8a0bf43cfe62650e2be6be9 (patch)
treee365d1848d19c0ff9180d7a1fa05ba978aae486a /src/backend/commands/tablecmds.c
parent22122c83f1331d03e8317afbfcfbb65bef9c82d2 (diff)
downloadpostgresql-9e857436ef7dff8fb8a0bf43cfe62650e2be6be9.tar.gz
postgresql-9e857436ef7dff8fb8a0bf43cfe62650e2be6be9.zip
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.
Diffstat (limited to 'src/backend/commands/tablecmds.c')
-rw-r--r--src/backend/commands/tablecmds.c8
1 files changed, 6 insertions, 2 deletions
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);