diff --git a/src/backend/optimizer/plan/subselect.c b/src/backend/optimizer/plan/subselect.c
index c36e7fe7b8104d7df99259bd61eb45af3c220489..4ebabc1e8753f47746d1dafb300d7e6fe8883ac7 100644
--- a/src/backend/optimizer/plan/subselect.c
+++ b/src/backend/optimizer/plan/subselect.c
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/optimizer/plan/subselect.c,v 1.45 2000/11/16 22:30:25 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/optimizer/plan/subselect.c,v 1.46 2000/11/21 00:17:59 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -613,8 +613,15 @@ SS_finalize_plan(Plan *plan)
 			break;
 
 		case T_SubqueryScan:
+			/*
+			 * In a SubqueryScan, SS_finalize_plan has already been run
+			 * on the subplan by the inner invocation of subquery_planner,
+			 * so there's no need to do it again.  Instead, just pull out
+			 * the subplan's extParams list, which represents the params
+			 * it needs from my level and higher levels.
+			 */
 			results.paramids = set_unioni(results.paramids,
-						SS_finalize_plan(((SubqueryScan *) plan)->subplan));
+								((SubqueryScan *) plan)->subplan->extParam);
 			break;
 
 		case T_IndexScan: