summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTeodor Sigaev <teodor@sigaev.ru>2017-07-06 17:20:56 +0300
committerTeodor Sigaev <teodor@sigaev.ru>2017-07-06 17:20:56 +0300
commitf371cc9e9fffc79ab68185e07013d50147ed2bc9 (patch)
tree66cbce61e67955fb392ff6435bf05821c6f46ed7
parent543e00bc1f06247850d85b7382dc3e3db72ae833 (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 898950d9a0c..f4d005bcf0e 100644
--- a/src/backend/access/heap/heapam.c
+++ b/src/backend/access/heap/heapam.c
@@ -5737,7 +5737,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)