mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-21 08:29:39 +08:00
recoveryStopsHere() must check the resource manager ID.
Before commit c016ce7281
, this wasn't
needed, but now that multiple resource manager IDs can percolate down
through here, we have to make sure we know which one we've got.
Otherwise, we can confuse (for example) an XLOG_XACT_COMMIT record
with an XLOG_CHECKPOINT_SHUTDOWN record.
Review by Jaime Casanova
This commit is contained in:
parent
c29abc8b6f
commit
aea1f24c2c
@ -5583,21 +5583,21 @@ 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_info == XLOG_XACT_COMMIT)
|
||||
if (record->xl_rmid == RM_XACT_ID && record_info == XLOG_XACT_COMMIT)
|
||||
{
|
||||
xl_xact_commit *recordXactCommitData;
|
||||
|
||||
recordXactCommitData = (xl_xact_commit *) XLogRecGetData(record);
|
||||
recordXtime = recordXactCommitData->xact_time;
|
||||
}
|
||||
else if (record_info == XLOG_XACT_ABORT)
|
||||
else if (record->xl_rmid == RM_XACT_ID && record_info == XLOG_XACT_ABORT)
|
||||
{
|
||||
xl_xact_abort *recordXactAbortData;
|
||||
|
||||
recordXactAbortData = (xl_xact_abort *) XLogRecGetData(record);
|
||||
recordXtime = recordXactAbortData->xact_time;
|
||||
}
|
||||
else if (record_info == XLOG_RESTORE_POINT)
|
||||
else if (record->xl_rmid == RM_XLOG_ID && record_info == XLOG_RESTORE_POINT)
|
||||
{
|
||||
xl_restore_point *recordRestorePointData;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user