Fix potential data corruption during freeze

Fix oversight in 3b97e6823b bug fix. Bitwise AND is used instead of OR and
it cleans all bits in t_infomask heap tuple field.

Backpatch to 9.3
pull/23/head
Teodor Sigaev 9 years ago
parent f1dae097f2
commit 31b8db8e6c
  1. 2
      src/backend/access/heap/heapam.c

@ -6627,7 +6627,7 @@ heap_prepare_freeze_tuple(HeapTupleHeader tuple, TransactionId cutoff_xid,
frz->t_infomask &= ~HEAP_XMAX_BITS; frz->t_infomask &= ~HEAP_XMAX_BITS;
frz->xmax = newxmax; frz->xmax = newxmax;
if (flags & FRM_MARK_COMMITTED) if (flags & FRM_MARK_COMMITTED)
frz->t_infomask &= HEAP_XMAX_COMMITTED; frz->t_infomask |= HEAP_XMAX_COMMITTED;
changed = true; changed = true;
totally_frozen = false; totally_frozen = false;
} }

Loading…
Cancel
Save