summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTeodor Sigaev2017-07-06 14:18:55 +0000
committerTeodor Sigaev2017-07-06 14:18:55 +0000
commit31b8db8e6c1fa4436116f4be5ca789f3a01b9ebf (patch)
treef1fb706beb7a7ed45b77cc9db722a95aebbe8d0d
parentf1dae097f2945ffcb59a9f236843e0e0bbf0920d (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 9766723deb..011f2b9c54 100644
--- a/src/backend/access/heap/heapam.c
+++ b/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->xmax = newxmax;
if (flags & FRM_MARK_COMMITTED)
- frz->t_infomask &= HEAP_XMAX_COMMITTED;
+ frz->t_infomask |= HEAP_XMAX_COMMITTED;
changed = true;
totally_frozen = false;
}