Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 6e3e57f

Browse files
author
Alexander Korotkov
committed
Add more error reporting during base shift.
1 parent efbdcbd commit 6e3e57f

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

src/backend/access/heap/heapam.c

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2909,6 +2909,19 @@ heap_page_prepare_for_xid(Relation relation, Buffer buffer,
29092909

29102910
delta = (int64) (xid - FirstNormalTransactionId) - (int64) base;
29112911

2912+
if (xid < base + delta + FirstNormalTransactionId ||
2913+
xid > base + delta + MaxShortTransactionId)
2914+
{
2915+
elog(FATAL, "Fatal xid base calculation error: "
2916+
"xid = " XID_FMT ", "
2917+
"base = " XID_FMT ", "
2918+
"min = %u, "
2919+
"max = %u, "
2920+
"delta = " INT64_FORMAT,
2921+
xid, base, min, max, delta
2922+
);
2923+
}
2924+
29122925
Assert(xid >= base + delta + FirstNormalTransactionId);
29132926
Assert(xid <= base + delta + MaxShortTransactionId);
29142927

@@ -2967,6 +2980,21 @@ heap_page_prepare_for_xid(Relation relation, Buffer buffer,
29672980
{
29682981
int64 delta = (freeDelta + requiredDelta) / 2;
29692982

2983+
if (xid < base + delta + FirstNormalTransactionId ||
2984+
xid > base + delta + MaxShortTransactionId)
2985+
{
2986+
elog(FATAL, "Fatal xid base calculation error: "
2987+
"xid = " XID_FMT ", "
2988+
"base = " XID_FMT ", "
2989+
"min = %u, "
2990+
"max = %u, "
2991+
"freeDelta = " INT64_FORMAT ", "
2992+
"requiredDelta = " INT64_FORMAT ", "
2993+
"delta = " INT64_FORMAT,
2994+
xid, base, min, max, freeDelta, requiredDelta, delta
2995+
);
2996+
}
2997+
29702998
Assert(xid >= base + delta + FirstNormalTransactionId);
29712999
Assert(xid <= base + delta + MaxShortTransactionId);
29723000

0 commit comments

Comments
 (0)