diff --git a/src/backend/utils/adt/multixactfuncs.c b/src/backend/utils/adt/multixactfuncs.c
index 9fe2ebafa7..abd7ec1dc9 100644
--- a/src/backend/utils/adt/multixactfuncs.c
+++ b/src/backend/utils/adt/multixactfuncs.c
@@ -102,33 +102,33 @@ pg_get_multixact_stats(PG_FUNCTION_ARGS)
 	TupleDesc	tupdesc;
 	Datum		values[4];
 	bool		nulls[4];
-	uint64		members;
-	MultiXactId oldestMultiXactId;
-	uint32		multixacts;
-	MultiXactOffset oldestOffset;
-	MultiXactOffset nextOffset;
-	uint64		membersBytes;
 
 	if (get_call_result_type(fcinfo, NULL, &tupdesc) != TYPEFUNC_COMPOSITE)
 		ereport(ERROR,
 				(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
 				 errmsg("return type must be a row type")));
 
-	GetMultiXactInfo(&multixacts, &nextOffset, &oldestMultiXactId, &oldestOffset);
-	members = nextOffset - oldestOffset;
-
-	membersBytes = MultiXactOffsetStorageSize(nextOffset, oldestOffset);
-
 	if (!has_privs_of_role(GetUserId(), ROLE_PG_READ_ALL_STATS))
 	{
 		/*
 		 * Only superusers and roles with privileges of pg_read_all_stats can
 		 * see details.
 		 */
-		memset(nulls, true, sizeof(bool) * tupdesc->natts);
+		memset(nulls, true, sizeof(nulls));
 	}
 	else
 	{
+		uint64		members;
+		MultiXactId oldestMultiXactId;
+		uint32		multixacts;
+		MultiXactOffset oldestOffset;
+		MultiXactOffset nextOffset;
+		uint64		membersBytes;
+
+		GetMultiXactInfo(&multixacts, &nextOffset, &oldestMultiXactId, &oldestOffset);
+		members = nextOffset - oldestOffset;
+		membersBytes = MultiXactOffsetStorageSize(nextOffset, oldestOffset);
+
 		values[0] = UInt32GetDatum(multixacts);
 		values[1] = Int64GetDatum(members);
 		values[2] = Int64GetDatum(membersBytes);
