From: Robert Haas Date: Thu, 14 Jun 2012 03:26:15 +0000 (-0400) Subject: Fix page-at-a-time mode to skip the metapage. X-Git-Url: http://git.postgresql.org/gitweb/static/developers.postgresql.org?a=commitdiff_plain;h=707f8cf1ee5928104e7ee68edf1384d34615239c;p=users%2Frhaas%2Fpostgres.git Fix page-at-a-time mode to skip the metapage. --- diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c index 31807d8241..5ff70f2af2 100644 --- a/src/backend/access/heap/heapam.c +++ b/src/backend/access/heap/heapam.c @@ -216,6 +216,7 @@ heapgetpage(HeapScanDesc scan, BlockNumber page) ItemId lpp; bool all_visible; + Assert(page >= scan->rs_lowpage); Assert(page < scan->rs_nblocks); /* release previous scan buffer, if any */ @@ -626,7 +627,7 @@ heapgettup_pagemode(HeapScanDesc scan, /* * return null immediately if relation is empty */ - if (scan->rs_nblocks == 0) + if (scan->rs_nblocks == scan->rs_lowpage) { Assert(!BufferIsValid(scan->rs_cbuf)); tuple->t_data = NULL; @@ -657,7 +658,7 @@ heapgettup_pagemode(HeapScanDesc scan, /* * return null immediately if relation is empty */ - if (scan->rs_nblocks == 0) + if (scan->rs_nblocks == scan->rs_lowpage) { Assert(!BufferIsValid(scan->rs_cbuf)); tuple->t_data = NULL; @@ -672,7 +673,7 @@ heapgettup_pagemode(HeapScanDesc scan, */ scan->rs_syncscan = false; /* start from last page of the scan */ - if (scan->rs_startblock > 0) + if (scan->rs_startblock > scan->rs_lowpage) page = scan->rs_startblock - 1; else page = scan->rs_nblocks - 1; @@ -786,7 +787,7 @@ heapgettup_pagemode(HeapScanDesc scan, if (backward) { finished = (page == scan->rs_startblock); - if (page == 0) + if (page == scan->rs_lowpage) page = scan->rs_nblocks; page--; } @@ -794,7 +795,7 @@ heapgettup_pagemode(HeapScanDesc scan, { page++; if (page >= scan->rs_nblocks) - page = 0; + page = scan->rs_lowpage; finished = (page == scan->rs_startblock); /*