aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlvaro Herrera <alvherre@alvh.no-ip.org>2018-03-01 18:07:46 -0300
committerAlvaro Herrera <alvherre@alvh.no-ip.org>2018-03-01 18:07:46 -0300
commitaad956adaf492245f64493a9d3fad949252a1d2b (patch)
tree9ca10ca634416c20bf734ae6518b5bde87109eb8
parent147b59971eba696ef99c0ff9d466adddf8158d52 (diff)
downloadpostgresql-aad956adaf492245f64493a9d3fad949252a1d2b.tar.gz
postgresql-aad956adaf492245f64493a9d3fad949252a1d2b.zip
Relax overly strict sanity check for upgraded ancient databases
Commit 4800f16a7ad0 added some sanity checks to ensure we don't accidentally corrupt data, but in one of them we failed to consider the effects of a database upgraded from 9.2 or earlier, where a tuple exclusively locked prior to the upgrade has a slightly different bit pattern. Fix that by using the macro that we fixed in commit 74ebba84aeb6 for similar situations. Reported-by: Alexandre Garcia Reviewed-by: Andres Freund Discussion: https://postgr.es/m/CAPYLKR6yxV4=pfW0Gwij7aPNiiPx+3ib4USVYnbuQdUtmkMaEA@mail.gmail.com Andres suspects that this bug may have wider ranging consequences, but I couldn't find anything.
-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 b21fd7a9cdb..94180c8733c 100644
--- a/src/backend/access/heap/heapam.c
+++ b/src/backend/access/heap/heapam.c
@@ -6757,7 +6757,7 @@ heap_prepare_freeze_tuple(HeapTupleHeader tuple,
* independent of committedness, since a committed lock holder has
* released the lock).
*/
- if (!(tuple->t_infomask & HEAP_XMAX_LOCK_ONLY) &&
+ if (!HEAP_XMAX_IS_LOCKED_ONLY(tuple->t_infomask) &&
TransactionIdDidCommit(xid))
ereport(ERROR,
(errcode(ERRCODE_DATA_CORRUPTED),