diff --git a/src/backend/utils/adt/selfuncs.c b/src/backend/utils/adt/selfuncs.c
index edfd8435aaa5d1aef2331c7a01aba5dc9d5b4c79..5c30577cdfec477558e6e1bdaac8914c50a4e15e 100644
--- a/src/backend/utils/adt/selfuncs.c
+++ b/src/backend/utils/adt/selfuncs.c
@@ -4505,6 +4505,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