diff --git a/src/backend/optimizer/util/orclauses.c b/src/backend/optimizer/util/orclauses.c
index 9e954d0..387a308 100644
--- a/src/backend/optimizer/util/orclauses.c
+++ b/src/backend/optimizer/util/orclauses.c
@@ -190,21 +190,8 @@ extract_or_clause(RestrictInfo *or_rinfo, RelOptInfo *rel)
 				RestrictInfo *rinfo = (RestrictInfo *) lfirst(lc2);
 
 				Assert(IsA(rinfo, RestrictInfo));
-				if (restriction_is_or_clause(rinfo))
-				{
-					/*
-					 * Recurse to deal with nested OR.  Note we *must* recurse
-					 * here, this isn't just overly-tense optimization: we
-					 * have to descend far enough to find and strip all
-					 * RestrictInfos in the expression.
-					 */
-					Expr	   *suborclause;
-
-					suborclause = extract_or_clause(rinfo, rel);
-					if (suborclause)
-						subclauses = lappend(subclauses, suborclause);
-				}
-				else if (is_safe_restriction_clause_for(rinfo, rel))
+				if (!restriction_is_or_clause(rinfo) &&
+					is_safe_restriction_clause_for(rinfo, rel))
 					subclauses = lappend(subclauses, rinfo->clause);
 			}
 		}
