Thread
-
Re: Fix incorrect assertion in heapgettup_pagemode()
Chao Li <li.evan.chao@gmail.com> — 2025-12-25T13:34:06Z
> On Dec 25, 2025, at 19:13, cca5507 <cca5507@qq.com> wrote: > > Hi, > > diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c > index 469397e7344..1229e22e78a 100644 > --- a/src/backend/access/heap/heapam.c > +++ b/src/backend/access/heap/heapam.c > @@ -1077,7 +1077,7 @@ continue_page: > ItemId lpp; > OffsetNumber lineoff; > > - Assert(lineindex <= scan->rs_ntuples); > + Assert(lineindex < scan->rs_ntuples); > lineoff = scan->rs_vistuples[lineindex]; > lpp = PageGetItemId(page, lineoff); > Assert(ItemIdIsNormal(lpp)); > > The lineindex is 0-based, so it should be '<' rather than '<=', thoughts? > > -- > Regards, > ChangAo Chen > <v1-0001-Fix-incorrect-assertion-in-heapgettup_pagemode.patch> Good catch. The function comment clearly mentions that lineindex is 0 based. ``` * tuples listed in rs_vistuples[] rather than all tuples on the page. Notice * that lineindex is 0-based, where the corresponding loop variable lineoff in * heapgettup is 1-based. * ---------------- */ static void heapgettup_pagemode(HeapScanDesc scan, ScanDirection dir, int nkeys, ScanKey key) { HeapTuple tuple = &(scan->rs_ctup); Page page; uint32 lineindex; uint32 linesleft; ``` So, the fix looks correct. Best regards, -- Chao Li (Evan) HighGo Software Co., Ltd. https://www.highgo.com/