From 5e6716cde5749aea506dd3f30b099b6e9b4c5af8 Mon Sep 17 00:00:00 2001 From: Peter Geoghegan Date: Mon, 20 Sep 2021 14:26:25 -0700 Subject: [PATCH] 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 Reported-By: Alexander Lakhin 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 2433998f39b..972fdbcb92f 100644 --- a/src/backend/access/heap/heapam.c +++ b/src/backend/access/heap/heapam.c @@ -7485,10 +7485,7 @@ heap_index_delete_tuples(Relation rel, TM_IndexDeleteOp *delstate) /* Some sanity checks */ if (offnum < FirstOffsetNumber || offnum > maxoff) - { - Assert(false); break; - } lp = PageGetItemId(page, offnum); if (ItemIdIsRedirected(lp))