From 465883b0a2b4236ba6b31b648a9eabef3b7cdddb Mon Sep 17 00:00:00 2001 From: Simon Riggs Date: Tue, 28 Jun 2011 22:58:17 +0100 Subject: Introduce compact WAL record for the common case of commit (non-DDL). XLOG_XACT_COMMIT_COMPACT leaves out invalidation messages and relfilenodes, saving considerable space for the vast majority of transaction commits. XLOG_XACT_COMMIT keeps same definition as XLOG_PAGE_MAGIC 0xD067 and earlier. Leonardo Francalanci and Simon Riggs --- src/backend/access/transam/xlog.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'src/backend/access/transam/xlog.c') diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index 4952d223cd..178a458eb7 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -5593,7 +5593,14 @@ recoveryStopsHere(XLogRecord *record, bool *includeThis) if (record->xl_rmid != RM_XACT_ID && record->xl_rmid != RM_XLOG_ID) return false; record_info = record->xl_info & ~XLR_INFO_MASK; - if (record->xl_rmid == RM_XACT_ID && record_info == XLOG_XACT_COMMIT) + if (record->xl_rmid == RM_XACT_ID && record_info == XLOG_XACT_COMMIT_COMPACT) + { + xl_xact_commit_compact *recordXactCommitData; + + recordXactCommitData = (xl_xact_commit_compact *) XLogRecGetData(record); + recordXtime = recordXactCommitData->xact_time; + } + else if (record->xl_rmid == RM_XACT_ID && record_info == XLOG_XACT_COMMIT) { xl_xact_commit *recordXactCommitData; @@ -5680,7 +5687,7 @@ recoveryStopsHere(XLogRecord *record, bool *includeThis) recoveryStopTime = recordXtime; recoveryStopAfter = *includeThis; - if (record_info == XLOG_XACT_COMMIT) + if (record_info == XLOG_XACT_COMMIT_COMPACT || record_info == XLOG_XACT_COMMIT) { if (recoveryStopAfter) ereport(LOG, -- cgit v1.2.1