mirror of
https://github.com/postgres/postgres.git
synced 2025-07-28 23:42:10 +03:00
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
This commit is contained in:
@ -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,
|
||||
|
Reference in New Issue
Block a user