diff --git a/src/backend/optimizer/plan/subselect.c b/src/backend/optimizer/plan/subselect.c
index eea5b332cf..a5df56d920 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.29 2000/03/02 04:08:16 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/optimizer/plan/subselect.c,v 1.30 2000/03/11 23:53:41 tgl Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -302,8 +302,8 @@ make_subplan(SubLink *slink)
 		 * the top of an uncorrelated/undirect correlated subplan, which lets
 		 * us do the work of evaluating the subplan only once.  We do this
 		 * if the subplan's top plan node is anything more complicated than
-		 * a sequential or index scan, and we do it even for those plan types
-		 * if the qual appears selective enough to eliminate many tuples.
+		 * a plain sequential scan, and we do it even for seqscan if the
+		 * qual appears selective enough to eliminate many tuples.
 		 */
 		if (node->parParam == NIL)
 		{
@@ -312,28 +312,19 @@ make_subplan(SubLink *slink)
 			switch (nodeTag(plan))
 			{
 				case T_SeqScan:
-				{
-					Selectivity qualsel;
+					if (plan->initPlan || plan->subPlan)
+						use_material = true;
+					else
+					{
+						Selectivity qualsel;
 
-					qualsel = clauselist_selectivity(subquery, plan->qual, 0);
-					/* Is 10% selectivity a good threshold?? */
-					use_material = qualsel < 0.10;
+						qualsel = clauselist_selectivity(subquery,
+														 plan->qual,
+														 0);
+						/* Is 10% selectivity a good threshold?? */
+						use_material = qualsel < 0.10;
+					}
 					break;
-				}
-				case T_IndexScan:
-				{
-					List	   *indxqual = ((IndexScan *) plan)->indxqualorig;
-					Selectivity qualsel;
-
-					qualsel = clauselist_selectivity(subquery, plan->qual, 0);
-					qualsel *= clauselist_selectivity(subquery, indxqual, 0);
-					/* Note: if index is lossy, we just double-counted the
-					 * index selectivity.  Worth fixing?
-					 */
-					/* Is 10% selectivity a good threshold?? */
-					use_material = qualsel < 0.10;
-					break;
-				}
 				case T_Material:
 				case T_Sort:
 					/* Don't add another Material node if there's one already,