diff options
author | Teodor Sigaev <teodor@sigaev.ru> | 2017-07-06 17:19:44 +0300 |
---|---|---|
committer | Teodor Sigaev <teodor@sigaev.ru> | 2017-07-06 17:19:44 +0300 |
commit | 42f62e4c976e1cf90f5e5a6381c4ee656260f230 (patch) | |
tree | 1078a1142488e44478e5f0d6aabeb700b001074a /src | |
parent | f73382877e3ec2ff4b3fcedfd2566ccd90ef3e1c (diff) | |
download | postgresql-42f62e4c976e1cf90f5e5a6381c4ee656260f230.tar.gz postgresql-42f62e4c976e1cf90f5e5a6381c4ee656260f230.zip |
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
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/access/heap/heapam.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c index b019bc1a0d9..dc93b1e8810 100644 --- a/src/backend/access/heap/heapam.c +++ b/src/backend/access/heap/heapam.c @@ -6653,7 +6653,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; } |