@@ -2909,6 +2909,19 @@ heap_page_prepare_for_xid(Relation relation, Buffer buffer,
2909
2909
2910
2910
delta = (int64 ) (xid - FirstNormalTransactionId ) - (int64 ) base ;
2911
2911
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
+
2912
2925
Assert (xid >= base + delta + FirstNormalTransactionId );
2913
2926
Assert (xid <= base + delta + MaxShortTransactionId );
2914
2927
@@ -2967,6 +2980,21 @@ heap_page_prepare_for_xid(Relation relation, Buffer buffer,
2967
2980
{
2968
2981
int64 delta = (freeDelta + requiredDelta ) / 2 ;
2969
2982
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
+
2970
2998
Assert (xid >= base + delta + FirstNormalTransactionId );
2971
2999
Assert (xid <= base + delta + MaxShortTransactionId );
2972
3000
0 commit comments