mirror of
https://github.com/postgres/postgres.git
synced 2025-09-03 15:22:11 +03:00
Fix xl_heap_lock WAL record field's data type.
Make xl_heap_lock's infobits_set field of type uint8, not int8. Using
int8 isn't appropriate given that the field just holds status bits.
This fixes an oversight in commit 0ac5ad5134
.
In passing rename the nearby TransactionId field to "xmax" to make
things consistency with related records, such as xl_heap_lock_updated.
Deliberately avoid a bump in XLOG_PAGE_MAGIC. No backpatch, either.
Author: Peter Geoghegan <pg@bowt.ie>
Discussion: https://postgr.es/m/CAH2-WzkCd3kOS8b7Rfxw7Mh1_6jvX=Nzo-CWR1VBTiOtVZkWHA@mail.gmail.com
This commit is contained in:
@@ -3567,7 +3567,7 @@ l2:
|
||||
XLogRegisterBuffer(0, buffer, REGBUF_STANDARD);
|
||||
|
||||
xlrec.offnum = ItemPointerGetOffsetNumber(&oldtup.t_self);
|
||||
xlrec.locking_xid = xmax_lock_old_tuple;
|
||||
xlrec.xmax = xmax_lock_old_tuple;
|
||||
xlrec.infobits_set = compute_infobits(oldtup.t_data->t_infomask,
|
||||
oldtup.t_data->t_infomask2);
|
||||
xlrec.flags =
|
||||
@@ -4777,7 +4777,7 @@ failed:
|
||||
XLogRegisterBuffer(0, *buffer, REGBUF_STANDARD);
|
||||
|
||||
xlrec.offnum = ItemPointerGetOffsetNumber(&tuple->t_self);
|
||||
xlrec.locking_xid = xid;
|
||||
xlrec.xmax = xid;
|
||||
xlrec.infobits_set = compute_infobits(new_infomask,
|
||||
tuple->t_data->t_infomask2);
|
||||
xlrec.flags = cleared_all_frozen ? XLH_LOCK_ALL_FROZEN_CLEARED : 0;
|
||||
@@ -9848,7 +9848,7 @@ heap_xlog_lock(XLogReaderState *record)
|
||||
BufferGetBlockNumber(buffer),
|
||||
offnum);
|
||||
}
|
||||
HeapTupleHeaderSetXmax(htup, xlrec->locking_xid);
|
||||
HeapTupleHeaderSetXmax(htup, xlrec->xmax);
|
||||
HeapTupleHeaderSetCmax(htup, FirstCommandId, false);
|
||||
PageSetLSN(page, lsn);
|
||||
MarkBufferDirty(buffer);
|
||||
|
@@ -139,8 +139,8 @@ heap_desc(StringInfo buf, XLogReaderState *record)
|
||||
{
|
||||
xl_heap_lock *xlrec = (xl_heap_lock *) rec;
|
||||
|
||||
appendStringInfo(buf, "off: %u, xid: %u, flags: 0x%02X",
|
||||
xlrec->offnum, xlrec->locking_xid, xlrec->flags);
|
||||
appendStringInfo(buf, "off: %u, xmax: %u, flags: 0x%02X",
|
||||
xlrec->offnum, xlrec->xmax, xlrec->flags);
|
||||
out_infobits(buf, xlrec->infobits_set);
|
||||
}
|
||||
else if (info == XLOG_HEAP_INPLACE)
|
||||
|
Reference in New Issue
Block a user