summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTeodor Sigaev <teodor@sigaev.ru>2017-07-06 17:20:17 +0300
committerTeodor Sigaev <teodor@sigaev.ru>2017-07-06 17:20:17 +0300
commitfb2d385e6521c221f2d6681125e6e42ff8b28440 (patch)
treec39e8c4bf283b82dff103f4ca9e8b7fc34ee66df
parent90630a6ad1878a2e2b8a085970e77181d32d8a08 (diff)
Fix potential data corruption during freeze
Fix oversight in 3b97e6823b94 bug fix. Bitwise AND is used instead of OR and it cleans all bits in t_infomask heap tuple field. Backpatch to 9.3
-rw-r--r--src/backend/access/heap/heapam.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c
index 0e268f16af2..3e1399e74e6 100644
--- a/src/backend/access/heap/heapam.c
+++ b/src/backend/access/heap/heapam.c
@@ -6313,7 +6313,7 @@ heap_prepare_freeze_tuple(HeapTupleHeader tuple, TransactionId cutoff_xid,
frz->t_infomask &= ~HEAP_XMAX_BITS;
frz->xmax = newxmax;
if (flags & FRM_MARK_COMMITTED)
- frz->t_infomask &= HEAP_XMAX_COMMITTED;
+ frz->t_infomask |= HEAP_XMAX_COMMITTED;
changed = true;
}
else if (flags & FRM_RETURN_IS_MULTI)