diff --git a/src/backend/access/heap/heapam_handler.c b/src/backend/access/heap/heapam_handler.c
index d0e5922eed..fa18f69eb4 100644
--- a/src/backend/access/heap/heapam_handler.c
+++ b/src/backend/access/heap/heapam_handler.c
@@ -2575,7 +2575,7 @@ SampleHeapTupleVisible(TableScanDesc scan, Buffer buffer,
 {
 	HeapScanDesc hscan = (HeapScanDesc) scan;
 
-	if (scan->rs_flags & SO_ALLOW_PAGEMODE)
+	if (scan->rs_flags & SO_ALLOW_PAGEMODE && hscan->rs_ntuples != 0)
 	{
 		/*
 		 * In pageatatime mode, heap_prepare_pagescan() already did visibility
@@ -2586,12 +2586,12 @@ SampleHeapTupleVisible(TableScanDesc scan, Buffer buffer,
 		 * in increasing order, but it's not clear that there would be enough
 		 * gain to justify the restriction.
 		 */
-		int			start = 0,
+		uint32			start = 0,
 					end = hscan->rs_ntuples - 1;
 
 		while (start <= end)
 		{
-			int			mid = (start + end) / 2;
+			uint32			mid = (start + end) / 2;
 			OffsetNumber curoffset = hscan->rs_vistuples[mid];
 
 			if (tupoffset == curoffset)
