diff --git a/contrib/pageinspect/heapfuncs.c b/contrib/pageinspect/heapfuncs.c
index 49a2f91120..20bca0dc53 100644
--- a/contrib/pageinspect/heapfuncs.c
+++ b/contrib/pageinspect/heapfuncs.c
@@ -170,8 +170,8 @@ heap_page_items(PG_FUNCTION_ARGS)
 			values[5] = UInt32GetDatum(HeapTupleHeaderGetXmax(tuphdr));
 			values[6] = UInt32GetDatum(HeapTupleHeaderGetRawCommandId(tuphdr)); /* shared with xvac */
 			values[7] = PointerGetDatum(&tuphdr->t_ctid);
-			values[8] = UInt16GetDatum(tuphdr->t_infomask2);
-			values[9] = UInt16GetDatum(tuphdr->t_infomask);
+			values[8] = UInt32GetDatum(tuphdr->t_infomask2);
+			values[9] = UInt32GetDatum(tuphdr->t_infomask);
 			values[10] = UInt8GetDatum(tuphdr->t_hoff);
 
 			/*
diff --git a/contrib/pageinspect/pageinspect--unpackaged--1.0.sql b/contrib/pageinspect/pageinspect--unpackaged--1.0.sql
index a9d1b52a42..7d4feaf034 100644
--- a/contrib/pageinspect/pageinspect--unpackaged--1.0.sql
+++ b/contrib/pageinspect/pageinspect--unpackaged--1.0.sql
@@ -1,9 +1,27 @@
 /* contrib/pageinspect/pageinspect--unpackaged--1.0.sql */
 
+DROP FUNCTION heap_page_items(bytea);
+CREATE FUNCTION heap_page_items(IN page bytea,
+	OUT lp smallint,
+	OUT lp_off smallint,
+	OUT lp_flags smallint,
+	OUT lp_len smallint,
+	OUT t_xmin xid,
+	OUT t_xmax xid,
+	OUT t_field3 int4,
+	OUT t_ctid tid,
+	OUT t_infomask2 integer,
+	OUT t_infomask integer,
+	OUT t_hoff smallint,
+	OUT t_bits text,
+	OUT t_oid oid)
+RETURNS SETOF record
+AS 'MODULE_PATHNAME', 'heap_page_items'
+LANGUAGE C STRICT;
+
 ALTER EXTENSION pageinspect ADD function get_raw_page(text,integer);
 ALTER EXTENSION pageinspect ADD function get_raw_page(text,text,integer);
 ALTER EXTENSION pageinspect ADD function page_header(bytea);
-ALTER EXTENSION pageinspect ADD function heap_page_items(bytea);
 ALTER EXTENSION pageinspect ADD function bt_metap(text);
 ALTER EXTENSION pageinspect ADD function bt_page_stats(text,integer);
 ALTER EXTENSION pageinspect ADD function bt_page_items(text,integer);