postgres.git / summary / log / commit / refs

commit    491bbc36ea8f206dd0e03687b4d6a773be43a5f9
Author:   Alvaro Herrera <alvherre@alvh.no-ip.org>
Date:     Thu Mar 01 21:07:46 2018 +0000
First released in: 11.0, 9.3.23, 9.4.18, 9.5.13, 9.6.9, 10.4

    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.


src/backend/access/heap/heapam.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c index c7e99ba6682..c70bcc7213b 100644 --- a/src/backend/access/heap/heapam.c +++ b/src/backend/access/heap/heapam.c @@ -6443,7 +6443,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), [parent: be55bfc9386d]