From 8542ff2623d7f2142ecb8c21c572b47d67500231 Mon Sep 17 00:00:00 2001
From: Peter Geoghegan <peter.geoghegan86@gmail.com>
Date: Sat, 30 May 2015 15:25:55 -0700
Subject: [PATCH 2/7] Add additional, paranoid check

---
 src/backend/optimizer/prep/preptlist.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/backend/optimizer/prep/preptlist.c b/src/backend/optimizer/prep/preptlist.c
index 6b7adb7..8c418d2 100644
--- a/src/backend/optimizer/prep/preptlist.c
+++ b/src/backend/optimizer/prep/preptlist.c
@@ -432,7 +432,7 @@ pull_var_targetlist_clause(OnConflictExpr *onconfl, List* clause,
 		if (tlist_member((Node *) var, onconfl->exclRelTlist))
 			continue;		/* already got it */
 
-		if (var->varattno != InvalidAttrNumber)
+		if (!IsA(var, Var) || var->varattno != InvalidAttrNumber)
 			elog(ERROR, "cannot pull up non-wholerow Var in excluded targetlist");
 
 		tle = makeTargetEntry((Expr *) var, var->varattno, NULL, true);
-- 
1.9.1

