diff --git a/src/backend/rewrite/rewriteHandler.c b/src/backend/rewrite/rewriteHandler.c
index ec22f1e6dd0e821d46351c27ac411c3fa9dd40e2..7e76498f86a3f29d48c380707d80f4ae893971b0 100644
--- a/src/backend/rewrite/rewriteHandler.c
+++ b/src/backend/rewrite/rewriteHandler.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteHandler.c,v 1.69 2000/03/16 03:23:18 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteHandler.c,v 1.70 2000/04/04 02:30:52 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -20,6 +20,7 @@
 #include "nodes/makefuncs.h"
 #include "optimizer/clauses.h"
 #include "optimizer/prep.h"
+#include "optimizer/var.h"
 #include "parser/analyze.h"
 #include "parser/parse_expr.h"
 #include "parser/parse_relation.h"
@@ -437,8 +438,8 @@ modifyAggrefDropQual(Node *node, Node *targetNode)
 static SubLink *
 modifyAggrefMakeSublink(Aggref *aggref, Query *parsetree)
 {
-	/* target and rte point to old structures: */
-	Var		   *target;
+	List	   *aggVarNos;
+	/* rte points to old structure: */
 	RangeTblEntry *rte;
 	/* these point to newly-created structures: */
 	Query	   *subquery;
@@ -446,10 +447,10 @@ modifyAggrefMakeSublink(Aggref *aggref, Query *parsetree)
 	TargetEntry *tle;
 	Resdom	   *resdom;
 
-	target = (Var *) (aggref->target);
-	if (! IsA(target, Var))
-		elog(ERROR, "rewrite: aggregates of views only allowed on simple variables for now");
-	rte = rt_fetch(target->varno, parsetree->rtable);
+	aggVarNos = pull_varnos(aggref->target);
+	if (length(aggVarNos) != 1)
+		elog(ERROR, "rewrite: aggregates of views only allowed on single tables for now");
+	rte = rt_fetch(lfirsti(aggVarNos), parsetree->rtable);
 
 	resdom = makeNode(Resdom);
 	resdom->resno = 1;
@@ -503,11 +504,13 @@ modifyAggrefMakeSublink(Aggref *aggref, Query *parsetree)
 	/* Increment all varlevelsup fields in the new subquery */
 	IncrementVarSublevelsUp((Node *) subquery, 1, 0);
 
-	/* Replace references to the target table with correct local varno.
-	 * Note +1 here to account for effects of previous line!
+	/* Replace references to the target table with correct local varno, 1.
+	 * Note that because of previous line, these references have
+	 * varlevelsup = 1, which must be changed to 0.
 	 */
-	modifyAggrefChangeVarnodes((Node *) subquery, target->varno,
-							   1, target->varlevelsup+1, 0);
+	modifyAggrefChangeVarnodes((Node *) subquery,
+							   lfirsti(aggVarNos), 1,
+							   1, 0);
 
 	return sublink;
 }