diff --git a/src/backend/optimizer/plan/createplan.c b/src/backend/optimizer/plan/createplan.c
index 9a32ae7a1b948125cdbd9a5883e286dad244b4ec..8756fcc020563e5dfeca5a94cfefb35fbe929ada 100644
--- a/src/backend/optimizer/plan/createplan.c
+++ b/src/backend/optimizer/plan/createplan.c
@@ -10,7 +10,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/optimizer/plan/createplan.c,v 1.108 2001/08/21 16:36:03 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/optimizer/plan/createplan.c,v 1.109 2001/09/21 04:06:04 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1827,7 +1827,16 @@ make_result(List *tlist,
 #ifdef NOT_USED
 	tlist = generate_fjoin(tlist);
 #endif
-	copy_plan_costsize(plan, subplan);
+	if (subplan)
+		copy_plan_costsize(plan, subplan);
+	else
+	{
+		plan->startup_cost = 0;
+		plan->total_cost = cpu_tuple_cost;
+		plan->plan_rows = 1;	/* wrong if we have a set-valued function? */
+		plan->plan_width = 0;	/* XXX try to be smarter? */
+	}
+
 	plan->state = (EState *) NULL;
 	plan->targetlist = tlist;
 	plan->qual = NIL;