postgres.git / summary / log / commit / refs

commit    a1708ab652eaef3e9405d5119721a9a4ecb6fcbd
Author:   Peter Geoghegan <pg@bowt.ie>
Date:     Mon Sep 20 21:26:22 2021 +0000
First released in: 15.0, 12.9, 13.5, 14.0

    Remove overzealous index deletion assertion.
    
    A broken HOT chain is not an unexpected condition, even when the offset
    number points past the end of the page's line pointer array.
    heap_prune_chain() does not (and never has) treated this condition as
    unexpected, so derivative code in heap_index_delete_tuples() shouldn't
    do so either.
    
    Oversight in commit 4228817449.
    
    The assertion can probably only fail on Postgres 14 and master.  Earlier
    releases don't have commit 3c3b8a4b, which taught VACUUM to truncate the
    line pointer array of heap pages.  Backpatch all the same, just to be
    consistent.
    
    Author: Peter Geoghegan <pg@bowt.ie>
    Reported-By: Alexander Lakhin <exclusion@gmail.com>
    Discussion: https://postgr.es/m/17197-9438f31f46705182@postgresql.org
    Backpatch: 12-, just like commit 4228817449.


src/backend/access/heap/heapam.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c index b4bc0ce0c50..94edb1decae 100644 --- a/src/backend/access/heap/heapam.c +++ b/src/backend/access/heap/heapam.c @@ -7093,10 +7093,7 @@ heap_compute_xid_horizon_for_tuples(Relation rel, /* Some sanity checks */ if (offnum < FirstOffsetNumber || offnum > maxoff) - { - Assert(false); break; - } lp = PageGetItemId(page, offnum); if (ItemIdIsRedirected(lp)) [parent: dede14399781]