diff --git a/src/backend/catalog/namespace.c b/src/backend/catalog/namespace.c
index 5cdd51cb5d..2221455ff7 100644
--- a/src/backend/catalog/namespace.c
+++ b/src/backend/catalog/namespace.c
@@ -4291,7 +4291,8 @@ NamespaceCallback(Datum arg, int cacheid, uint32 hashvalue)
 List *
 fetch_search_path(bool includeImplicit)
 {
-	List	   *result;
+	ListCell   *l;
+	int			skipSearchPaths = 0;
 
 	recomputeNamespacePath();
 
@@ -4308,14 +4309,20 @@ fetch_search_path(bool includeImplicit)
 		recomputeNamespacePath();
 	}
 
-	result = list_copy(activeSearchPath);
 	if (!includeImplicit)
 	{
-		while (result && linitial_oid(result) != activeCreationNamespace)
-			result = list_delete_first(result);
+		foreach (l, activeSearchPath)
+		{
+			Oid namespaceId = lfirst_oid(l);
+
+			if (namespaceId != activeCreationNamespace)
+				skipSearchPaths++;
+			else
+				break;
+		}
 	}
 
-	return result;
+	return list_copy_tail(activeSearchPath, skipSearchPaths);
 }
 
 /*
