diff --git a/src/backend/utils/adt/selfuncs.c b/src/backend/utils/adt/selfuncs.c
index a5a9fa69ab641833ce7b58e70ce7c41a4e66d87d..84c27a95a9150a701ed0d22a41e989fdcc79043d 100644
--- a/src/backend/utils/adt/selfuncs.c
+++ b/src/backend/utils/adt/selfuncs.c
@@ -4502,6 +4502,12 @@ examine_simple_variable(PlannerInfo *root, Var *var,
 		RelOptInfo *rel;
 		TargetEntry *ste;
 
+		/*
+		 * Punt if it's a whole-row var rather than a plain column reference.
+		 */
+		if (var->varattno == InvalidAttrNumber)
+			return;
+
 		/*
 		 * Punt if subquery uses set operations or GROUP BY, as these will
 		 * mash underlying columns' stats beyond recognition.  (Set ops are