diff --git a/contrib/pageinspect/brinfuncs.c b/contrib/pageinspect/brinfuncs.c
index 22621d584fa..6086b02445b 100644
--- a/contrib/pageinspect/brinfuncs.c
+++ b/contrib/pageinspect/brinfuncs.c
@@ -240,25 +240,29 @@ brin_page_items(PG_FUNCTION_ARGS)
 		else
 		{
 			int			att = attno - 1;
+			int			idx = 0;
 
-			values[0] = UInt16GetDatum(offset);
+			values[idx++] = UInt16GetDatum(offset);
 			switch (TupleDescAttr(rsinfo->setDesc, 1)->atttypid)
 			{
 				case INT8OID:
-					values[1] = Int64GetDatum((int64) dtup->bt_blkno);
+					values[idx++] = Int64GetDatum((int64) dtup->bt_blkno);
 					break;
 				case INT4OID:
 					/* support for old extension version */
-					values[1] = UInt32GetDatum(dtup->bt_blkno);
+					values[idx++] = UInt32GetDatum(dtup->bt_blkno);
 					break;
 				default:
 					elog(ERROR, "incorrect output types");
 			}
-			values[2] = UInt16GetDatum(attno);
-			values[3] = BoolGetDatum(dtup->bt_columns[att].bv_allnulls);
-			values[4] = BoolGetDatum(dtup->bt_columns[att].bv_hasnulls);
-			values[5] = BoolGetDatum(dtup->bt_placeholder);
-			values[6] = BoolGetDatum(dtup->bt_empty_range);
+			values[idx++] = UInt16GetDatum(attno);
+			values[idx++] = BoolGetDatum(dtup->bt_columns[att].bv_allnulls);
+			values[idx++] = BoolGetDatum(dtup->bt_columns[att].bv_hasnulls);
+			values[idx++] = BoolGetDatum(dtup->bt_placeholder);
+
+			if (rsinfo->setDesc->natts >= 8)
+				values[idx++] = BoolGetDatum(dtup->bt_empty_range);
+
 			if (!dtup->bt_columns[att].bv_allnulls)
 			{
 				BrinValues *bvalues = &dtup->bt_columns[att];
@@ -284,13 +288,15 @@ brin_page_items(PG_FUNCTION_ARGS)
 				}
 				appendStringInfoChar(&s, '}');
 
-				values[7] = CStringGetTextDatum(s.data);
+				values[idx++] = CStringGetTextDatum(s.data);
 				pfree(s.data);
 			}
 			else
 			{
-				nulls[7] = true;
+				nulls[idx++] = true;
 			}
+
+			Assert(idx == rsinfo->setDesc->natts);
 		}
 
 		tuplestore_putvalues(rsinfo->setResult, rsinfo->setDesc, values, nulls);
